Merge remote-tracking branch 'origin/develop' into matthew/e2e_backups

pull/21833/head
David Baker 2018-09-11 11:37:22 +01:00
commit f62e92a07b
65 changed files with 2335 additions and 540 deletions

View File

@ -1,3 +1,108 @@
Changes in [0.13.4](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.4) (2018-09-10)
=====================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.4-rc.1...v0.13.4)
* No changes since rc.1
Changes in [0.13.4-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.4-rc.1) (2018-09-07)
===============================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.3...v0.13.4-rc.1)
* Error on splash screen if sync is failing
[\#2155](https://github.com/matrix-org/matrix-react-sdk/pull/2155)
* Do full registration if HS doesn't support ILAG
[\#2150](https://github.com/matrix-org/matrix-react-sdk/pull/2150)
* Re-apply "Don't rely on room members to query power levels"
[\#2152](https://github.com/matrix-org/matrix-react-sdk/pull/2152)
* s/DidMount/WillMount/ in MessageComposerInput
[\#2151](https://github.com/matrix-org/matrix-react-sdk/pull/2151)
* Revert "Don't rely on room members to query power levels"
[\#2149](https://github.com/matrix-org/matrix-react-sdk/pull/2149)
* Don't rely on room members to query power levels
[\#2145](https://github.com/matrix-org/matrix-react-sdk/pull/2145)
* Correctly mark email as optional
[\#2148](https://github.com/matrix-org/matrix-react-sdk/pull/2148)
* guests trying to join communities should fire the ILAG flow.
[\#2059](https://github.com/matrix-org/matrix-react-sdk/pull/2059)
* Fix DM avatars, part 3
[\#2146](https://github.com/matrix-org/matrix-react-sdk/pull/2146)
* Fix: show spinner again while recovering from connection error
[\#2143](https://github.com/matrix-org/matrix-react-sdk/pull/2143)
* Fix: infinite spinner on trying to create welcomeUserId room without consent
[\#2147](https://github.com/matrix-org/matrix-react-sdk/pull/2147)
* Show spinner in member list while loading members
[\#2139](https://github.com/matrix-org/matrix-react-sdk/pull/2139)
* Slash command to discard megolm session
[\#2140](https://github.com/matrix-org/matrix-react-sdk/pull/2140)
Changes in [0.13.3](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.3) (2018-09-03)
=====================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.3-rc.2...v0.13.3)
* No changes since rc.2
Changes in [0.13.3-rc.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.3-rc.2) (2018-08-31)
===============================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.3-rc.1...v0.13.3-rc.2)
* Update js-sdk to fix exception
Changes in [0.13.3-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.3-rc.1) (2018-08-30)
===============================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.2...v0.13.3-rc.1)
* Fix DM avatar
[\#2141](https://github.com/matrix-org/matrix-react-sdk/pull/2141)
* Update from Weblate.
[\#2142](https://github.com/matrix-org/matrix-react-sdk/pull/2142)
* Support m.room.tombstone events
[\#2124](https://github.com/matrix-org/matrix-react-sdk/pull/2124)
* Support room creation events
[\#2123](https://github.com/matrix-org/matrix-react-sdk/pull/2123)
* Support for room upgrades
[\#2122](https://github.com/matrix-org/matrix-react-sdk/pull/2122)
* Fix: dont show 1:1 avatar for rooms +2 members but only <=2 members loaded
[\#2137](https://github.com/matrix-org/matrix-react-sdk/pull/2137)
* Render terms & conditions in settings
[\#2136](https://github.com/matrix-org/matrix-react-sdk/pull/2136)
* Don't crash if the value of a room tag is null
[\#2133](https://github.com/matrix-org/matrix-react-sdk/pull/2133)
* Add stub for getVisibleRooms()
[\#2134](https://github.com/matrix-org/matrix-react-sdk/pull/2134)
* Fix LL crash trying to render own avatar in composer when member isn't
available yet
[\#2132](https://github.com/matrix-org/matrix-react-sdk/pull/2132)
* Support M_INCOMPATIBLE_ROOM_VERSION
[\#2125](https://github.com/matrix-org/matrix-react-sdk/pull/2125)
* Hide replaced rooms
[\#2127](https://github.com/matrix-org/matrix-react-sdk/pull/2127)
* Fix CPU spin on joining large room
[\#2128](https://github.com/matrix-org/matrix-react-sdk/pull/2128)
* Change format of server usage limit message
[\#2131](https://github.com/matrix-org/matrix-react-sdk/pull/2131)
* Re-apply "Fix showing peek preview while LL members are loading""
[\#2130](https://github.com/matrix-org/matrix-react-sdk/pull/2130)
* Revert "Fix showing peek preview while LL members are loading"
[\#2129](https://github.com/matrix-org/matrix-react-sdk/pull/2129)
* Fix showing peek preview while LL members are loading
[\#2126](https://github.com/matrix-org/matrix-react-sdk/pull/2126)
* Destroy non-persistent widgets when switching room
[\#2098](https://github.com/matrix-org/matrix-react-sdk/pull/2098)
* Lazy loading of room members
[\#2118](https://github.com/matrix-org/matrix-react-sdk/pull/2118)
* Lazy loading: feature toggle
[\#2115](https://github.com/matrix-org/matrix-react-sdk/pull/2115)
* Lazy loading: cleanup
[\#2116](https://github.com/matrix-org/matrix-react-sdk/pull/2116)
* Lazy loading: fix end-to-end encryption rooms
[\#2113](https://github.com/matrix-org/matrix-react-sdk/pull/2113)
* Lazy loading: Lazy load members while backpaginating
[\#2104](https://github.com/matrix-org/matrix-react-sdk/pull/2104)
* Lazy loading: don't assume we have our own member available
[\#2102](https://github.com/matrix-org/matrix-react-sdk/pull/2102)
* Lazy load room members - Part I
[\#2072](https://github.com/matrix-org/matrix-react-sdk/pull/2072)
Changes in [0.13.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.2) (2018-08-23) Changes in [0.13.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.2) (2018-08-23)
===================================================================================================== =====================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.1...v0.13.2) [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.1...v0.13.2)

View File

@ -11,16 +11,8 @@ a 'skin'. A skin provides:
* The containing application * The containing application
* Zero or more 'modules' containing non-UI functionality * Zero or more 'modules' containing non-UI functionality
**WARNING: As of July 2016, the skinning abstraction is broken due to rapid As of Aug 2018, the only skin that exists is `vector-im/riot-web`; it and
development of `matrix-react-sdk` to meet the needs of Riot (codenamed Vector), the first app `matrix-org/matrix-react-sdk` should effectively
to be built on top of the SDK** (https://github.com/vector-im/riot-web).
Right now `matrix-react-sdk` depends on some functionality from `riot-web`
(e.g. CSS), and `matrix-react-sdk` contains some Riot specific behaviour
(grep for 'vector'). This layering will be fixed asap once Riot development
has stabilised, but for now we do not advise trying to create new skins for
matrix-react-sdk until the layers are clearly separated again.
In the interim, `vector-im/riot-web` and `matrix-org/matrix-react-sdk` should
be considered as a single project (for instance, matrix-react-sdk bugs be considered as a single project (for instance, matrix-react-sdk bugs
are currently filed against vector-im/riot-web rather than this project). are currently filed against vector-im/riot-web rather than this project).
@ -48,15 +40,14 @@ https://github.com/matrix-org/synapse/tree/master/CONTRIBUTING.rst
Please follow the Matrix JS/React code style as per: Please follow the Matrix JS/React code style as per:
https://github.com/matrix-org/matrix-react-sdk/blob/master/code_style.md https://github.com/matrix-org/matrix-react-sdk/blob/master/code_style.md
Whilst the layering separation between matrix-react-sdk and Riot is broken Code should be committed as follows:
(as of July 2016), code should be committed as follows:
* All new components: https://github.com/matrix-org/matrix-react-sdk/tree/master/src/components * All new components: https://github.com/matrix-org/matrix-react-sdk/tree/master/src/components
* Riot-specific components: https://github.com/vector-im/riot-web/tree/master/src/components * Riot-specific components: https://github.com/vector-im/riot-web/tree/master/src/components
* In practice, `matrix-react-sdk` is still evolving so fast that the maintenance * In practice, `matrix-react-sdk` is still evolving so fast that the maintenance
burden of customising and overriding these components for Riot can seriously burden of customising and overriding these components for Riot can seriously
impede development. So right now, there should be very few (if any) customisations for Riot. impede development. So right now, there should be very few (if any) customisations for Riot.
* CSS for Matrix SDK components: https://github.com/vector-im/riot-web/tree/master/src/skins/vector/css/matrix-react-sdk * CSS: https://github.com/vector-im/riot-web/tree/master/src/skins/vector/css/matrix-react-sdk
* CSS for Riot-specific overrides and components: https://github.com/vector-im/riot-web/tree/master/src/skins/vector/css/riot-web * Theme specific CSS & resources: https://github.com/matrix-org/matrix-react-sdk/tree/master/res/themes
React components in matrix-react-sdk are come in two different flavours: React components in matrix-react-sdk are come in two different flavours:
'structures' and 'views'. Structures are stateful components which handle the 'structures' and 'views'. Structures are stateful components which handle the
@ -84,6 +75,7 @@ practices that anyone working with the SDK needs to be be aware of and uphold:
* Per-view CSS is optional - it could choose to inherit all its styling from * Per-view CSS is optional - it could choose to inherit all its styling from
the context of the rest of the app, although this is unusual for any but the context of the rest of the app, although this is unusual for any but
* Theme specific CSS & resources: https://github.com/matrix-org/matrix-react-sdk/tree/master/res/themes
structural components (lacking presentation logic) and the simplest view structural components (lacking presentation logic) and the simplest view
components. components.
@ -139,8 +131,7 @@ for now.
OUTDATED: To Create Your Own Skin OUTDATED: To Create Your Own Skin
================================= =================================
**This is ALL LIES currently, as skinning is currently broken - see the WARNING **This is ALL LIES currently, and needs to be updated**
section at the top of this readme.**
Skins are modules are exported from such a package in the `lib` directory. Skins are modules are exported from such a package in the `lib` directory.
`lib/skins` contains one directory per-skin, named after the skin, and the `lib/skins` contains one directory per-skin, named after the skin, and the

View File

@ -1,6 +1,6 @@
{ {
"name": "matrix-react-sdk", "name": "matrix-react-sdk",
"version": "0.13.2", "version": "0.13.4",
"description": "SDK for matrix.org using React", "description": "SDK for matrix.org using React",
"author": "matrix.org", "author": "matrix.org",
"repository": { "repository": {
@ -73,7 +73,7 @@
"linkifyjs": "^2.1.6", "linkifyjs": "^2.1.6",
"lodash": "^4.13.1", "lodash": "^4.13.1",
"lolex": "2.3.2", "lolex": "2.3.2",
"matrix-js-sdk": "0.10.8", "matrix-js-sdk": "0.11.0",
"optimist": "^0.6.1", "optimist": "^0.6.1",
"pako": "^1.0.5", "pako": "^1.0.5",
"prop-types": "^15.5.8", "prop-types": "^15.5.8",
@ -133,7 +133,7 @@
"matrix-mock-request": "^1.2.1", "matrix-mock-request": "^1.2.1",
"matrix-react-test-utils": "^0.1.1", "matrix-react-test-utils": "^0.1.1",
"mocha": "^5.0.5", "mocha": "^5.0.5",
"parallelshell": "^3.0.2", "parallelshell": "3.0.1",
"react-addons-test-utils": "^15.4.0", "react-addons-test-utils": "^15.4.0",
"require-json": "0.0.1", "require-json": "0.0.1",
"rimraf": "^2.4.3", "rimraf": "^2.4.3",

View File

@ -39,6 +39,7 @@
@import "./views/dialogs/_EncryptedEventDialog.scss"; @import "./views/dialogs/_EncryptedEventDialog.scss";
@import "./views/dialogs/_GroupAddressPicker.scss"; @import "./views/dialogs/_GroupAddressPicker.scss";
@import "./views/dialogs/_QuestionDialog.scss"; @import "./views/dialogs/_QuestionDialog.scss";
@import "./views/dialogs/_RoomUpgradeDialog.scss";
@import "./views/dialogs/_SetEmailDialog.scss"; @import "./views/dialogs/_SetEmailDialog.scss";
@import "./views/dialogs/_SetMxIdDialog.scss"; @import "./views/dialogs/_SetMxIdDialog.scss";
@import "./views/dialogs/_SetPasswordDialog.scss"; @import "./views/dialogs/_SetPasswordDialog.scss";
@ -67,6 +68,7 @@
@import "./views/groups/_GroupUserSettings.scss"; @import "./views/groups/_GroupUserSettings.scss";
@import "./views/login/_InteractiveAuthEntryComponents.scss"; @import "./views/login/_InteractiveAuthEntryComponents.scss";
@import "./views/login/_ServerConfig.scss"; @import "./views/login/_ServerConfig.scss";
@import "./views/messages/_CreateEvent.scss";
@import "./views/messages/_DateSeparator.scss"; @import "./views/messages/_DateSeparator.scss";
@import "./views/messages/_MEmoteBody.scss"; @import "./views/messages/_MEmoteBody.scss";
@import "./views/messages/_MFileBody.scss"; @import "./views/messages/_MFileBody.scss";
@ -99,6 +101,7 @@
@import "./views/rooms/_RoomSettings.scss"; @import "./views/rooms/_RoomSettings.scss";
@import "./views/rooms/_RoomTile.scss"; @import "./views/rooms/_RoomTile.scss";
@import "./views/rooms/_RoomTooltip.scss"; @import "./views/rooms/_RoomTooltip.scss";
@import "./views/rooms/_RoomUpgradeWarningBar.scss";
@import "./views/rooms/_SearchBar.scss"; @import "./views/rooms/_SearchBar.scss";
@import "./views/rooms/_SearchableEntityList.scss"; @import "./views/rooms/_SearchableEntityList.scss";
@import "./views/rooms/_Stickers.scss"; @import "./views/rooms/_Stickers.scss";

View File

@ -56,6 +56,18 @@ limitations under the License.
flex: 1; flex: 1;
} }
.mx_MatrixChat_syncError {
color: $accent-fg-color;
background-color: $warning-bg-color;
border-radius: 5px;
display: table;
padding: 30px;
position: absolute;
top: 100px;
left: 50%;
transform: translateX(-50%);
}
.mx_MatrixChat .mx_LeftPanel { .mx_MatrixChat .mx_LeftPanel {
order: 1; order: 1;

View File

@ -0,0 +1,19 @@
/*
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_RoomUpgradeDialog {
padding-right: 70px;
}

View File

@ -0,0 +1,37 @@
/*
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_CreateEvent {
background-color: $info-plinth-bg-color;
padding-left: 20px;
padding-right: 20px;
padding-top: 10px;
padding-bottom: 10px;
}
.mx_CreateEvent_image {
float: left;
padding-right: 20px;
width: 72px;
height: 34px;
}
.mx_CreateEvent_header {
font-weight: bold;
}
.mx_CreateEvent_link {
}

View File

@ -1,5 +1,6 @@
/* /*
Copyright 2015, 2016 OpenMarket Ltd Copyright 2015, 2016 OpenMarket Ltd
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -22,6 +23,29 @@ limitations under the License.
position: relative; position: relative;
} }
.mx_MessageComposer_replaced_wrapper {
margin-left: auto;
margin-right: auto;
}
.mx_MessageComposer_replaced_valign {
height: 60px;
display: table-cell;
vertical-align: middle;
}
.mx_MessageComposer_roomReplaced_icon {
float: left;
margin-right: 20px;
margin-top: 5px;
width: 31px;
height: 31px;
}
.mx_MessageComposer_roomReplaced_header {
font-weight: bold;
}
.mx_MessageComposer_autocomplete_wrapper { .mx_MessageComposer_autocomplete_wrapper {
position: relative; position: relative;
height: 0; height: 0;

View File

@ -20,6 +20,7 @@ limitations under the License.
margin-bottom: 20px; margin-bottom: 20px;
} }
.mx_RoomSettings_upgradeButton,
.mx_RoomSettings_leaveButton, .mx_RoomSettings_leaveButton,
.mx_RoomSettings_unbanButton { .mx_RoomSettings_unbanButton {
@mixin mx_DialogButton; @mixin mx_DialogButton;
@ -27,11 +28,16 @@ limitations under the License.
margin-right: 8px; margin-right: 8px;
} }
.mx_RoomSettings_upgradeButton,
.mx_RoomSettings_leaveButton:hover, .mx_RoomSettings_leaveButton:hover,
.mx_RoomSettings_unbanButton:hover { .mx_RoomSettings_unbanButton:hover {
@mixin mx_DialogButton_hover; @mixin mx_DialogButton_hover;
} }
.mx_RoomSettings_upgradeButton.danger {
@mixin mx_DialogButton_danger;
}
.mx_RoomSettings_integrationsButton_error { .mx_RoomSettings_integrationsButton_error {
position: relative; position: relative;
cursor: not-allowed; cursor: not-allowed;

View File

@ -0,0 +1,48 @@
/*
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_RoomUpgradeWarningBar {
text-align: center;
height: 176px;
background-color: $event-selected-color;
align-items: center;
flex-direction: column;
justify-content: center;
display: flex;
background-color: $preview-bar-bg-color;
-webkit-align-items: center;
padding-left: 20px;
padding-right: 20px;
}
.mx_RoomUpgradeWarningBar_header {
color: $warning-color;
font-weight: bold;
}
.mx_RoomUpgradeWarningBar_body {
color: $warning-color;
}
.mx_RoomUpgradeWarningBar_upgradelink {
color: $warning-color;
text-decoration: underline;
}
.mx_RoomUpgradeWarningBar_small {
color: $greyed-fg-color;
font-size: 70%;
}

View File

@ -0,0 +1,6 @@
<svg width="72" height="34" viewBox="0 0 72 34" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 7.26087V1H28.7889V7.26087M1 7.26087V33H28.7889V7.26087M1 7.26087H28.7889M4.16583 4.13043H16.8291" stroke="#454545" stroke-width="2" stroke-linejoin="round"/>
<path d="M43.2109 7.26087V1H70.9999V7.26087M43.2109 7.26087V33H70.9999V7.26087M43.2109 7.26087H70.9999M46.3768 4.13043H59.0401" stroke="#454545" stroke-width="2" stroke-linejoin="round"/>
<path d="M27.03 28.8262C34.2226 28.8262 36.0207 26.343 36.0207 25.1014V16.0996C36.0207 12.1264 43.6283 11.3401 47.432 11.4436" stroke="black" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 623 B

13
res/img/room_replaced.svg Normal file
View File

@ -0,0 +1,13 @@
<svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="31" height="31" fill="black" fill-opacity="0"/>
<circle cx="15.5" cy="15.5" r="15.5" fill="#A2A2A2"/>
<path d="M22.8553 15.5C22.8553 19.5622 19.5622 22.8553 15.5 22.8553C11.4378 22.8553 8.14474 19.5622 8.14474 15.5C8.14474 11.4378 11.4378 8.14474 15.5 8.14474C19.5622 8.14474 22.8553 11.4378 22.8553 15.5ZM15.5 24.25C20.3325 24.25 24.25 20.3325 24.25 15.5C24.25 10.6675 20.3325 6.75 15.5 6.75C10.6675 6.75 6.75 10.6675 6.75 15.5C6.75 20.3325 10.6675 24.25 15.5 24.25Z" fill="white" stroke="white" stroke-width="0.5"/>
<rect x="16.2666" y="30.5032" width="1.5" height="29.4046" transform="rotate(179.987 16.2666 30.5032)" fill="#A2A2A2"/>
<rect x="8.89404" y="28.8434" width="1.5" height="29.6593" transform="rotate(-149.607 8.89404 28.8434)" fill="#A2A2A2"/>
<rect x="2.87988" y="24.495" width="1.5" height="30.0747" transform="rotate(-121.597 2.87988 24.495)" fill="#A2A2A2"/>
<rect x="2.16284" y="23.3413" width="1.5" height="29.6434" transform="rotate(-116.581 2.16284 23.3413)" fill="#A2A2A2"/>
<rect x="1.55176" y="22.1343" width="1.5" height="29.5016" transform="rotate(-111.584 1.55176 22.1343)" fill="#A2A2A2"/>
<path d="M9.5 17L7.5 20L5.5 17L9.5 17Z" fill="white" stroke="white"/>
<path d="M21.5 15L23.5 12L25.5 15H21.5Z" fill="white" stroke="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -171,6 +171,10 @@ $progressbar-color: #000;
outline: none; outline: none;
} }
@define-mixin mx_DialogButton_danger {
background-color: $warning-color;
}
@define-mixin mx_DialogButton_hover { @define-mixin mx_DialogButton_hover {
} }

92
src/Registration.js Normal file
View File

@ -0,0 +1,92 @@
/*
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/**
* Utility code for registering with a homeserver
* Note that this is currently *not* used by the actual
* registration code.
*/
import dis from './dispatcher';
import sdk from './index';
import MatrixClientPeg from './MatrixClientPeg';
import Modal from './Modal';
import { _t } from './languageHandler';
/**
* Starts either the ILAG or full registration flow, depending
* on what the HS supports
*
* @param {object} options
* @param {bool} options.go_home_on_cancel If true, goes to
* the hame page if the user cancels the action
*/
export async function startAnyRegistrationFlow(options) {
if (options === undefined) options = {};
const flows = await _getRegistrationFlows();
// look for an ILAG compatible flow. We define this as one
// which has only dummy or recaptcha flows. In practice it
// would support any stage InteractiveAuth supports, just not
// ones like email & msisdn which require the user to supply
// the relevant details in advance. We err on the side of
// caution though.
const hasIlagFlow = flows.some((flow) => {
return flow.stages.every((stage) => {
return ['m.login.dummy', 'm.login.recaptcha'].includes(stage);
});
});
if (hasIlagFlow) {
dis.dispatch({
action: 'view_set_mxid',
go_home_on_cancel: options.go_home_on_cancel,
});
} else {
const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
Modal.createTrackedDialog('Registration required', '', QuestionDialog, {
title: _t("Registration Required"),
description: _t("You need to register to do this. Would you like to register now?"),
button: _t("Register"),
onFinished: (proceed) => {
if (proceed) {
dis.dispatch({action: 'start_registration'});
} else if (options.go_home_on_cancel) {
dis.dispatch({action: 'view_home_page'});
}
},
});
}
}
async function _getRegistrationFlows() {
try {
await MatrixClientPeg.get().register(
null,
null,
undefined,
{},
{},
);
console.log("Register request succeeded when it should have returned 401!");
} catch (e) {
if (e.httpStatus === 401) {
return e.data.flows;
}
throw e;
}
throw new Error("Register request succeeded when it should have returned 401!");
}

View File

@ -1,5 +1,6 @@
/* /*
Copyright 2015, 2016 OpenMarket Ltd Copyright 2015, 2016 OpenMarket Ltd
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -470,6 +471,19 @@ export const CommandMap = {
description: _td('Displays action'), description: _td('Displays action'),
hideCompletionAfterSpace: true, hideCompletionAfterSpace: true,
}), }),
discardsession: new Command({
name: 'discardsession',
description: _td('Forces the current outbound group session in an encrypted room to be discarded'),
runFn: function(roomId) {
try {
MatrixClientPeg.get().forceDiscardSession(roomId);
} catch (e) {
return reject(e.message);
}
return success();
},
}),
}; };
/* eslint-enable babel/no-invalid-this */ /* eslint-enable babel/no-invalid-this */
@ -477,6 +491,7 @@ export const CommandMap = {
// helpful aliases // helpful aliases
const aliases = { const aliases = {
j: "join", j: "join",
newballsplease: "discardsession",
}; };

View File

@ -149,9 +149,9 @@ function createRoomTimelineAction(matrixClient, timelineEvent, room, toStartOfTi
*/ */
/** /**
* Create a MatrixActions.RoomMember.membership action that represents * Create a MatrixActions.Room.selfMembership action that represents
* a MatrixClient `RoomMember.membership` matrix event, emitted when a * a MatrixClient `RoomMember.membership` matrix event for the syncing user,
* member's membership is updated. * emitted when the member's membership is updated.
* *
* @param {MatrixClient} matrixClient the matrix client. * @param {MatrixClient} matrixClient the matrix client.
* @param {MatrixEvent} membershipEvent the m.room.member event. * @param {MatrixEvent} membershipEvent the m.room.member event.
@ -159,8 +159,11 @@ function createRoomTimelineAction(matrixClient, timelineEvent, room, toStartOfTi
* @param {string} oldMembership the member's previous membership. * @param {string} oldMembership the member's previous membership.
* @returns {RoomMembershipAction} an action of type `MatrixActions.RoomMember.membership`. * @returns {RoomMembershipAction} an action of type `MatrixActions.RoomMember.membership`.
*/ */
function createRoomMembershipAction(matrixClient, membershipEvent, member, oldMembership) { function createSelfRoomMembershipAction(matrixClient, membershipEvent, member, oldMembership) {
return { action: 'MatrixActions.RoomMember.membership', member }; if (member.userId === matrixClient.getUserId()) {
return { action: 'MatrixActions.Room.selfMembership', member };
}
return null;
} }
/** /**
@ -202,7 +205,7 @@ export default {
this._addMatrixClientListener(matrixClient, 'Room', createRoomAction); this._addMatrixClientListener(matrixClient, 'Room', createRoomAction);
this._addMatrixClientListener(matrixClient, 'Room.tags', createRoomTagsAction); this._addMatrixClientListener(matrixClient, 'Room.tags', createRoomTagsAction);
this._addMatrixClientListener(matrixClient, 'Room.timeline', createRoomTimelineAction); this._addMatrixClientListener(matrixClient, 'Room.timeline', createRoomTimelineAction);
this._addMatrixClientListener(matrixClient, 'RoomMember.membership', createRoomMembershipAction); this._addMatrixClientListener(matrixClient, 'RoomMember.membership', createSelfRoomMembershipAction);
this._addMatrixClientListener(matrixClient, 'Event.decrypted', createEventDecryptedAction); this._addMatrixClientListener(matrixClient, 'Event.decrypted', createEventDecryptedAction);
}, },
@ -217,7 +220,10 @@ export default {
*/ */
_addMatrixClientListener(matrixClient, eventName, actionCreator) { _addMatrixClientListener(matrixClient, eventName, actionCreator) {
const listener = (...args) => { const listener = (...args) => {
dis.dispatch(actionCreator(matrixClient, ...args), true); const payload = actionCreator(matrixClient, ...args);
if (payload) {
dis.dispatch(payload, true);
}
}; };
matrixClient.on(eventName, listener); matrixClient.on(eventName, listener);
this._matrixClientListenersStop.push(() => { this._matrixClientListenersStop.push(() => {

View File

@ -480,7 +480,7 @@ export default React.createClass({
group_id: groupId, group_id: groupId,
}, },
}); });
dis.dispatch({action: 'view_set_mxid'}); dis.dispatch({action: 'require_registration'});
willDoOnboarding = true; willDoOnboarding = true;
} }
this.setState({ this.setState({
@ -723,6 +723,11 @@ export default React.createClass({
}, },
_onJoinClick: async function() { _onJoinClick: async function() {
if (this._matrixClient.isGuest()) {
dis.dispatch({action: 'require_registration'});
return;
}
this.setState({membershipBusy: true}); this.setState({membershipBusy: true});
// Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the

View File

@ -45,6 +45,8 @@ import createRoom from "../../createRoom";
import KeyRequestHandler from '../../KeyRequestHandler'; import KeyRequestHandler from '../../KeyRequestHandler';
import { _t, getCurrentLanguage } from '../../languageHandler'; import { _t, getCurrentLanguage } from '../../languageHandler';
import SettingsStore, {SettingLevel} from "../../settings/SettingsStore"; import SettingsStore, {SettingLevel} from "../../settings/SettingsStore";
import { startAnyRegistrationFlow } from "../../Registration.js";
import { messageForSyncError } from '../../utils/ErrorUtils';
/** constants for MatrixChat.state.view */ /** constants for MatrixChat.state.view */
const VIEWS = { const VIEWS = {
@ -178,6 +180,8 @@ export default React.createClass({
// When showing Modal dialogs we need to set aria-hidden on the root app element // When showing Modal dialogs we need to set aria-hidden on the root app element
// and disable it when there are no dialogs // and disable it when there are no dialogs
hideToSRUsers: false, hideToSRUsers: false,
syncError: null, // If the current syncing status is ERROR, the error object, otherwise null.
}; };
return s; return s;
}, },
@ -471,7 +475,7 @@ export default React.createClass({
action: 'do_after_sync_prepared', action: 'do_after_sync_prepared',
deferred_action: payload, deferred_action: payload,
}); });
dis.dispatch({action: 'view_set_mxid'}); dis.dispatch({action: 'require_registration'});
return; return;
} }
@ -479,7 +483,11 @@ export default React.createClass({
case 'logout': case 'logout':
Lifecycle.logout(); Lifecycle.logout();
break; break;
case 'require_registration':
startAnyRegistrationFlow(payload);
break;
case 'start_registration': case 'start_registration':
// This starts the full registration flow
this._startRegistration(payload.params || {}); this._startRegistration(payload.params || {});
break; break;
case 'start_login': case 'start_login':
@ -945,7 +953,7 @@ export default React.createClass({
}); });
} }
dis.dispatch({ dis.dispatch({
action: 'view_set_mxid', action: 'require_registration',
// If the set_mxid dialog is cancelled, view /home because if the browser // If the set_mxid dialog is cancelled, view /home because if the browser
// was pointing at /user/@someone:domain?action=chat, the URL needs to be // was pointing at /user/@someone:domain?action=chat, the URL needs to be
// reset so that they can revisit /user/.. // (and trigger // reset so that they can revisit /user/.. // (and trigger
@ -1132,7 +1140,7 @@ export default React.createClass({
* *
* @param {string} teamToken * @param {string} teamToken
*/ */
_onLoggedIn: function(teamToken) { _onLoggedIn: async function(teamToken) {
this.setState({ this.setState({
view: VIEWS.LOGGED_IN, view: VIEWS.LOGGED_IN,
}); });
@ -1145,12 +1153,17 @@ export default React.createClass({
this._is_registered = false; this._is_registered = false;
if (this.props.config.welcomeUserId && getCurrentLanguage().startsWith("en")) { if (this.props.config.welcomeUserId && getCurrentLanguage().startsWith("en")) {
createRoom({ const roomId = await createRoom({
dmUserId: this.props.config.welcomeUserId, dmUserId: this.props.config.welcomeUserId,
// Only view the welcome user if we're NOT looking at a room // Only view the welcome user if we're NOT looking at a room
andView: !this.state.currentRoomId, andView: !this.state.currentRoomId,
}); });
return; // if successful, return because we're already
// viewing the welcomeUserId room
// else, if failed, fall through to view_home_page
if (roomId) {
return;
}
} }
// The user has just logged in after registering // The user has just logged in after registering
dis.dispatch({action: 'view_home_page'}); dis.dispatch({action: 'view_home_page'});
@ -1232,13 +1245,20 @@ export default React.createClass({
return self._loggedInView.child.canResetTimelineInRoom(roomId); return self._loggedInView.child.canResetTimelineInRoom(roomId);
}); });
cli.on('sync', function(state, prevState) { cli.on('sync', function(state, prevState, data) {
// LifecycleStore and others cannot directly subscribe to matrix client for // LifecycleStore and others cannot directly subscribe to matrix client for
// events because flux only allows store state changes during flux dispatches. // events because flux only allows store state changes during flux dispatches.
// So dispatch directly from here. Ideally we'd use a SyncStateStore that // So dispatch directly from here. Ideally we'd use a SyncStateStore that
// would do this dispatch and expose the sync state itself (by listening to // would do this dispatch and expose the sync state itself (by listening to
// its own dispatch). // its own dispatch).
dis.dispatch({action: 'sync_state', prevState, state}); dis.dispatch({action: 'sync_state', prevState, state});
if (state === "ERROR") {
self.setState({syncError: data.error});
} else if (self.state.syncError) {
self.setState({syncError: null});
}
self.updateStatusIndicator(state, prevState); self.updateStatusIndicator(state, prevState);
if (state === "SYNCING" && prevState === "SYNCING") { if (state === "SYNCING" && prevState === "SYNCING") {
return; return;
@ -1424,7 +1444,7 @@ export default React.createClass({
} else if (screen == 'start') { } else if (screen == 'start') {
this.showScreen('home'); this.showScreen('home');
dis.dispatch({ dis.dispatch({
action: 'view_set_mxid', action: 'require_registration',
}); });
} else if (screen == 'directory') { } else if (screen == 'directory') {
dis.dispatch({ dis.dispatch({
@ -1740,8 +1760,15 @@ export default React.createClass({
} else { } else {
// we think we are logged in, but are still waiting for the /sync to complete // we think we are logged in, but are still waiting for the /sync to complete
const Spinner = sdk.getComponent('elements.Spinner'); const Spinner = sdk.getComponent('elements.Spinner');
let errorBox;
if (this.state.syncError) {
errorBox = <div className="mx_MatrixChat_syncError">
{messageForSyncError(this.state.syncError)}
</div>;
}
return ( return (
<div className="mx_MatrixChat_splash"> <div className="mx_MatrixChat_splash">
{errorBox}
<Spinner /> <Spinner />
<a href="#" className="mx_MatrixChat_splashButtons" onClick={this.onLogoutClick}> <a href="#" className="mx_MatrixChat_splashButtons" onClick={this.onLogoutClick}>
{ _t('Logout') } { _t('Logout') }

View File

@ -160,7 +160,7 @@ module.exports = React.createClass({
onInviteButtonClick: function() { onInviteButtonClick: function() {
if (this.context.matrixClient.isGuest()) { if (this.context.matrixClient.isGuest()) {
dis.dispatch({action: 'view_set_mxid'}); dis.dispatch({action: 'require_registration'});
return; return;
} }
@ -186,6 +186,9 @@ module.exports = React.createClass({
}, },
onRoomStateMember: function(ev, state, member) { onRoomStateMember: function(ev, state, member) {
if (member.roomId !== this.props.roomId) {
return;
}
// redraw the badge on the membership list // redraw the badge on the membership list
if (this.state.phase === this.Phase.RoomMemberList && member.roomId === this.props.roomId) { if (this.state.phase === this.Phase.RoomMemberList && member.roomId === this.props.roomId) {
this._delayedUpdate(); this._delayedUpdate();

View File

@ -354,7 +354,7 @@ module.exports = React.createClass({
// to the directory. // to the directory.
if (MatrixClientPeg.get().isGuest()) { if (MatrixClientPeg.get().isGuest()) {
if (!room.world_readable && !room.guest_can_join) { if (!room.world_readable && !room.guest_can_join) {
dis.dispatch({action: 'view_set_mxid'}); dis.dispatch({action: 'require_registration'});
return; return;
} }
} }

View File

@ -318,7 +318,7 @@ module.exports = React.createClass({
// lazy load members if enabled // lazy load members if enabled
if (SettingsStore.isFeatureEnabled('feature_lazyloading')) { if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
room.loadMembersIfNeeded().catch((err) => { room.loadMembersIfNeeded().catch((err) => {
const errorMessage = `Fetching room members for ${this.roomId} failed.` + const errorMessage = `Fetching room members for ${room.roomId} failed.` +
" Room members will appear incomplete."; " Room members will appear incomplete.";
console.error(errorMessage); console.error(errorMessage);
console.error(err); console.error(err);
@ -915,7 +915,7 @@ module.exports = React.createClass({
dis.dispatch({action: 'focus_composer'}); dis.dispatch({action: 'focus_composer'});
if (MatrixClientPeg.get().isGuest()) { if (MatrixClientPeg.get().isGuest()) {
dis.dispatch({action: 'view_set_mxid'}); dis.dispatch({action: 'require_registration'});
return; return;
} }
@ -946,7 +946,7 @@ module.exports = React.createClass({
injectSticker: function(url, info, text) { injectSticker: function(url, info, text) {
if (MatrixClientPeg.get().isGuest()) { if (MatrixClientPeg.get().isGuest()) {
dis.dispatch({action: 'view_set_mxid'}); dis.dispatch({action: 'require_registration'});
return; return;
} }
@ -1461,6 +1461,7 @@ module.exports = React.createClass({
const RoomPreviewBar = sdk.getComponent("rooms.RoomPreviewBar"); const RoomPreviewBar = sdk.getComponent("rooms.RoomPreviewBar");
const Loader = sdk.getComponent("elements.Spinner"); const Loader = sdk.getComponent("elements.Spinner");
const TimelinePanel = sdk.getComponent("structures.TimelinePanel"); const TimelinePanel = sdk.getComponent("structures.TimelinePanel");
const RoomUpgradeWarningBar = sdk.getComponent("rooms.RoomUpgradeWarningBar");
if (!this.state.room) { if (!this.state.room) {
if (this.state.roomLoading || this.state.peekLoading) { if (this.state.roomLoading || this.state.peekLoading) {
@ -1587,6 +1588,11 @@ module.exports = React.createClass({
/>; />;
} }
const showRoomUpgradeBar = (
this.state.room.shouldUpgradeToVersion() &&
this.state.room.userMayUpgradeRoom(MatrixClientPeg.get().credentials.userId)
);
let aux = null; let aux = null;
let hideCancel = false; let hideCancel = false;
if (this.state.editingRoomSettings) { if (this.state.editingRoomSettings) {
@ -1598,6 +1604,9 @@ module.exports = React.createClass({
} else if (this.state.searching) { } else if (this.state.searching) {
hideCancel = true; // has own cancel hideCancel = true; // has own cancel
aux = <SearchBar ref="search_bar" searchInProgress={this.state.searchInProgress} onCancelClick={this.onCancelSearchClick} onSearch={this.onSearch} />; aux = <SearchBar ref="search_bar" searchInProgress={this.state.searchInProgress} onCancelClick={this.onCancelSearchClick} onSearch={this.onSearch} />;
} else if (showRoomUpgradeBar) {
aux = <RoomUpgradeWarningBar room={this.state.room} />;
hideCancel = true;
} else if (this.state.showingPinned) { } else if (this.state.showingPinned) {
hideCancel = true; // has own cancel hideCancel = true; // has own cancel
aux = <PinnedEventsPanel room={this.state.room} onCancelClick={this.onPinnedClick} />; aux = <PinnedEventsPanel room={this.state.room} onCancelClick={this.onPinnedClick} />;

View File

@ -76,7 +76,7 @@ const TagPanel = React.createClass({
_onClientSync(syncState, prevState) { _onClientSync(syncState, prevState) {
// Consider the client reconnected if there is no error with syncing. // Consider the client reconnected if there is no error with syncing.
// This means the state could be RECONNECTING, SYNCING or PREPARED. // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.
const reconnected = syncState !== "ERROR" && prevState !== syncState; const reconnected = syncState !== "ERROR" && prevState !== syncState;
if (reconnected) { if (reconnected) {
// Load joined groups // Load joined groups

View File

@ -1146,10 +1146,11 @@ var TimelinePanel = React.createClass({
// of paginating our way through the entire history of the room. // of paginating our way through the entire history of the room.
const stickyBottom = !this._timelineWindow.canPaginate(EventTimeline.FORWARDS); const stickyBottom = !this._timelineWindow.canPaginate(EventTimeline.FORWARDS);
// If the state is PREPARED, we're still waiting for the js-sdk to sync with // If the state is PREPARED or CATCHUP, we're still waiting for the js-sdk to sync with
// the HS and fetch the latest events, so we are effectively forward paginating. // the HS and fetch the latest events, so we are effectively forward paginating.
const forwardPaginating = ( const forwardPaginating = (
this.state.forwardPaginating || this.state.clientSyncState == 'PREPARED' this.state.forwardPaginating ||
['PREPARED', 'CATCHUP'].includes(this.state.clientSyncState)
); );
return ( return (
<MessagePanel ref="messagePanel" <MessagePanel ref="messagePanel"

View File

@ -921,6 +921,25 @@ module.exports = React.createClass({
</div>; </div>;
}, },
_renderTermsAndConditionsLinks: function() {
if (SdkConfig.get().terms_and_conditions_links) {
const tncLinks = [];
for (const tncEntry of SdkConfig.get().terms_and_conditions_links) {
tncLinks.push(<div key={tncEntry.url}>
<a href={tncEntry.url} rel="noopener" target="_blank">{tncEntry.text}</a>
</div>);
}
return <div>
<h3>{ _t("Legal") }</h3>
<div className="mx_UserSettings_section">
{tncLinks}
</div>
</div>;
} else {
return null;
}
},
_renderClearCache: function() { _renderClearCache: function() {
return <div> return <div>
<h3>{ _t("Clear Cache") }</h3> <h3>{ _t("Clear Cache") }</h3>
@ -1407,6 +1426,8 @@ module.exports = React.createClass({
{ this._renderDeactivateAccount() } { this._renderDeactivateAccount() }
{ this._renderTermsAndConditionsLinks() }
</GeminiScrollbarWrapper> </GeminiScrollbarWrapper>
</div> </div>
); );

View File

@ -93,6 +93,7 @@ module.exports = React.createClass({
doingUIAuth: Boolean(this.props.sessionId), doingUIAuth: Boolean(this.props.sessionId),
hsUrl: this.props.customHsUrl, hsUrl: this.props.customHsUrl,
isUrl: this.props.customIsUrl, isUrl: this.props.customIsUrl,
flows: null,
}; };
}, },
@ -145,11 +146,27 @@ module.exports = React.createClass({
}); });
}, },
_replaceClient: function() { _replaceClient: async function() {
this._matrixClient = Matrix.createClient({ this._matrixClient = Matrix.createClient({
baseUrl: this.state.hsUrl, baseUrl: this.state.hsUrl,
idBaseUrl: this.state.isUrl, idBaseUrl: this.state.isUrl,
}); });
try {
await this._makeRegisterRequest({});
// This should never succeed since we specified an empty
// auth object.
console.log("Expecting 401 from register request but got success!");
} catch (e) {
if (e.httpStatus === 401) {
this.setState({
flows: e.data.flows,
});
} else {
this.setState({
errorText: _t("Unable to query for supported registration methods"),
});
}
}
}, },
onFormSubmit: function(formVals) { onFormSubmit: function(formVals) {
@ -378,7 +395,7 @@ module.exports = React.createClass({
poll={true} poll={true}
/> />
); );
} else if (this.state.busy || this.state.teamServerBusy) { } else if (this.state.busy || this.state.teamServerBusy || !this.state.flows) {
registerBody = <Spinner />; registerBody = <Spinner />;
} else { } else {
let serverConfigSection; let serverConfigSection;
@ -408,6 +425,7 @@ module.exports = React.createClass({
onError={this.onFormValidationFailed} onError={this.onFormValidationFailed}
onRegisterClick={this.onFormSubmit} onRegisterClick={this.onFormSubmit}
onTeamSelected={this.onTeamSelected} onTeamSelected={this.onTeamSelected}
flows={this.state.flows}
/> />
{ serverConfigSection } { serverConfigSection }
</div> </div>

View File

@ -87,7 +87,7 @@ module.exports = React.createClass({
if (this.unmounted) return; if (this.unmounted) return;
// Consider the client reconnected if there is no error with syncing. // Consider the client reconnected if there is no error with syncing.
// This means the state could be RECONNECTING, SYNCING or PREPARED. // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.
const reconnected = syncState !== "ERROR" && prevState !== syncState; const reconnected = syncState !== "ERROR" && prevState !== syncState;
if (reconnected && if (reconnected &&
// Did we fall back? // Did we fall back?

View File

@ -19,6 +19,7 @@ import {ContentRepo} from "matrix-js-sdk";
import MatrixClientPeg from "../../../MatrixClientPeg"; import MatrixClientPeg from "../../../MatrixClientPeg";
import Modal from '../../../Modal'; import Modal from '../../../Modal';
import sdk from "../../../index"; import sdk from "../../../index";
import DMRoomMap from '../../../utils/DMRoomMap';
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'RoomAvatar', displayName: 'RoomAvatar',
@ -107,58 +108,29 @@ module.exports = React.createClass({
}, },
getOneToOneAvatar: function(props) { getOneToOneAvatar: function(props) {
if (!props.room) return null; const room = props.room;
if (!room) {
const mlist = props.room.currentState.members; return null;
const userIds = [];
const leftUserIds = [];
// for .. in optimisation to return early if there are >2 keys
for (const uid in mlist) {
if (mlist.hasOwnProperty(uid)) {
if (["join", "invite"].includes(mlist[uid].membership)) {
userIds.push(uid);
} else {
leftUserIds.push(uid);
}
}
if (userIds.length > 2) {
return null;
}
} }
let otherMember = null;
if (userIds.length == 2) { const otherUserId = DMRoomMap.shared().getUserIdForRoomId(room.roomId);
let theOtherGuy = null; if (otherUserId) {
if (mlist[userIds[0]].userId == MatrixClientPeg.get().credentials.userId) { otherMember = room.getMember(otherUserId);
theOtherGuy = mlist[userIds[1]];
} else {
theOtherGuy = mlist[userIds[0]];
}
return theOtherGuy.getAvatarUrl(
MatrixClientPeg.get().getHomeserverUrl(),
Math.floor(props.width * window.devicePixelRatio),
Math.floor(props.height * window.devicePixelRatio),
props.resizeMethod,
false,
);
} else if (userIds.length == 1) {
// The other 1-1 user left, leaving just the current user, so show the left user's avatar
if (leftUserIds.length === 1) {
return mlist[leftUserIds[0]].getAvatarUrl(
MatrixClientPeg.get().getHomeserverUrl(),
props.width, props.height, props.resizeMethod,
false,
);
}
return mlist[userIds[0]].getAvatarUrl(
MatrixClientPeg.get().getHomeserverUrl(),
Math.floor(props.width * window.devicePixelRatio),
Math.floor(props.height * window.devicePixelRatio),
props.resizeMethod,
false,
);
} else { } else {
return null; // if the room is not marked as a 1:1, but only has max 2 members
// then still try to show any avatar (pref. other member)
otherMember = room.getAvatarFallbackMember();
} }
if (otherMember) {
return otherMember.getAvatarUrl(
MatrixClientPeg.get().getHomeserverUrl(),
Math.floor(props.width * window.devicePixelRatio),
Math.floor(props.height * window.devicePixelRatio),
props.resizeMethod,
false,
);
}
return null;
}, },
onRoomAvatarClick: function() { onRoomAvatarClick: function() {

View File

@ -0,0 +1,106 @@
/*
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index';
import MatrixClientPeg from '../../../MatrixClientPeg';
import Modal from '../../../Modal';
import { _t } from '../../../languageHandler';
export default React.createClass({
displayName: 'RoomUpgradeDialog',
propTypes: {
room: PropTypes.object.isRequired,
onFinished: PropTypes.func.isRequired,
},
componentWillMount: function() {
this._targetVersion = this.props.room.shouldUpgradeToVersion();
},
getInitialState: function() {
return {
busy: false,
};
},
_onCancelClick: function() {
this.props.onFinished(false);
},
_onUpgradeClick: function() {
this.setState({busy: true});
MatrixClientPeg.get().upgradeRoom(this.props.room.roomId, this._targetVersion).catch((err) => {
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createTrackedDialog('Failed to upgrade room', '', ErrorDialog, {
title: _t("Failed to upgrade room"),
description: ((err && err.message) ? err.message : _t("The room upgrade could not be completed")),
});
}).finally(() => {
this.setState({busy: false});
});
},
render: function() {
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
const Spinner = sdk.getComponent('views.elements.Spinner');
let buttons;
if (this.state.busy) {
buttons = <Spinner />;
} else {
buttons = <DialogButtons
primaryButton={_t(
'Upgrade this room to version %(version)s',
{version: this._targetVersion},
)}
primaryButtonClass="danger"
hasCancel={true}
onPrimaryButtonClick={this._onUpgradeClick}
focus={this.props.focus}
onCancel={this._onCancelClick}
/>;
}
return (
<BaseDialog className="mx_RoomUpgradeDialog"
onFinished={this.onCancelled}
title={_t("Upgrade Room Version")}
contentId='mx_Dialog_content'
onFinished={this.props.onFinished}
hasCancel={true}
>
<p>
{_t(
"Upgrading this room requires closing down the current " +
"instance of the room and creating a new room it its place. " +
"To give room members the best possible experience, we will:",
)}
</p>
<ol>
<li>{_t("Create a new room with the same name, description and avatar")}</li>
<li>{_t("Update any local room aliases to point to the new room")}</li>
<li>{_t("Stop users from speaking in the old version of the room, and post a message advising users to move to the new room")}</li>
<li>{_t("Put a link back to the old room at the start of the new room so people can see old messages")}</li>
</ol>
{buttons}
</BaseDialog>
);
},
});

View File

@ -1,6 +1,7 @@
/* /*
Copyright 2015, 2016 OpenMarket Ltd Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd Copyright 2017 Vector Creations Ltd
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -49,7 +50,7 @@ module.exports = React.createClass({
teamsConfig: PropTypes.shape({ teamsConfig: PropTypes.shape({
// Email address to request new teams // Email address to request new teams
supportEmail: PropTypes.string, supportEmail: PropTypes.string,
teams: PropTypes.arrayOf(React.PropTypes.shape({ teams: PropTypes.arrayOf(PropTypes.shape({
// The displayed name of the team // The displayed name of the team
"name": PropTypes.string, "name": PropTypes.string,
// The domain of team email addresses // The domain of team email addresses
@ -60,6 +61,7 @@ module.exports = React.createClass({
minPasswordLength: PropTypes.number, minPasswordLength: PropTypes.number,
onError: PropTypes.func, onError: PropTypes.func,
onRegisterClick: PropTypes.func.isRequired, // onRegisterClick(Object) => ?Promise onRegisterClick: PropTypes.func.isRequired, // onRegisterClick(Object) => ?Promise
flows: PropTypes.arrayOf(PropTypes.object).isRequired,
}, },
getDefaultProps: function() { getDefaultProps: function() {
@ -273,12 +275,18 @@ module.exports = React.createClass({
}); });
}, },
_authStepIsRequired(step) {
// A step is required if no flow exists which does not include that step
// (Notwithstanding setups like either email or msisdn being required)
return !this.props.flows.some((flow) => {
return !flow.stages.includes(step);
});
},
render: function() { render: function() {
const self = this; const self = this;
const theme = SettingsStore.getValue("theme"); const emailPlaceholder = this._authStepIsRequired('m.login.email.identity') ? _t("Email address") : _t("Email address (optional)");
// FIXME: remove hardcoded Status team tweaks at some point
const emailPlaceholder = theme === 'status' ? _t("Email address") : _t("Email address (optional)");
const emailSection = ( const emailSection = (
<div> <div>
@ -315,6 +323,7 @@ module.exports = React.createClass({
const CountryDropdown = sdk.getComponent('views.login.CountryDropdown'); const CountryDropdown = sdk.getComponent('views.login.CountryDropdown');
let phoneSection; let phoneSection;
if (!SdkConfig.get().disable_3pid_login) { if (!SdkConfig.get().disable_3pid_login) {
const phonePlaceholder = this._authStepIsRequired('m.login.msisdn') ? _t("Mobile phone number") : _t("Mobile phone number (optional)");
phoneSection = ( phoneSection = (
<div className="mx_Login_phoneSection"> <div className="mx_Login_phoneSection">
<CountryDropdown ref="phone_country" onOptionChange={this._onPhoneCountryChange} <CountryDropdown ref="phone_country" onOptionChange={this._onPhoneCountryChange}
@ -324,7 +333,7 @@ module.exports = React.createClass({
showPrefix={true} showPrefix={true}
/> />
<input type="text" ref="phoneNumber" <input type="text" ref="phoneNumber"
placeholder={_t("Mobile phone number (optional)")} placeholder={phonePlaceholder}
defaultValue={this.props.defaultPhoneNumber} defaultValue={this.props.defaultPhoneNumber}
className={this._classForField( className={this._classForField(
FIELD_PHONE_NUMBER, FIELD_PHONE_NUMBER,

View File

@ -76,7 +76,7 @@ export default class MImageBody extends React.Component {
onClientSync(syncState, prevState) { onClientSync(syncState, prevState) {
if (this.unmounted) return; if (this.unmounted) return;
// Consider the client reconnected if there is no error with syncing. // Consider the client reconnected if there is no error with syncing.
// This means the state could be RECONNECTING, SYNCING or PREPARED. // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.
const reconnected = syncState !== "ERROR" && prevState !== syncState; const reconnected = syncState !== "ERROR" && prevState !== syncState;
if (reconnected && this.state.imgError) { if (reconnected && this.state.imgError) {
// Load the image again // Load the image again

View File

@ -0,0 +1,63 @@
/*
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import React from 'react';
import PropTypes from 'prop-types';
import dis from '../../../dispatcher';
import { makeEventPermalink } from '../../../matrix-to';
import { _t } from '../../../languageHandler';
module.exports = React.createClass({
displayName: 'RoomCreate',
propTypes: {
/* the MatrixEvent to show */
mxEvent: PropTypes.object.isRequired,
},
_onLinkClicked: function(e) {
e.preventDefault();
const predecessor = this.props.mxEvent.getContent()['predecessor'];
dis.dispatch({
action: 'view_room',
event_id: predecessor['event_id'],
highlighted: true,
room_id: predecessor['room_id'],
});
},
render: function() {
const predecessor = this.props.mxEvent.getContent()['predecessor'];
if (predecessor === undefined) {
return <div />; // We should never have been instaniated in this case
}
return <div className="mx_CreateEvent">
<img className="mx_CreateEvent_image" src="img/room-continuation.svg" />
<div className="mx_CreateEvent_header">
{_t("This room is a continuation of another conversation.")}
</div>
<a className="mx_CreateEvent_link"
href={makeEventPermalink(predecessor['room_id'], predecessor['event_id'])}
onClick={this._onLinkClicked}
>
{_t("Click here to see older messages.")}
</a>
</div>;
},
});

View File

@ -90,7 +90,7 @@ module.exports = React.createClass({
secondary_color: this.state.secondary_color, secondary_color: this.state.secondary_color,
}).catch(function(err) { }).catch(function(err) {
if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') { if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {
dis.dispatch({action: 'view_set_mxid'}); dis.dispatch({action: 'require_registration'});
} }
}); });
} }

View File

@ -47,6 +47,7 @@ const eventTileTypes = {
}; };
const stateEventTileTypes = { const stateEventTileTypes = {
'm.room.create': 'messages.RoomCreate',
'm.room.member': 'messages.TextualEvent', 'm.room.member': 'messages.TextualEvent',
'm.room.name': 'messages.TextualEvent', 'm.room.name': 'messages.TextualEvent',
'm.room.avatar': 'messages.RoomAvatarEvent', 'm.room.avatar': 'messages.RoomAvatarEvent',
@ -483,7 +484,7 @@ module.exports = withMatrixClient(React.createClass({
const eventType = this.props.mxEvent.getType(); const eventType = this.props.mxEvent.getType();
// Info messages are basically information about commands processed on a room // Info messages are basically information about commands processed on a room
const isInfoMessage = (eventType !== 'm.room.message' && eventType !== 'm.sticker'); const isInfoMessage = (eventType !== 'm.room.message' && eventType !== 'm.sticker' && eventType != 'm.room.create');
const tileHandler = getHandlerTile(this.props.mxEvent); const tileHandler = getHandlerTile(this.props.mxEvent);
// This shouldn't happen: the caller should check we support this type // This shouldn't happen: the caller should check we support this type
@ -535,6 +536,9 @@ module.exports = withMatrixClient(React.createClass({
if (this.props.tileShape === "notif") { if (this.props.tileShape === "notif") {
avatarSize = 24; avatarSize = 24;
needsSenderProfile = true; needsSenderProfile = true;
} else if (tileHandler === 'messages.RoomCreate') {
avatarSize = 0;
needsSenderProfile = false;
} else if (isInfoMessage) { } else if (isInfoMessage) {
// a small avatar, with no sender profile, for // a small avatar, with no sender profile, for
// joins/parts/etc // joins/parts/etc
@ -745,6 +749,8 @@ module.exports.haveTileForEvent = function(e) {
if (handler === undefined) return false; if (handler === undefined) return false;
if (handler === 'messages.TextualEvent') { if (handler === 'messages.TextualEvent') {
return TextForEvent.textForEvent(e) !== ''; return TextForEvent.textForEvent(e) !== '';
} else if (handler === 'messages.RoomCreate') {
return Boolean(e.getContent()['predecessor']);
} else { } else {
return true; return true;
} }

View File

@ -429,7 +429,7 @@ module.exports = withMatrixClient(React.createClass({
console.log("Mod toggle success"); console.log("Mod toggle success");
}, function(err) { }, function(err) {
if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') { if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {
dis.dispatch({action: 'view_set_mxid'}); dis.dispatch({action: 'require_registration'});
} else { } else {
console.error("Toggle moderator error:" + err); console.error("Toggle moderator error:" + err);
Modal.createTrackedDialog('Failed to toggle moderator status', '', ErrorDialog, { Modal.createTrackedDialog('Failed to toggle moderator status', '', ErrorDialog, {

View File

@ -32,23 +32,29 @@ module.exports = React.createClass({
displayName: 'MemberList', displayName: 'MemberList',
getInitialState: function() { getInitialState: function() {
this.memberDict = this.getMemberDict(); const cli = MatrixClientPeg.get();
const members = this.roomMembers(); if (cli.hasLazyLoadMembersEnabled()) {
return {loading: true};
return { } else {
members: members, return this._getMembersState();
filteredJoinedMembers: this._filterMembers(members, 'join'), }
filteredInvitedMembers: this._filterMembers(members, 'invite'),
// ideally we'd size this to the page height, but
// in practice I find that a little constraining
truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS,
truncateAtInvited: INITIAL_LOAD_NUM_INVITED,
searchQuery: "",
};
}, },
componentWillMount: function() { componentWillMount: function() {
this._mounted = false;
const cli = MatrixClientPeg.get();
if (!cli.hasLazyLoadMembersEnabled()) {
this._listenForMembersChanges();
}
const enablePresenceByHsUrl = SdkConfig.get()["enable_presence_by_hs_url"];
const hsUrl = MatrixClientPeg.get().baseUrl;
this._showPresence = true;
if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) {
this._showPresence = enablePresenceByHsUrl[hsUrl];
}
},
_listenForMembersChanges: function() {
const cli = MatrixClientPeg.get(); const cli = MatrixClientPeg.get();
cli.on("RoomState.members", this.onRoomStateMember); cli.on("RoomState.members", this.onRoomStateMember);
cli.on("RoomMember.name", this.onRoomMemberName); cli.on("RoomMember.name", this.onRoomMemberName);
@ -59,17 +65,22 @@ module.exports = React.createClass({
// the information contained in presence events). // the information contained in presence events).
cli.on("User.lastPresenceTs", this.onUserLastPresenceTs); cli.on("User.lastPresenceTs", this.onUserLastPresenceTs);
// cli.on("Room.timeline", this.onRoomTimeline); // cli.on("Room.timeline", this.onRoomTimeline);
},
const enablePresenceByHsUrl = SdkConfig.get()["enable_presence_by_hs_url"]; componentDidMount: async function() {
const hsUrl = MatrixClientPeg.get().baseUrl; this._mounted = true;
const cli = MatrixClientPeg.get();
this._showPresence = true; if (cli.hasLazyLoadMembersEnabled()) {
if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) { await this._waitForMembersToLoad();
this._showPresence = enablePresenceByHsUrl[hsUrl]; if (this._mounted) {
this.setState(this._getMembersState());
this._listenForMembersChanges();
}
} }
}, },
componentWillUnmount: function() { componentWillUnmount: function() {
this._mounted = false;
const cli = MatrixClientPeg.get(); const cli = MatrixClientPeg.get();
if (cli) { if (cli) {
cli.removeListener("RoomState.members", this.onRoomStateMember); cli.removeListener("RoomState.members", this.onRoomStateMember);
@ -84,6 +95,35 @@ module.exports = React.createClass({
this._updateList.cancelPendingCall(); this._updateList.cancelPendingCall();
}, },
_waitForMembersToLoad: async function() {
if (!this.props.roomId) return {};
const cli = MatrixClientPeg.get();
const room = cli.getRoom(this.props.roomId);
if (room) {
try {
await room.loadMembersIfNeeded();
} catch(ex) {/* already logged in RoomView */}
}
},
_getMembersState: function() {
const members = this.roomMembers();
// set the state after determining _showPresence to make sure it's
// taken into account while rerendering
return {
loading: false,
members: members,
filteredJoinedMembers: this._filterMembers(members, 'join'),
filteredInvitedMembers: this._filterMembers(members, 'invite'),
// ideally we'd size this to the page height, but
// in practice I find that a little constraining
truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS,
truncateAtInvited: INITIAL_LOAD_NUM_INVITED,
searchQuery: "",
};
},
/* /*
onRoomTimeline: function(ev, room, toStartOfTimeline, removed, data) { onRoomTimeline: function(ev, room, toStartOfTimeline, removed, data) {
// ignore anything but real-time updates at the end of the room: // ignore anything but real-time updates at the end of the room:
@ -134,23 +174,28 @@ module.exports = React.createClass({
}, },
onRoomStateMember: function(ev, state, member) { onRoomStateMember: function(ev, state, member) {
if (member.roomId !== this.props.roomId) {
return;
}
this._updateList(); this._updateList();
}, },
onRoomMemberName: function(ev, member) { onRoomMemberName: function(ev, member) {
if (member.roomId !== this.props.roomId) {
return;
}
this._updateList(); this._updateList();
}, },
onRoomStateEvent: function(event, state) { onRoomStateEvent: function(event, state) {
if (event.getType() === "m.room.third_party_invite") { if (event.getRoomId() === this.props.roomId &&
event.getType() === "m.room.third_party_invite") {
this._updateList(); this._updateList();
} }
}, },
_updateList: new rate_limited_func(function() { _updateList: new rate_limited_func(function() {
// console.log("Updating memberlist"); // console.log("Updating memberlist");
this.memberDict = this.getMemberDict();
const newState = { const newState = {
members: this.roomMembers(), members: this.roomMembers(),
}; };
@ -159,50 +204,43 @@ module.exports = React.createClass({
this.setState(newState); this.setState(newState);
}, 500), }, 500),
getMemberDict: function() { getMembersWithUser: function() {
if (!this.props.roomId) return {}; if (!this.props.roomId) return [];
const cli = MatrixClientPeg.get(); const cli = MatrixClientPeg.get();
const room = cli.getRoom(this.props.roomId); const room = cli.getRoom(this.props.roomId);
if (!room) return {}; if (!room) return [];
const all_members = room.currentState.members; const allMembers = Object.values(room.currentState.members);
Object.keys(all_members).map(function(userId) { allMembers.forEach(function(member) {
// work around a race where you might have a room member object // work around a race where you might have a room member object
// before the user object exists. This may or may not cause // before the user object exists. This may or may not cause
// https://github.com/vector-im/vector-web/issues/186 // https://github.com/vector-im/vector-web/issues/186
if (all_members[userId].user === null) { if (member.user === null) {
all_members[userId].user = MatrixClientPeg.get().getUser(userId); member.user = cli.getUser(member.userId);
} }
// XXX: this user may have no lastPresenceTs value! // XXX: this user may have no lastPresenceTs value!
// the right solution here is to fix the race rather than leave it as 0 // the right solution here is to fix the race rather than leave it as 0
}); });
return all_members; return allMembers;
}, },
roomMembers: function() { roomMembers: function() {
const all_members = this.memberDict || {};
const all_user_ids = Object.keys(all_members);
const ConferenceHandler = CallHandler.getConferenceHandler(); const ConferenceHandler = CallHandler.getConferenceHandler();
all_user_ids.sort(this.memberSort); const allMembers = this.getMembersWithUser();
const filteredAndSortedMembers = allMembers.filter((m) => {
const to_display = []; return (
let count = 0; m.membership === 'join' || m.membership === 'invite'
for (let i = 0; i < all_user_ids.length; ++i) { ) && (
const user_id = all_user_ids[i]; !ConferenceHandler ||
const m = all_members[user_id]; (ConferenceHandler && !ConferenceHandler.isConferenceUser(m.userId))
);
if (m.membership === 'join' || m.membership === 'invite') { });
if ((ConferenceHandler && !ConferenceHandler.isConferenceUser(user_id)) || !ConferenceHandler) { filteredAndSortedMembers.sort(this.memberSort);
to_display.push(user_id); return filteredAndSortedMembers;
++count;
}
}
}
return to_display;
}, },
_createOverflowTileJoined: function(overflowCount, totalCount) { _createOverflowTileJoined: function(overflowCount, totalCount) {
@ -249,14 +287,12 @@ module.exports = React.createClass({
// returns negative if a comes before b, // returns negative if a comes before b,
// returns 0 if a and b are equivalent in ordering // returns 0 if a and b are equivalent in ordering
// returns positive if a comes after b. // returns positive if a comes after b.
memberSort: function(userIdA, userIdB) { memberSort: function(memberA, memberB) {
// order by last active, with "active now" first. // order by last active, with "active now" first.
// ...and then by power // ...and then by power
// ...and then alphabetically. // ...and then alphabetically.
// We could tiebreak instead by "last recently spoken in this room" if we wanted to. // We could tiebreak instead by "last recently spoken in this room" if we wanted to.
const memberA = this.memberDict[userIdA];
const memberB = this.memberDict[userIdB];
const userA = memberA.user; const userA = memberA.user;
const userB = memberB.user; const userB = memberB.user;
@ -306,9 +342,7 @@ module.exports = React.createClass({
}, },
_filterMembers: function(members, membership, query) { _filterMembers: function(members, membership, query) {
return members.filter((userId) => { return members.filter((m) => {
const m = this.memberDict[userId];
if (query) { if (query) {
query = query.toLowerCase(); query = query.toLowerCase();
const matchesName = m.name.toLowerCase().indexOf(query) !== -1; const matchesName = m.name.toLowerCase().indexOf(query) !== -1;
@ -350,10 +384,9 @@ module.exports = React.createClass({
_makeMemberTiles: function(members, membership) { _makeMemberTiles: function(members, membership) {
const MemberTile = sdk.getComponent("rooms.MemberTile"); const MemberTile = sdk.getComponent("rooms.MemberTile");
const memberList = members.map((userId) => { const memberList = members.map((m) => {
const m = this.memberDict[userId];
return ( return (
<MemberTile key={userId} member={m} ref={userId} showPresence={this._showPresence} /> <MemberTile key={m.userId} member={m} ref={m.userId} showPresence={this._showPresence} />
); );
}); });
@ -393,6 +426,11 @@ module.exports = React.createClass({
}, },
render: function() { render: function() {
if (this.state.loading) {
const Spinner = sdk.getComponent("elements.Spinner");
return <div className="mx_MemberList"><Spinner /></div>;
}
const TruncatedList = sdk.getComponent("elements.TruncatedList"); const TruncatedList = sdk.getComponent("elements.TruncatedList");
const GeminiScrollbarWrapper = sdk.getComponent("elements.GeminiScrollbarWrapper"); const GeminiScrollbarWrapper = sdk.getComponent("elements.GeminiScrollbarWrapper");

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2015, 2016 OpenMarket Ltd Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 New Vector Ltd Copyright 2017, 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -25,6 +25,7 @@ import dis from '../../../dispatcher';
import RoomViewStore from '../../../stores/RoomViewStore'; import RoomViewStore from '../../../stores/RoomViewStore';
import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore"; import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore";
import Stickerpicker from './Stickerpicker'; import Stickerpicker from './Stickerpicker';
import { makeRoomPermalink } from '../../../matrix-to';
const formatButtonList = [ const formatButtonList = [
_td("bold"), _td("bold"),
@ -51,7 +52,9 @@ export default class MessageComposer extends React.Component {
this.onToggleMarkdownClicked = this.onToggleMarkdownClicked.bind(this); this.onToggleMarkdownClicked = this.onToggleMarkdownClicked.bind(this);
this.onInputStateChanged = this.onInputStateChanged.bind(this); this.onInputStateChanged = this.onInputStateChanged.bind(this);
this.onEvent = this.onEvent.bind(this); this.onEvent = this.onEvent.bind(this);
this._onRoomStateEvents = this._onRoomStateEvents.bind(this);
this._onRoomViewStoreUpdate = this._onRoomViewStoreUpdate.bind(this); this._onRoomViewStoreUpdate = this._onRoomViewStoreUpdate.bind(this);
this._onTombstoneClick = this._onTombstoneClick.bind(this);
this.state = { this.state = {
inputState: { inputState: {
@ -61,6 +64,7 @@ export default class MessageComposer extends React.Component {
}, },
showFormatting: SettingsStore.getValue('MessageComposer.showFormatting'), showFormatting: SettingsStore.getValue('MessageComposer.showFormatting'),
isQuoting: Boolean(RoomViewStore.getQuotingEvent()), isQuoting: Boolean(RoomViewStore.getQuotingEvent()),
tombstone: this._getRoomTombstone(),
}; };
} }
@ -70,6 +74,7 @@ export default class MessageComposer extends React.Component {
// marked as encrypted. // marked as encrypted.
// XXX: fragile as all hell - fixme somehow, perhaps with a dedicated Room.encryption event or something. // XXX: fragile as all hell - fixme somehow, perhaps with a dedicated Room.encryption event or something.
MatrixClientPeg.get().on("event", this.onEvent); MatrixClientPeg.get().on("event", this.onEvent);
MatrixClientPeg.get().on("RoomState.events", this._onRoomStateEvents);
this._roomStoreToken = RoomViewStore.addListener(this._onRoomViewStoreUpdate); this._roomStoreToken = RoomViewStore.addListener(this._onRoomViewStoreUpdate);
this._waitForOwnMember(); this._waitForOwnMember();
} }
@ -93,6 +98,7 @@ export default class MessageComposer extends React.Component {
componentWillUnmount() { componentWillUnmount() {
if (MatrixClientPeg.get()) { if (MatrixClientPeg.get()) {
MatrixClientPeg.get().removeListener("event", this.onEvent); MatrixClientPeg.get().removeListener("event", this.onEvent);
MatrixClientPeg.get().removeListener("RoomState.events", this._onRoomStateEvents);
} }
if (this._roomStoreToken) { if (this._roomStoreToken) {
this._roomStoreToken.remove(); this._roomStoreToken.remove();
@ -105,6 +111,18 @@ export default class MessageComposer extends React.Component {
this.forceUpdate(); this.forceUpdate();
} }
_onRoomStateEvents(ev, state) {
if (ev.getRoomId() !== this.props.room.roomId) return;
if (ev.getType() === 'm.room.tombstone') {
this.setState({tombstone: this._getRoomTombstone()});
}
}
_getRoomTombstone() {
return this.props.room.currentState.getStateEvents('m.room.tombstone', '');
}
_onRoomViewStoreUpdate() { _onRoomViewStoreUpdate() {
const isQuoting = Boolean(RoomViewStore.getQuotingEvent()); const isQuoting = Boolean(RoomViewStore.getQuotingEvent());
if (this.state.isQuoting === isQuoting) return; if (this.state.isQuoting === isQuoting) return;
@ -113,7 +131,7 @@ export default class MessageComposer extends React.Component {
onUploadClick(ev) { onUploadClick(ev) {
if (MatrixClientPeg.get().isGuest()) { if (MatrixClientPeg.get().isGuest()) {
dis.dispatch({action: 'view_set_mxid'}); dis.dispatch({action: 'require_registration'});
return; return;
} }
@ -224,6 +242,17 @@ export default class MessageComposer extends React.Component {
this.messageComposerInput.enableRichtext(!this.state.inputState.isRichTextEnabled); this.messageComposerInput.enableRichtext(!this.state.inputState.isRichTextEnabled);
} }
_onTombstoneClick(ev) {
ev.preventDefault();
const replacementRoomId = this.state.tombstone.getContent()['replacement_room'];
dis.dispatch({
action: 'view_room',
highlighted: true,
room_id: replacementRoomId,
});
}
render() { render() {
const uploadInputStyle = {display: 'none'}; const uploadInputStyle = {display: 'none'};
const MemberAvatar = sdk.getComponent('avatars.MemberAvatar'); const MemberAvatar = sdk.getComponent('avatars.MemberAvatar');
@ -280,8 +309,8 @@ export default class MessageComposer extends React.Component {
</div>; </div>;
} }
const canSendMessages = this.props.room.currentState.maySendMessage( const canSendMessages = !this.state.tombstone &&
MatrixClientPeg.get().credentials.userId); this.props.room.maySendMessage();
if (canSendMessages) { if (canSendMessages) {
// This also currently includes the call buttons. Really we should // This also currently includes the call buttons. Really we should
@ -340,6 +369,24 @@ export default class MessageComposer extends React.Component {
callButton, callButton,
videoCallButton, videoCallButton,
); );
} else if (this.state.tombstone) {
const replacementRoomId = this.state.tombstone.getContent()['replacement_room'];
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
controls.push(<div className="mx_MessageComposer_replaced_wrapper">
<div className="mx_MessageComposer_replaced_valign">
<img className="mx_MessageComposer_roomReplaced_icon" src="img/room_replaced.svg" />
<span className="mx_MessageComposer_roomReplaced_header">
{_t("This room has been replaced and is no longer active.")}
</span><br />
<a href={makeRoomPermalink(replacementRoomId)}
className="mx_MessageComposer_roomReplaced_link"
onClick={this._onTombstoneClick}
>
{_t("The conversation continues here.")}
</a>
</div>
</div>);
} else { } else {
controls.push( controls.push(
<div key="controls_error" className="mx_MessageComposer_noperm_error"> <div key="controls_error" className="mx_MessageComposer_noperm_error">

View File

@ -336,7 +336,7 @@ export default class MessageComposerInput extends React.Component {
} }
} }
componentDidMount() { componentWillMount() {
this.dispatcherRef = dis.register(this.onAction); this.dispatcherRef = dis.register(this.onAction);
this.historyManager = new ComposerHistoryManager(this.props.room.roomId, 'mx_slate_composer_history_'); this.historyManager = new ComposerHistoryManager(this.props.room.roomId, 'mx_slate_composer_history_');
} }

View File

@ -572,6 +572,11 @@ module.exports = React.createClass({
}); });
}, },
_onRoomUpgradeClick: function() {
const RoomUpgradeDialog = sdk.getComponent('dialogs.RoomUpgradeDialog');
Modal.createTrackedDialog('Upgrade Room Version', '', RoomUpgradeDialog, {room: this.props.room});
},
_onRoomMemberMembership: function() { _onRoomMemberMembership: function() {
// Update, since our banned user list may have changed // Update, since our banned user list may have changed
this.forceUpdate(); this.forceUpdate();
@ -930,6 +935,13 @@ module.exports = React.createClass({
); );
}); });
let roomUpgradeButton = null;
if (this.props.room.shouldUpgradeToVersion() && this.props.room.userMayUpgradeRoom(myUserId)) {
roomUpgradeButton = <AccessibleButton className="mx_RoomSettings_upgradeButton danger" onClick={this._onRoomUpgradeClick}>
{ _t("Upgrade room to version %(ver)s", {ver: this.props.room.shouldUpgradeToVersion()}) }
</AccessibleButton>;
}
return ( return (
<div className="mx_RoomSettings"> <div className="mx_RoomSettings">
@ -1041,7 +1053,8 @@ module.exports = React.createClass({
<h3>{ _t('Advanced') }</h3> <h3>{ _t('Advanced') }</h3>
<div className="mx_RoomSettings_settings"> <div className="mx_RoomSettings_settings">
{ _t('Internal room ID: ') } <code>{ this.props.room.roomId }</code><br /> { _t('Internal room ID: ') } <code>{ this.props.room.roomId }</code><br />
{ _t('Room version number: ') } <code>{ this.props.room.getVersion() }</code> { _t('Room version number: ') } <code>{ this.props.room.getVersion() }</code><br />
{ roomUpgradeButton }
</div> </div>
</div> </div>
); );

View File

@ -0,0 +1,57 @@
/*
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index';
import Modal from '../../../Modal';
import { _t } from '../../../languageHandler';
module.exports = React.createClass({
displayName: 'RoomUpgradeWarningBar',
propTypes: {
room: PropTypes.object.isRequired,
},
onUpgradeClick: function() {
const RoomUpgradeDialog = sdk.getComponent('dialogs.RoomUpgradeDialog');
Modal.createTrackedDialog('Upgrade Room Version', '', RoomUpgradeDialog, {room: this.props.room});
},
render: function() {
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
return (
<div className="mx_RoomUpgradeWarningBar">
<div className="mx_RoomUpgradeWarningBar_header">
{_t("There is a known vulnerability affecting this room.")}
</div>
<div className="mx_RoomUpgradeWarningBar_body">
{_t("This room version is vulnerable to malicious modification of room state.")}
</div>
<p className="mx_RoomUpgradeWarningBar_upgradelink">
<AccessibleButton onClick={this.onUpgradeClick}>
{_t("Click here to upgrade to the latest room version and ensure room integrity is protected.")}
</AccessibleButton>
</p>
<div className="mx_RoomUpgradeWarningBar_small">
{_t("Only room administrators will see this warning")}
</div>
</div>
);
},
});

View File

@ -42,7 +42,7 @@ function createRoom(opts) {
const client = MatrixClientPeg.get(); const client = MatrixClientPeg.get();
if (client.isGuest()) { if (client.isGuest()) {
dis.dispatch({action: 'view_set_mxid'}); dis.dispatch({action: 'require_registration'});
return Promise.resolve(null); return Promise.resolve(null);
} }

View File

@ -1231,5 +1231,30 @@
"Internal room ID: ": "Вътрешен идентификатор на стаята: ", "Internal room ID: ": "Вътрешен идентификатор на стаята: ",
"Room version number: ": "Версия на стаята: ", "Room version number: ": "Версия на стаята: ",
"This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "Този сървър достигна лимита си за активни потребители на месец. Моля, <a>свържете се с администратора на услугата</a>, за да продължите да я използвате.", "This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "Този сървър достигна лимита си за активни потребители на месец. Моля, <a>свържете се с администратора на услугата</a>, за да продължите да я използвате.",
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "Този сървър достигна лимита си за активни потребители на месец и някои потребители няма да успеят да влязат в профила си. Моля, <a>свържете се с администратора на услугата</a> за да се увеличи този лимит." "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "Този сървър достигна лимита си за активни потребители на месец и някои потребители няма да успеят да влязат в профила си. Моля, <a>свържете се с администратора на услугата</a> за да се увеличи този лимит.",
"There is a known vulnerability affecting this room.": "Има пропуск в сигурността засягащ тази стая.",
"This room version is vulnerable to malicious modification of room state.": "Тази версия на стаята е уязвима към злонамерена модификация на състоянието й.",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "Кликнете тук за да обновите стаята до последна версия и подсигурите сигурността й.",
"Only room administrators will see this warning": "Само администратори на стаята виждат това предупреждение",
"Please <a>contact your service administrator</a> to continue using the service.": "Моля, <a>свържете се с администратора на услугата</a> за да продължите да я използвате.",
"This homeserver has hit its Monthly Active User limit.": "Този сървър е достигнал лимита си за активни потребители на месец.",
"This homeserver has exceeded one of its resource limits.": "Този сървър е надвишил някой от лимитите си.",
"Please <a>contact your service administrator</a> to get this limit increased.": "Моля, <a>свържете се с администратора на услугата</a> за да се увеличи този лимит.",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "Този сървър е достигнал своя лимит за потребители на месец, така че <b>някои потребители не биха успели да влязат</b>.",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "Този сървър е достигнал някой от лимите си, така че <b>някои потребители не биха успели да влязат</b>.",
"Upgrade Room Version": "Обнови версията на стаята",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Обновяването на тази стая изисква затваряне на текущата и създаване на нова на нейно място. За да подсигурим най-доброто изживяване на потребителите, ще:",
"Create a new room with the same name, description and avatar": "Създадем нова стая със същото име, описание и снимка",
"Update any local room aliases to point to the new room": "Обновим всички локални адреси на стаята да сочат към новата",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Забраним комуникацията на потребителите в старата стая и публикуваме съобщение насочващо ги към новата",
"Put a link back to the old room at the start of the new room so people can see old messages": "Поставим връзка в новата стая, водещо обратно към старата, за да може хората да виждат старите съобщения",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "Съобщението Ви не бе изпратено, защото този сървър е достигнал лимита си за потребители на месец. Моля, <a>свържете се с администратора на услугата</a> за да продължите да я използвате.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "Съобщението Ви не бе изпратено, защото този сървър е някой от лимитите си. Моля, <a>свържете се с администратора на услугата</a> за да продължите да я използвате.",
"Please <a>contact your service administrator</a> to continue using this service.": "Моля, <a>свържете се с администратора на услугата</a> за да продължите да я използвате.",
"Increase performance by only loading room members on first view": "Повишаване на бързодействието чрез отложено зареждане на членовете в стаите",
"Lazy loading members not supported": "Отложеното зареждане на членове не се поддържа",
"Lazy loading is not supported by your current homeserver.": "Отложеното зареждане не се поддържа от текущия сървър.",
"Sorry, your homeserver is too old to participate in this room.": "Съжаляваме, вашият сървър е прекалено стар за да участва в тази стая.",
"Please contact your homeserver administrator.": "Моля, свържете се се със сървърния администратор.",
"Legal": "Юридически"
} }

View File

@ -1080,5 +1080,171 @@
"The platform you're on": "Platforma na které jsi", "The platform you're on": "Platforma na které jsi",
"The version of Riot.im": "Verze Riot.im", "The version of Riot.im": "Verze Riot.im",
"Whether or not you're logged in (we don't record your user name)": "Jestli jsi, nebo nejsi přihlášen (tvou přezdívku neukládáme)", "Whether or not you're logged in (we don't record your user name)": "Jestli jsi, nebo nejsi přihlášen (tvou přezdívku neukládáme)",
"Your language of choice": "Tvá jazyková volba" "Your language of choice": "Tvá jazyková volba",
"Which officially provided instance you are using, if any": "Přes kterou oficiální podporovanou instanci Riot.im jste pripojeni (jestli nehostujete Riot sami)",
"Whether or not you're using the Richtext mode of the Rich Text Editor": "Jestli při psaní zpráv používáte rozbalenou lištu formátování textu",
"Your homeserver's URL": "URL vámi používaného domovského serveru",
"Your identity server's URL": "URL Vámi používaného serveru totožností",
"e.g. %(exampleValue)s": "např. %(exampleValue)s",
"Every page you use in the app": "Každou stránku v aplikaci, kterou navštívíte",
"e.g. <CurrentPageURL>": "např. <CurrentPageURL>",
"Your User Agent": "Řetězec User Agent Vašeho zařízení",
"Your device resolution": "Rozlišení obrazovky Vašeho zařízení",
"The information being sent to us to help make Riot.im better includes:": "S cílem vylepšovat aplikaci Riot.im shromažďujeme následující údaje:",
"Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "V případě, že se na stránce vyskytují identifikační údaje, jako například název místnosti, ID uživatele, místnosti a nebo skupiny, jsou tyto údaje před odesláním na server odstraněny.",
"A conference call could not be started because the intgrations server is not available": "Není možné uskutečnit konferenční hovor, integrační server není k dispozici",
"Call in Progress": "Probíhající hovor",
"A call is currently being placed!": "Právě probíhá jiný hovor!",
"A call is already in progress!": "Jeden hovor už probíhá!",
"Permission Required": "Vyžaduje oprávnění",
"You do not have permission to start a conference call in this room": "Nemáte oprávnění v této místnosti začít konferenční hovor",
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s",
"Missing roomId.": "Chybějící ID místnosti.",
"Opens the Developer Tools dialog": "Otevře dialog nástrojů pro vývojáře",
"%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s si změnil zobrazované jméno na %(displayName)s.",
"Always show encryption icons": "Vždy zobrazovat ikony stavu šifrovaní",
"Disable Community Filter Panel": "Zakázat panel Filtr komunity",
"Send analytics data": "Odesílat analytická data",
"Enable widget screenshots on supported widgets": "Povolit screenshot widgetu pro podporované widgety",
"Show empty room list headings": "Zobrazovat nadpisy prázdných seznamů místností",
"This event could not be displayed": "Tato událost nemohla být zobrazena",
"Your key share request has been sent - please check your other devices for key share requests.": "Žádost o sdílení klíče byla odeslána - prosím zkontrolujte si Vaše ostatí zařízení.",
"Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Žádost o sdílení klíčů je automaticky odesílaná na Vaše ostatní zařízení. Jestli jste žádost odmítly nebo zrušili dialogové okno se žádostí na ostatních zařízeních, kliknutím sem ji můžete opakovaně pro tuto relaci vyžádat.",
"If your other devices do not have the key for this message you will not be able to decrypt them.": "Pokud Vaše ostatní zařízení nemají klíč pro tyto zprávy, nebudete je moci dešifrovat.",
"Key request sent.": "Žádost o klíč poslána.",
"<requestLink>Re-request encryption keys</requestLink> from your other devices.": "<requestLink>Znovu vyžádat šifrovací klíče</requestLink> z vašich ostatních zařízení.",
"Encrypting": "Šifruje",
"Encrypted, not sent": "Zašifrováno, ale neodesláno",
"Demote yourself?": "Snížit Vaši vlastní hodnost?",
"You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Tuto změnu nebudete moci vzít zpět, protože snižujete svoji vlastní hodnost, jste-li poslední privilegovaný uživatel v místnosti, bude nemožné vaši současnou hodnost získat zpět.",
"Demote": "Degradovat",
"Share Link to User": "Sdílet odkaz na uživatele",
"deleted": "smazáno",
"underlined": "podtrženo",
"inline-code": "vnořený kód",
"block-quote": "citace",
"bulleted-list": "seznam s odrážkami",
"numbered-list": "číselný seznam",
"At this time it is not possible to reply with a file so this will be sent without being a reply.": "V současné době nejde odpovědět se souborem, proto toto bude odesláno jako by to odpověď nebyla.",
"Send an encrypted reply…": "Odeslat šifrovanou odpověď …",
"Send a reply (unencrypted)…": "Odeslat odpověď (nešifrovaně) …",
"Send an encrypted message…": "Odeslat šifrovanou zprávu …",
"Send a message (unencrypted)…": "Odeslat zprávu (nešifrovaně) …",
"Unable to reply": "Není možné odpovědět",
"At this time it is not possible to reply with an emote.": "V odpovědi zatím nejde vyjádřit pocit.",
"Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) viděl %(dateTime)s",
"Replying": "Odpovídá",
"Share room": "Sdílet místnost",
"You have no historical rooms": "Nemáte žádné historické místnosti",
"System Alerts": "Systémová varování",
"To notify everyone in the room, you must be a": "Abyste mohli upozornit všechny v místnosti, musíte být",
"%(user)s is a %(userRole)s": "%(user)s je %(userRole)s",
"Muted Users": "Umlčení uživatelé",
"Internal room ID: ": "Vnitřní ID mistnosti: ",
"Room version number: ": "Číslo verze místnosti: ",
"There is a known vulnerability affecting this room.": "Pro tuto místnost existuje známa zranitelnost.",
"This room version is vulnerable to malicious modification of room state.": "Tato verze místnosti je zranitelná zlomyslnou modifikací stavu místnosti.",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "Pro zaručení integrity místnosti klikněte sem a upgradeujte místnost na nejnovější verzi.",
"Only room administrators will see this warning": "Jen administrátoři místnosti uvidí toto varování",
"You don't currently have any stickerpacks enabled": "Momentálně nemáte aktívní žádné balíčky s nálepkami",
"Add a stickerpack": "Přidat balíček s nálepkami",
"Stickerpack": "Balíček s nálepkami",
"Hide Stickers": "Skrýt nálepky",
"Show Stickers": "Zobrazit nálepky",
"In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "V šifrovaných místnostech, jako je tato, jsou URL náhledy ve výchozím nastavení zakázané, aby bylo možné zajistit, že váš domácí server nemůže shromažďovat informace o odkazech, které v této místnosti vidíte.",
"When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Když někdo ve zprávě pošle URL adresu, může být zobrazen její náhled obsahující informace jako titulek, popis a obrázek z cílové stránky.",
"Code": "Kód",
"The email field must not be blank.": "E-mail nemůže být prázdný.",
"The user name field must not be blank.": "Uživatelské jméno nemůže být prázdné.",
"The phone number field must not be blank.": "Telefonní číslo nemůže být prázdné.",
"The password field must not be blank.": "Heslo nemůže být prázdné.",
"Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie (please see our <PolicyLink>Cookie Policy</PolicyLink>).": "Prosím pomozte nám vylepšovat Riot.im odesíláním <UsageDataLink>anonymních údajů o používaní</UsageDataLink>. Na tento účel použijeme cookie (přečtěte si <PolicyLink>jak cookies používáme</PolicyLink>).",
"Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie.": "Prosím pomozte nám vylepšovat Riot.im odesíláním <UsageDataLink>anonymních údajů o používaní</UsageDataLink>. Na tento účel použijeme cookie.",
"Yes, I want to help!": "Ano, chci pomoci!",
"Please <a>contact your service administrator</a> to continue using the service.": "Please <a>contact your service administrator</a> to continue using the service.\nProsím <a>kontaktujte Vašeho administratora</a> aby jste mohli pokračovat v používání Vašeho zařízení.",
"This homeserver has hit its Monthly Active User limit.": "Tento domovský server dosáhl svého měsíčního limitu pro aktivní uživatele.",
"This homeserver has exceeded one of its resource limits.": "Tento domovský server překročil některý z limitů.",
"Please <a>contact your service administrator</a> to get this limit increased.": "Prosím <a>kontaktujte Vašeho administrátora</a> pro zvýšení tohoto limitu.",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "Tento domovský server dosáhl svého měsíčního limitu pro aktivní uživatele, proto se <b>někteří uživatelé nebudou moci přihlásit</b>.",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "Tento domovský server překročil některý z limitů, proto se <b>někteří uživatelé nebudou moci přihlásit</b>.",
"Warning: This widget might use cookies.": "Varování: tento widget může používat cookies.",
"Failed to remove widget": "Nepovedlo se odstranit widget",
"An error ocurred whilst trying to remove the widget from the room": "Při odstraňování widgetu z místnosti nastala chyba",
"Minimize apps": "Minimalizovat aplikace",
"Reload widget": "Obnovit widget",
"Popout widget": "Otevřít widget v novém okně",
"Picture": "Fotografie",
"Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Není možné načíst událost, na kterou se odpovídalo. Buď neexistuje, nebo nemáte oprávnění ji zobrazit.",
"<a>In reply to</a> <pill>": "<a>V odpovědi na</a> <pill>",
"Preparing to send logs": "Příprava na odeslání záznamů",
"Logs sent": "Záznamy odeslány",
"Failed to send logs: ": "Nepodařilo se odeslat záznamy: ",
"Submit debug logs": "Odeslat ladící záznamy",
"Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Ladící záznamy obsahují data o používání aplikace včetně Vašeho uživatelského jména, ID nebo aliasy navštívených místností a skupin a uživatelská jména jiných uživatelů. Neobsahují zprávy.",
"Riot bugs are tracked on GitHub: <a>create a GitHub issue</a>.": "Bugy Riotu jsou na Githubu: <a>vytvořit bug na Githubu</a>.",
"GitHub issue link:": "Odkaz na hlášení na GitHubu:",
"Notes:": "Poznámky:",
"Community IDs cannot be empty.": "ID komunity nemůže být prázdné.",
"Failed to indicate account erasure": "Nepovedlo se potvrdit výmaz účtu",
"This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. <b>This action is irreversible.</b>": "Toto učiní účet permanentně nepoužitelný. Nebudete se moci přihlásit a nikdo se nebude moci se stejným uživatelskym ID znovu zaregistrovat. Účet bude odstraněn ze všech místnosti a bude vymazán ze servru identity.<b>Tato akce je nevratná.</b>",
"Deactivating your account <b>does not by default cause us to forget messages you have sent.</b> If you would like us to forget your messages, please tick the box below.": "Deaktivace účtu <b>automaticky nesmaže zprávy, které jste poslali.</b> Chcete-li je smazat, zaškrtněte prosím odpovídající pole níže.",
"Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Viditelnost zpráv v Matrixu je podobná e-mailu. Výmaz Vašich zpráv znamené, že už nebudou sdíleny s žádným novým nebo neregistrovaným uživatelem, ale registrovaní uživatelé, kteří už přístup ke zprávám mají, budou stále mít přístup k jejich kopii.",
"Please forget all messages I have sent when my account is deactivated (<b>Warning:</b> this will cause future users to see an incomplete view of conversations)": "S deaktivací účtu si přeji smazat všechny mnou odeslané zprávy (<b>Pozor:</b> způsobí, že noví uživatelé uvidí nekompletní konverzace)",
"To continue, please enter your password:": "Pro pokračování, zadejte Vaše heslo:",
"password": "heslo",
"Upgrade Room Version": "Upgradeovat verzi místnosti",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Upgradování této místnosti vyžaduje uzavření současné instance místnosti a vytvoření místností nové. Pro co možná nejhladší průběh:",
"Create a new room with the same name, description and avatar": "Vytvoříme místnost se stejným jménem, popisem a avatarem",
"Update any local room aliases to point to the new room": "Aktualizujeme všechny lokální aliasy místnosti tak, aby ukazovaly na novou místnost",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Přerušíme konverzace ve staré verzi místnosti a pošleme uživatelům zprávu o přechodu do nové mistnosti",
"Put a link back to the old room at the start of the new room so people can see old messages": "Na začátek nové místnosti umístíme odkaz na starou místnost tak, aby uživatelé mohli vidět staré zprávy",
"Log out and remove encryption keys?": "Odhlásit se a odstranit šifrovací klíče?",
"Clear Storage and Sign Out": "Vymazat uložiště a odhlásit se",
"Send Logs": "Odeslat záznamy",
"Refresh": "Obnovit",
"We encountered an error trying to restore your previous session.": "V průběhu obnovování Vaší minulé relace nastala chyba.",
"Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Vymazání uložiště prohlížeče možna opraví Váš problem, zároveň se tím ale odhlásíte a historie Vašich šifrovaných konverzací se pro Vás může stát nečitelnou.",
"Share Room": "Sdílet místnost",
"Link to most recent message": "Odkaz na nejnovější zprávu",
"Share User": "Sdílet uživatele",
"Share Community": "Sdílet komunitu",
"Share Room Message": "Sdílet zprávu z místnosti",
"Link to selected message": "Odkaz na vybranou zprávu",
"COPY": "Kopírovat",
"Share Message": "Sdílet zprávu",
"Collapse Reply Thread": "Sbalit vlákno odpovědi",
"Unable to join community": "Není možné vstoupit do komunity",
"Unable to leave community": "Není možné opustit komunitu",
"Changes made to your community <bold1>name</bold1> and <bold2>avatar</bold2> might not be seen by other users for up to 30 minutes.": "Změny ve Vaší komunitě <bold1>název</bold1> a <bold2>avatar</bold2> možná nebudou viditelné pro ostatní uživatele po dobu až 30 minut.",
"Join this community": "Vstoupit do komunity",
"Leave this community": "Opustit komunitu",
"Who can join this community?": "Kdo může vstoupit do této komunity?",
"Everyone": "Všichni",
"This room is not public. You will not be able to rejoin without an invite.": "Tato místnost není veřejná. Bez pozvánky nebudete moci znovu vstoupit.",
"Can't leave Server Notices room": "Z místnosti \"Server Notices\" nejde odejit",
"This room is used for important messages from the Homeserver, so you cannot leave it.": "Tato místnost je určena pro důležité zprávy od domácího servru, a proto z ní nemůžete odejít.",
"Terms and Conditions": "Smluvní podmínky",
"To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Chcete-li nadále používat domovský server %(homeserverDomain)s, měli byste si přečíst a odsouhlasit naše smluvní podmínky.",
"Review terms and conditions": "Přečíst smluvní podmínky",
"Did you know: you can use communities to filter your Riot.im experience!": "Věděli jste, že: práci s Riot.im si můžete zpříjemnit s použitím komunit!",
"To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Pro nastavení filtru, přetáhněte obrázek komunity na pantel foltrování na leve straně obrazovky. Potom můžete kdykoliv kliknout na obrazek komunity na tomto panelu a Riot.im Vám bude zobrazovat jen místnosti a lidi z dané komunity.",
"<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.": "<showDevicesText>Zobrazit zařízení</showDevicesText>, <sendAnywayText>i tak odeslat</sendAnywayText> a nebo <cancelText>zrušit</cancelText>.",
"You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.": "Dokud si nepřečtete a neodsouhlasíte <consentLink>naše smluvní podmínky</consentLink>, nebudete moci posílat žádné zprávy.",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "Vaše zpráva nebyla odeslána, protože tento domácí server dosáhl svého měsíčního limitu pro aktivní uživatele. Prosím <a>kontaktujte Vašeho administratora</a> pro další využívání služby.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "Vaše zpráva nebyla odeslána, protože tento domácí server dosáhl limitu. Prosím <a>kontaktujte Vašeho administratora</a> pro další využívání služby.",
"%(count)s of your messages have not been sent.|one": "Vaše zpráva nebyla odeslána.",
"%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.|other": "<resendText>Znovu poslat všechny</resendText> nebo <cancelText>zrušit všechny</cancelText>. Můžete též vybrat jednotlivé zprávy pro znovu odeslání nebo zrušení.",
"%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.|one": "<resendText>Znovu poslat zprávu</resendText> nebo <cancelText>zrušit zprávu</cancelText>.",
"Clear filter": "Zrušit filtr",
"Debug Logs Submission": "Odeslání ladících záznamů",
"If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Jestli jste odeslali hlášení o chybě na GitHub, ladící záznamy nám pomohou problém najít. Ladicí záznamy obsahuji data o používání aplikate, která obsahují uživatelské jmeno, ID nebo aliasy navštívených místnosti a uživatelská jména dalších uživatelů. Neobsahují zprávy.",
"Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Soukromí je pro nás důležité a proto neshromažďujeme osobní udaje ani udaje na zakladě, kterých by Vás bylo možne identifikovat.",
"Learn more about how we use analytics.": "Dozvědět se více o tom, jak zpracováváme analytické údaje.",
"No Audio Outputs detected": "Nebyly rozpoznány žádné zvukové výstupy",
"Audio Output": "Zvukový výstup",
"Please <a>contact your service administrator</a> to continue using this service.": "Pro pokračování využívání této služby prosím <a>kontaktujte Vašeho administrátora</a>.",
"Try the app first": "Zkuste aplikaci",
"Increase performance by only loading room members on first view": "Zvýšit výkon nahráváním členů místnosti jen poprvé",
"Lazy loading members not supported": "Líné nahrávání členů není podporováno",
"Lazy loading is not supported by your current homeserver.": "Líné nahrávání není podporováno současným domácím serverem."
} }

View File

@ -260,7 +260,7 @@
"%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für alle Raum-Mitglieder (ab dem Zeitpunkt, an dem sie beigetreten sind).", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für alle Raum-Mitglieder (ab dem Zeitpunkt, an dem sie beigetreten sind).",
"%(senderName)s made future room history visible to all room members.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für: Alle Raum-Mitglieder.", "%(senderName)s made future room history visible to all room members.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für: Alle Raum-Mitglieder.",
"%(senderName)s made future room history visible to anyone.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für Alle.", "%(senderName)s made future room history visible to anyone.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für Alle.",
"%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für unbekannt (%(visibility)s).", "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s hat den zukünftigen Chatverlauf für Unbekannte sichtbar gemacht (%(visibility)s).",
"Missing room_id in request": "Fehlende room_id in Anfrage", "Missing room_id in request": "Fehlende room_id in Anfrage",
"Missing user_id in request": "Fehlende user_id in Anfrage", "Missing user_id in request": "Fehlende user_id in Anfrage",
"(not supported by this browser)": "(wird von diesem Browser nicht unterstützt)", "(not supported by this browser)": "(wird von diesem Browser nicht unterstützt)",
@ -442,7 +442,7 @@
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kannst auch einen angepassten Idantitätsserver angeben aber dies wird typischerweise Interaktionen mit anderen Nutzern auf Basis der E-Mail-Adresse verhindern.", "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kannst auch einen angepassten Idantitätsserver angeben aber dies wird typischerweise Interaktionen mit anderen Nutzern auf Basis der E-Mail-Adresse verhindern.",
"Please check your email to continue registration.": "Bitte prüfe deine E-Mails, um mit der Registrierung fortzufahren.", "Please check your email to continue registration.": "Bitte prüfe deine E-Mails, um mit der Registrierung fortzufahren.",
"Token incorrect": "Token fehlerhaft", "Token incorrect": "Token fehlerhaft",
"Please enter the code it contains:": "Bitte gebe den Code ein, den sie enthält:", "Please enter the code it contains:": "Bitte gib den darin enthaltenen Code ein:",
"powered by Matrix": "betrieben mit Matrix", "powered by Matrix": "betrieben mit Matrix",
"If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Wenn du keine E-Mail-Adresse angibst, wirst du nicht in der Lage sein, dein Passwort zurückzusetzen. Bist du sicher?", "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Wenn du keine E-Mail-Adresse angibst, wirst du nicht in der Lage sein, dein Passwort zurückzusetzen. Bist du sicher?",
"You are registering with %(SelectedTeamName)s": "Du registrierst dich mit %(SelectedTeamName)s", "You are registering with %(SelectedTeamName)s": "Du registrierst dich mit %(SelectedTeamName)s",
@ -748,7 +748,7 @@
"No rooms to show": "Keine anzeigbaren Räume", "No rooms to show": "Keine anzeigbaren Räume",
"Community Settings": "Community-Einstellungen", "Community Settings": "Community-Einstellungen",
"Who would you like to add to this community?": "Wen möchtest du zu dieser Community hinzufügen?", "Who would you like to add to this community?": "Wen möchtest du zu dieser Community hinzufügen?",
"Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warnung: Jede Person die du einer Community hinzufügst, wird für alle die die Community-ID kennen öffentlich sichtbar sein", "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warnung: Jede Person, die du einer Community hinzufügst, wird für alle, die die Community-ID kennen, öffentlich sichtbar sein",
"Invite new community members": "Neue Community-Mitglieder einladen", "Invite new community members": "Neue Community-Mitglieder einladen",
"Invite to Community": "In die Community einladen", "Invite to Community": "In die Community einladen",
"Which rooms would you like to add to this community?": "Welche Räume möchtest du zu dieser Community hinzufügen?", "Which rooms would you like to add to this community?": "Welche Räume möchtest du zu dieser Community hinzufügen?",
@ -839,7 +839,7 @@
"%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)shaben das Profilbild geändert", "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)shaben das Profilbild geändert",
"%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)shat das Profilbild %(count)s-mal geändert", "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)shat das Profilbild %(count)s-mal geändert",
"%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)shat das Profilbild geändert", "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)shat das Profilbild geändert",
"%(names)s and %(count)s others are typing|one": "%(names)s und eine weitere Person schreiben", "%(names)s and %(count)s others are typing|one": "%(names)s und noch jemand schreiben",
"Disinvite this user?": "Einladung für diesen Benutzer zurückziehen?", "Disinvite this user?": "Einladung für diesen Benutzer zurückziehen?",
"Kick this user?": "Diesen Benutzer kicken?", "Kick this user?": "Diesen Benutzer kicken?",
"Unban this user?": "Verbannung für diesen Benutzer aufheben?", "Unban this user?": "Verbannung für diesen Benutzer aufheben?",
@ -915,7 +915,7 @@
"Display your community flair in rooms configured to show it.": "Zeige deinen Community-Flair in den Räumen, die es erlauben.", "Display your community flair in rooms configured to show it.": "Zeige deinen Community-Flair in den Räumen, die es erlauben.",
"This homeserver doesn't offer any login flows which are supported by this client.": "Dieser Heimserver verfügt über keinen, von diesem Client unterstütztes Anmeldeverfahren.", "This homeserver doesn't offer any login flows which are supported by this client.": "Dieser Heimserver verfügt über keinen, von diesem Client unterstütztes Anmeldeverfahren.",
"Call Failed": "Anruf fehlgeschlagen", "Call Failed": "Anruf fehlgeschlagen",
"There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "In diesem Raum befinden sich nicht verifizierte Geräte. Wenn du ohne sie zu verifizieren fortfährst, könnten Angreifer den Anruf mithören.", "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "In diesem Raum befinden sich nicht-verifizierte Geräte. Wenn du fortfährst ohne sie zu verifizieren, könnten Angreifer den Anruf mithören.",
"Review Devices": "Geräte ansehen", "Review Devices": "Geräte ansehen",
"Call Anyway": "Trotzdem anrufen", "Call Anyway": "Trotzdem anrufen",
"Answer Anyway": "Trotzdem annehmen", "Answer Anyway": "Trotzdem annehmen",
@ -929,9 +929,9 @@
"Warning": "Warnung", "Warning": "Warnung",
"Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Es wurden Daten von einer älteren Version von Riot entdeckt. Dies wird zu Fehlern in der Ende-zu-Ende-Verschlüsselung der älteren Version geführt haben. Ende-zu-Ende verschlüsselte Nachrichten, die ausgetauscht wruden, während die ältere Version genutzt wurde, werden in dieser Version nicht entschlüsselbar sein. Es kann auch zu Fehlern mit Nachrichten führen, die mit dieser Version versendet werden. Wenn du Probleme feststellst, melde dich ab und wieder an. Um die Historie zu behalten, ex- und reimportiere deine Schlüssel.", "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Es wurden Daten von einer älteren Version von Riot entdeckt. Dies wird zu Fehlern in der Ende-zu-Ende-Verschlüsselung der älteren Version geführt haben. Ende-zu-Ende verschlüsselte Nachrichten, die ausgetauscht wruden, während die ältere Version genutzt wurde, werden in dieser Version nicht entschlüsselbar sein. Es kann auch zu Fehlern mit Nachrichten führen, die mit dieser Version versendet werden. Wenn du Probleme feststellst, melde dich ab und wieder an. Um die Historie zu behalten, ex- und reimportiere deine Schlüssel.",
"Send an encrypted reply…": "Verschlüsselte Antwort senden…", "Send an encrypted reply…": "Verschlüsselte Antwort senden…",
"Send a reply (unencrypted)…": "Antwort senden (unverschlüsselt)…", "Send a reply (unencrypted)…": "Unverschlüsselte Antwort senden…",
"Send an encrypted message…": "Verschlüsselte Nachricht senden…", "Send an encrypted message…": "Verschlüsselte Nachricht senden…",
"Send a message (unencrypted)…": "Nachricht senden (unverschlüsselt)…", "Send a message (unencrypted)…": "Unverschlüsselte Nachricht senden…",
"Replying": "Antwortet", "Replying": "Antwortet",
"Minimize apps": "Apps minimieren", "Minimize apps": "Apps minimieren",
"%(count)s of your messages have not been sent.|one": "Deine Nachricht wurde nicht gesendet.", "%(count)s of your messages have not been sent.|one": "Deine Nachricht wurde nicht gesendet.",
@ -950,7 +950,7 @@
"Community IDs cannot be empty.": "Community-IDs können nicht leer sein.", "Community IDs cannot be empty.": "Community-IDs können nicht leer sein.",
"<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.": "<showDevicesText>Geräte anzeigen</showDevicesText>, <sendAnywayText>trotzdem senden</sendAnywayText> oder <cancelText>abbrechen</cancelText>.", "<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.": "<showDevicesText>Geräte anzeigen</showDevicesText>, <sendAnywayText>trotzdem senden</sendAnywayText> oder <cancelText>abbrechen</cancelText>.",
"Learn more about how we use analytics.": "Lerne mehr darüber, wie wir die Analysedaten nutzen.", "Learn more about how we use analytics.": "Lerne mehr darüber, wie wir die Analysedaten nutzen.",
"Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Wenn diese Seite identifizierbare Informationen sowie Raum, Nutzer oder Gruppen-ID enthalten, werden diese Daten entfernt bevor sie an den Server gesendet werden.", "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Wenn diese Seite identifizierbare Informationen wie Raum, Nutzer oder Gruppen-ID enthalten, werden diese Daten entfernt bevor sie an den Server gesendet werden.",
"Whether or not you're logged in (we don't record your user name)": "Ob oder ob du nicht angemeldet bist (wir zeichnen deinen Benutzernamen nicht auf)", "Whether or not you're logged in (we don't record your user name)": "Ob oder ob du nicht angemeldet bist (wir zeichnen deinen Benutzernamen nicht auf)",
"Which officially provided instance you are using, if any": "Welche offiziell angebotene Instanz du nutzt, wenn es der Fall ist", "Which officially provided instance you are using, if any": "Welche offiziell angebotene Instanz du nutzt, wenn es der Fall ist",
"<a>In reply to</a> <pill>": "<a>Als Antwort auf</a> <pill>", "<a>In reply to</a> <pill>": "<a>Als Antwort auf</a> <pill>",
@ -1149,7 +1149,7 @@
"Always show encryption icons": "Immer Verschlüsselungssymbole zeigen", "Always show encryption icons": "Immer Verschlüsselungssymbole zeigen",
"At this time it is not possible to reply with a file so this will be sent without being a reply.": "Aktuell ist es nicht möglich mit einer Datei zu antworten, sodass diese gesendet wird ohne eine Antwort zu sein.", "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Aktuell ist es nicht möglich mit einer Datei zu antworten, sodass diese gesendet wird ohne eine Antwort zu sein.",
"Unable to reply": "Antworten nicht möglich", "Unable to reply": "Antworten nicht möglich",
"Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Das Ereignis auf das geantwortet wurde könnte nicht geladen werden, da es entweder nicht existiert oder du keine Berechtigung hast, dieses anzusehen.", "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Das Ereignis auf das geantwortet wurde konnte nicht geladen werden. Entweder es existiert nicht oder du hast keine Berechtigung, dieses anzusehen.",
"Riot bugs are tracked on GitHub: <a>create a GitHub issue</a>.": "Riot-Fehler werden auf GitHub festgehalten: <a>Erzeuge ein GitHub-Issue</a>.", "Riot bugs are tracked on GitHub: <a>create a GitHub issue</a>.": "Riot-Fehler werden auf GitHub festgehalten: <a>Erzeuge ein GitHub-Issue</a>.",
"Log out and remove encryption keys?": "Abmelden und alle Verschlüsselungs-Schlüssel löschen?", "Log out and remove encryption keys?": "Abmelden und alle Verschlüsselungs-Schlüssel löschen?",
"Send Logs": "Sende Protokoll", "Send Logs": "Sende Protokoll",
@ -1165,8 +1165,8 @@
"Reload widget": "Widget neu laden", "Reload widget": "Widget neu laden",
"To notify everyone in the room, you must be a": "Notwendiges Berechtigungslevel, um jeden im Raum zu benachrichten:", "To notify everyone in the room, you must be a": "Notwendiges Berechtigungslevel, um jeden im Raum zu benachrichten:",
"Muted Users": "Stummgeschaltete Benutzer", "Muted Users": "Stummgeschaltete Benutzer",
"Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie (please see our <PolicyLink>Cookie Policy</PolicyLink>).": "Bitte helfe uns Riot.im zu verbessern, in dem du <UsageDataLink>anonyme Nutzungsdaten</UsageDataLink> schickst. Dies wird ein Cookie benutzen (bitte beachte auch unsere <PolicyLink>Cookie-Richtlinie</PolicyLink>).", "Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie (please see our <PolicyLink>Cookie Policy</PolicyLink>).": "Bitte hilf uns Riot.im zu verbessern, in dem du <UsageDataLink>anonyme Nutzungsdaten</UsageDataLink> schickst. Dies wird ein Cookie benutzen (bitte beachte auch unsere <PolicyLink>Cookie-Richtlinie</PolicyLink>).",
"Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie.": "Bitte helfe uns Riot.im zu verbessern, in dem du <UsageDataLink>anonyme Nutzungsdaten</UsageDataLink> schickst. Dies wird ein Cookie benutzen.", "Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie.": "Bitte hilf uns Riot.im zu verbessern, in dem du <UsageDataLink>anonyme Nutzungsdaten</UsageDataLink> schickst. Dies wird ein Cookie benutzen.",
"Yes, I want to help!": "Ja, ich möchte helfen!", "Yes, I want to help!": "Ja, ich möchte helfen!",
"Warning: This widget might use cookies.": "Warnung: Diese Widget mag Cookies verwenden.", "Warning: This widget might use cookies.": "Warnung: Diese Widget mag Cookies verwenden.",
"Failed to indicate account erasure": "Fehler beim Signalisieren der Account-Löschung", "Failed to indicate account erasure": "Fehler beim Signalisieren der Account-Löschung",
@ -1221,7 +1221,7 @@
"numbered-list": "Liste mit Nummern", "numbered-list": "Liste mit Nummern",
"Failed to remove widget": "Widget konnte nicht entfernt werden", "Failed to remove widget": "Widget konnte nicht entfernt werden",
"An error ocurred whilst trying to remove the widget from the room": "Ein Fehler trat auf, während versucht wurde das Widget aus diesem Raum zu entfernen", "An error ocurred whilst trying to remove the widget from the room": "Ein Fehler trat auf, während versucht wurde das Widget aus diesem Raum zu entfernen",
"inline-code": "Quellcode im Satz", "inline-code": "Quellcode in der Zeile",
"block-quote": "Quellcode im Block", "block-quote": "Quellcode im Block",
"This homeserver has hit its Monthly Active User limit": "Dieser Heimserver hat sein Limit für monatlich aktive Nutzer erreicht", "This homeserver has hit its Monthly Active User limit": "Dieser Heimserver hat sein Limit für monatlich aktive Nutzer erreicht",
"Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen.", "Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen.",
@ -1231,5 +1231,40 @@
"Internal room ID: ": "Interne Raum-ID: ", "Internal room ID: ": "Interne Raum-ID: ",
"Room version number: ": "Raum-Versionsnummer: ", "Room version number: ": "Raum-Versionsnummer: ",
"This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "Dieser Heimserver hat sein monatliches Limit an aktiven Benutzern erreicht. Bitte <a>kontaktiere deinen Systemadministrator</a> um mit der Nutzung dieses Services fortzufahren.", "This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "Dieser Heimserver hat sein monatliches Limit an aktiven Benutzern erreicht. Bitte <a>kontaktiere deinen Systemadministrator</a> um mit der Nutzung dieses Services fortzufahren.",
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "Dieser Heimserver hat sein monatliches Limit an aktiven Benutzern erreicht. Bitte <a>kontaktiere deinen Systemadministrator</a> um dieses Limit zu erhöhen." "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "Dieser Heimserver hat sein monatliches Limit an aktiven Benutzern erreicht. Bitte <a>kontaktiere deinen Systemadministrator</a> um dieses Limit zu erhöhen.",
"There is a known vulnerability affecting this room.": "Es gibt eine bekannte Schwachstelle, die diesen Raum betrifft.",
"This room version is vulnerable to malicious modification of room state.": "Dieser Raum ist verwundbar gegenüber bösartiger Veränderung des Raum-Status.",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "Klicke hier um den Raum zur letzten Raum-Version aufzurüsten und sicherzustellen, dass die Raum-Integrität gewahrt bleibt.",
"Only room administrators will see this warning": "Nur Raum-Administratoren werden diese Nachricht sehen",
"Please <a>contact your service administrator</a> to continue using the service.": "Bitte <a>kontaktiere deinen Systemadministrator</a> um diesen Dienst weiter zu nutzen.",
"This homeserver has hit its Monthly Active User limit.": "Dieser Heimserver hat sein Limit an monatlich aktiven Nutzern erreicht.",
"This homeserver has exceeded one of its resource limits.": "Dieser Heimserver hat einen seiner Ressourcen-Limits überschritten.",
"Please <a>contact your service administrator</a> to get this limit increased.": "Bitte <a>kontaktiere deinen Systemadministrator</a> um dieses Limit zu erhöht zu bekommen.",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "Dieser Heimserver hat sein Limit an monatlich aktiven Nutzern erreicht, sodass <b>einige Nutzer sich nicht anmelden können</b>.",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "Dieser Heimserver hat einen seiner Ressourcen-Limits überschritten, sodass <b>einige Benutzer nicht in der Lage sind sich anzumelden</b>.",
"Upgrade Room Version": "Raum-Version aufrüsten",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Um diesen Raum aufzurüsten, wird der aktuelle geschlossen und ein neuer an seiner Stelle erstellt. Um den Raum-Mitgliedern die bestmögliche Erfahrung zu bieten, werden wir:",
"Create a new room with the same name, description and avatar": "Einen neuen Raum mit demselben Namen, Beschreibung und Profilbild erstellen",
"Update any local room aliases to point to the new room": "Alle lokalen Raum-Aliase aktualisieren, damit sie auf den neuen Raum zeigen",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Nutzern verbieten in dem Raum mit der alten Version zu schreiben und eine Nachricht senden, die den Nutzern rät in den neuen Raum zu wechseln",
"Put a link back to the old room at the start of the new room so people can see old messages": "Zu Beginn des neuen Raumes einen Link zum alten Raum setzen, damit Personen die alten Nachrichten sehen können",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "Deine Nachricht wurde nicht gesendet, weil dieser Heimserver sein Limit an monatlich aktiven Benutzern erreicht hat. Bitte <a>kontaktiere deinen Systemadministrator</a> um diesen Dienst weiter zu nutzen.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "Deine Nachricht wurde nicht gesendet, weil dieser Heimserver ein Ressourcen-Limit erreicht hat. Bitte <a>kontaktiere deinen Systemadministrator</a> um diesen Dienst weiter zu nutzen.",
"Please <a>contact your service administrator</a> to continue using this service.": "Bitte <a>kontaktiere deinen Systemadministrator</a> um diesen Dienst weiter zu nutzen.",
"Increase performance by only loading room members on first view": "Verbessere Performanz, indem Raum-Mitglieder erst beim ersten Ansehen geladen werden",
"Lazy loading members not supported": "Verzögertes Laden von Mitgliedern nicht unterstützt",
"Lazy loading is not supported by your current homeserver.": "Verzögertes Laden wird von deinem aktuellen Heimserver.",
"Sorry, your homeserver is too old to participate in this room.": "Sorry, dein Homeserver ist zu alt, um an diesem Raum teilzunehmen.",
"Please contact your homeserver administrator.": "Bitte setze dich mit dem Administrator deines Homeservers in Verbindung.",
"Legal": "Rechtliches",
"This room has been replaced and is no longer active.": "Dieser Raum wurde ersetzt und ist nicht länger aktiv.",
"The conversation continues here.": "Die Konversation wird hier fortgesetzt.",
"Upgrade room to version %(ver)s": "Den Raum zur Version %(ver)s aufrüsten",
"This room is a continuation of another conversation.": "Dieser Raum ist eine Fortsetzung einer anderen Konversation.",
"Click here to see older messages.": "Klicke hier um ältere Nachrichten zu sehen.",
"Failed to upgrade room": "Konnte Raum nicht aufrüsten",
"The room upgrade could not be completed": "Die Raum-Aufrüstung konnte nicht fertiggestellt werden",
"Upgrade this room to version %(version)s": "Diesen Raum zur Version %(version)s aufrüsten",
"Forces the current outbound group session in an encrypted room to be discarded": "Erzwingt, dass die aktuell ausgehende Gruppen-Sitzung in einem verschlüsseltem Raum verworfen wird",
"Error Discarding Session": "Sitzung konnte nicht verworfen werden"
} }

View File

@ -87,6 +87,9 @@
"Unable to enable Notifications": "Unable to enable Notifications", "Unable to enable Notifications": "Unable to enable Notifications",
"This email address was not found": "This email address was not found", "This email address was not found": "This email address was not found",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.",
"Registration Required": "Registration Required",
"You need to register to do this. Would you like to register now?": "You need to register to do this. Would you like to register now?",
"Register": "Register",
"Default": "Default", "Default": "Default",
"Restricted": "Restricted", "Restricted": "Restricted",
"Moderator": "Moderator", "Moderator": "Moderator",
@ -145,6 +148,7 @@
"Verified key": "Verified key", "Verified key": "Verified key",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.", "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.",
"Displays action": "Displays action", "Displays action": "Displays action",
"Forces the current outbound group session in an encrypted room to be discarded": "Forces the current outbound group session in an encrypted room to be discarded",
"Unrecognised command:": "Unrecognised command:", "Unrecognised command:": "Unrecognised command:",
"Reason": "Reason", "Reason": "Reason",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.",
@ -200,6 +204,10 @@
"Send anyway": "Send anyway", "Send anyway": "Send anyway",
"Send": "Send", "Send": "Send",
"Unnamed Room": "Unnamed Room", "Unnamed Room": "Unnamed Room",
"This homeserver has hit its Monthly Active User limit.": "This homeserver has hit its Monthly Active User limit.",
"This homeserver has exceeded one of its resource limits.": "This homeserver has exceeded one of its resource limits.",
"Please <a>contact your service administrator</a> to continue using the service.": "Please <a>contact your service administrator</a> to continue using the service.",
"Unable to connect to Homeserver. Retrying...": "Unable to connect to Homeserver. Retrying...",
"Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions",
"Not a valid Riot keyfile": "Not a valid Riot keyfile", "Not a valid Riot keyfile": "Not a valid Riot keyfile",
"Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?",
@ -407,6 +415,8 @@
"Send a reply (unencrypted)…": "Send a reply (unencrypted)…", "Send a reply (unencrypted)…": "Send a reply (unencrypted)…",
"Send an encrypted message…": "Send an encrypted message…", "Send an encrypted message…": "Send an encrypted message…",
"Send a message (unencrypted)…": "Send a message (unencrypted)…", "Send a message (unencrypted)…": "Send a message (unencrypted)…",
"This room has been replaced and is no longer active.": "This room has been replaced and is no longer active.",
"The conversation continues here.": "The conversation continues here.",
"You do not have permission to post to this room": "You do not have permission to post to this room", "You do not have permission to post to this room": "You do not have permission to post to this room",
"Turn Markdown on": "Turn Markdown on", "Turn Markdown on": "Turn Markdown on",
"Turn Markdown off": "Turn Markdown off", "Turn Markdown off": "Turn Markdown off",
@ -531,6 +541,7 @@
"Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.", "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.",
"Click here to fix": "Click here to fix", "Click here to fix": "Click here to fix",
"To send events of type <eventType/>, you must be a": "To send events of type <eventType/>, you must be a", "To send events of type <eventType/>, you must be a": "To send events of type <eventType/>, you must be a",
"Upgrade room to version %(ver)s": "Upgrade room to version %(ver)s",
"Who can access this room?": "Who can access this room?", "Who can access this room?": "Who can access this room?",
"Only people who have been invited": "Only people who have been invited", "Only people who have been invited": "Only people who have been invited",
"Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests", "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests",
@ -546,6 +557,10 @@
"Internal room ID: ": "Internal room ID: ", "Internal room ID: ": "Internal room ID: ",
"Room version number: ": "Room version number: ", "Room version number: ": "Room version number: ",
"Add a topic": "Add a topic", "Add a topic": "Add a topic",
"There is a known vulnerability affecting this room.": "There is a known vulnerability affecting this room.",
"This room version is vulnerable to malicious modification of room state.": "This room version is vulnerable to malicious modification of room state.",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "Click here to upgrade to the latest room version and ensure room integrity is protected.",
"Only room administrators will see this warning": "Only room administrators will see this warning",
"Search…": "Search…", "Search…": "Search…",
"This Room": "This Room", "This Room": "This Room",
"All Rooms": "All Rooms", "All Rooms": "All Rooms",
@ -602,6 +617,8 @@
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.",
"%(senderDisplayName)s changed the room avatar to <img/>": "%(senderDisplayName)s changed the room avatar to <img/>", "%(senderDisplayName)s changed the room avatar to <img/>": "%(senderDisplayName)s changed the room avatar to <img/>",
"This room is a continuation of another conversation.": "This room is a continuation of another conversation.",
"Click here to see older messages.": "Click here to see older messages.",
"Copied!": "Copied!", "Copied!": "Copied!",
"Failed to copy": "Failed to copy", "Failed to copy": "Failed to copy",
"Add an Integration": "Add an Integration", "Add an Integration": "Add an Integration",
@ -643,7 +660,6 @@
"Email address (optional)": "Email address (optional)", "Email address (optional)": "Email address (optional)",
"You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s", "You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s",
"Mobile phone number (optional)": "Mobile phone number (optional)", "Mobile phone number (optional)": "Mobile phone number (optional)",
"Register": "Register",
"Default server": "Default server", "Default server": "Default server",
"Custom server": "Custom server", "Custom server": "Custom server",
"Home server URL": "Home server URL", "Home server URL": "Home server URL",
@ -682,9 +698,6 @@
"A new version of Riot is available.": "A new version of Riot is available.", "A new version of Riot is available.": "A new version of Riot is available.",
"To return to your account in future you need to <u>set a password</u>": "To return to your account in future you need to <u>set a password</u>", "To return to your account in future you need to <u>set a password</u>": "To return to your account in future you need to <u>set a password</u>",
"Set Password": "Set Password", "Set Password": "Set Password",
"Please <a>contact your service administrator</a> to continue using the service.": "Please <a>contact your service administrator</a> to continue using the service.",
"This homeserver has hit its Monthly Active User limit.": "This homeserver has hit its Monthly Active User limit.",
"This homeserver has exceeded one of its resource limits.": "This homeserver has exceeded one of its resource limits.",
"Please <a>contact your service administrator</a> to get this limit increased.": "Please <a>contact your service administrator</a> to get this limit increased.", "Please <a>contact your service administrator</a> to get this limit increased.": "Please <a>contact your service administrator</a> to get this limit increased.",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.", "This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.", "This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.",
@ -864,6 +877,15 @@
"Ignore request": "Ignore request", "Ignore request": "Ignore request",
"Loading device info...": "Loading device info...", "Loading device info...": "Loading device info...",
"Encryption key request": "Encryption key request", "Encryption key request": "Encryption key request",
"Failed to upgrade room": "Failed to upgrade room",
"The room upgrade could not be completed": "The room upgrade could not be completed",
"Upgrade this room to version %(version)s": "Upgrade this room to version %(version)s",
"Upgrade Room Version": "Upgrade Room Version",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:",
"Create a new room with the same name, description and avatar": "Create a new room with the same name, description and avatar",
"Update any local room aliases to point to the new room": "Update any local room aliases to point to the new room",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room",
"Put a link back to the old room at the start of the new room so people can see old messages": "Put a link back to the old room at the start of the new room so people can see old messages",
"Sign out": "Sign out", "Sign out": "Sign out",
"Log out and remove encryption keys?": "Log out and remove encryption keys?", "Log out and remove encryption keys?": "Log out and remove encryption keys?",
"Clear Storage and Sign Out": "Clear Storage and Sign Out", "Clear Storage and Sign Out": "Clear Storage and Sign Out",
@ -1117,6 +1139,7 @@
"Lazy loading members not supported": "Lazy loading members not supported", "Lazy loading members not supported": "Lazy loading members not supported",
"Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver.", "Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver.",
"Deactivate my account": "Deactivate my account", "Deactivate my account": "Deactivate my account",
"Legal": "Legal",
"Clear Cache": "Clear Cache", "Clear Cache": "Clear Cache",
"Clear Cache and Reload": "Clear Cache and Reload", "Clear Cache and Reload": "Clear Cache and Reload",
"Updates": "Updates", "Updates": "Updates",
@ -1180,6 +1203,7 @@
"Failed to fetch avatar URL": "Failed to fetch avatar URL", "Failed to fetch avatar URL": "Failed to fetch avatar URL",
"Set a display name:": "Set a display name:", "Set a display name:": "Set a display name:",
"Upload an avatar:": "Upload an avatar:", "Upload an avatar:": "Upload an avatar:",
"Unable to query for supported registration methods": "Unable to query for supported registration methods",
"This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.", "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.",
"Missing password.": "Missing password.", "Missing password.": "Missing password.",
"Passwords don't match.": "Passwords don't match.", "Passwords don't match.": "Passwords don't match.",

View File

@ -1,10 +1,10 @@
{ {
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un mensaje de texto ha sido enviado a +%(msisdn)s. Por favor ingrese el código de verificación que lo contiene", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un mensaje de texto ha sido enviado a +%(msisdn)s. Por favor ingrese el código de verificación que lo contiene",
"%(targetName)s accepted an invitation.": "%(targetName)s ha aceptado una invitación.", "%(targetName)s accepted an invitation.": "%(targetName)s aceptó una invitación.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s ha aceptado la invitación para %(displayName)s.", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceptó la invitación para %(displayName)s.",
"Account": "Cuenta", "Account": "Cuenta",
"Access Token:": "Token de Acceso:", "Access Token:": "Token de Acceso:",
"Add email address": "Agregar correo eléctronico", "Add email address": "Añadir dirección de correo electrónico",
"Add phone number": "Agregar número telefónico", "Add phone number": "Agregar número telefónico",
"Admin": "Administrador", "Admin": "Administrador",
"Advanced": "Avanzado", "Advanced": "Avanzado",
@ -15,8 +15,8 @@
"and %(count)s others...|other": "y %(count)s otros...", "and %(count)s others...|other": "y %(count)s otros...",
"and %(count)s others...|one": "y otro...", "and %(count)s others...|one": "y otro...",
"%(names)s and %(lastPerson)s are typing": "%(names)s y %(lastPerson)s están escribiendo", "%(names)s and %(lastPerson)s are typing": "%(names)s y %(lastPerson)s están escribiendo",
"A new password must be entered.": "Una nueva clave debe ser ingresada.", "A new password must be entered.": "Debes ingresar una nueva contraseña.",
"%(senderName)s answered the call.": "%(senderName)s atendió la llamada.", "%(senderName)s answered the call.": "%(senderName)s contestó la llamada.",
"An error has occurred.": "Un error ha ocurrido.", "An error has occurred.": "Un error ha ocurrido.",
"Anyone who knows the room's link, apart from guests": "Cualquiera que sepa el enlace de la sala, salvo invitados", "Anyone who knows the room's link, apart from guests": "Cualquiera que sepa el enlace de la sala, salvo invitados",
"Anyone who knows the room's link, including guests": "Cualquiera que sepa del enlace de la sala, incluyendo los invitados", "Anyone who knows the room's link, including guests": "Cualquiera que sepa del enlace de la sala, incluyendo los invitados",
@ -24,26 +24,26 @@
"Are you sure you want to reject the invitation?": "¿Estás seguro que quieres rechazar la invitación?", "Are you sure you want to reject the invitation?": "¿Estás seguro que quieres rechazar la invitación?",
"Attachment": "Adjunto", "Attachment": "Adjunto",
"Autoplay GIFs and videos": "Reproducir automáticamente GIFs y videos", "Autoplay GIFs and videos": "Reproducir automáticamente GIFs y videos",
"%(senderName)s banned %(targetName)s.": "%(senderName)s ha bloqueado a %(targetName)s.", "%(senderName)s banned %(targetName)s.": "%(senderName)s vetó a %(targetName)s.",
"Ban": "Bloquear", "Ban": "Vetar",
"Banned users": "Usuarios bloqueados", "Banned users": "Usuarios vetados",
"Bans user with given id": "Bloquear usuario por ID", "Bans user with given id": "Veta al usuario con la ID dada",
"Blacklisted": "En lista negra", "Blacklisted": "En lista negra",
"Bulk Options": "Opciones masivas", "Bulk Options": "Opciones masivas",
"Call Timeout": "Tiempo de espera de la llamada", "Call Timeout": "Tiempo de espera de la llamada",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or <a>enable unsafe scripts</a>.": "No se puede conectar al servidor via HTTP, cuando es necesario un enlace HTTPS en la barra de direcciones de tu navegador. Ya sea usando HTTPS o <a>habilitando los scripts inseguros</a>.", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or <a>enable unsafe scripts</a>.": "No se puede conectar al servidor via HTTP, cuando es necesario un enlace HTTPS en la barra de direcciones de tu navegador. Ya sea usando HTTPS o <a>habilitando los scripts inseguros</a>.",
"Can't load user settings": "No se puede cargar las configuraciones del usuario", "Can't load user settings": "No se puede cargar las configuraciones del usuario",
"Change Password": "Cambiar clave", "Change Password": "Cambiar Contraseña",
"%(senderName)s changed their profile picture.": "%(senderName)s ha cambiado su foto de perfil.", "%(senderName)s changed their profile picture.": "%(senderName)s ha cambiado su foto de perfil.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ha cambiado el nivel de acceso de %(powerLevelDiffText)s.", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ha cambiado el nivel de acceso de %(powerLevelDiffText)s.",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s ha cambiado el nombre de la sala a %(roomName)s.", "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s cambió el nombre de la sala a %(roomName)s.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s ha cambiado el tema de la sala a \"%(topic)s\".", "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s cambió el tema a \"%(topic)s\".",
"Changes to who can read history will only apply to future messages in this room": "Cambios para quien pueda leer el historial solo serán aplicados a futuros mensajes en la sala", "Changes to who can read history will only apply to future messages in this room": "Cambios para quien pueda leer el historial solo serán aplicados a futuros mensajes en la sala",
"Changes your display nickname": "Cambia la visualización de tu apodo", "Changes your display nickname": "Cambia la visualización de tu apodo",
"Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "El cambio de contraseña restablecerá actualmente todas las claves de cifrado de extremo a extremo de todos los dispositivos, haciendo que el historial de chat cifrado sea ilegible, a menos que primero exporte las claves de la habitación y vuelva a importarlas después. En el futuro esto será mejorado.", "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "El cambio de contraseña restablecerá actualmente todas las claves de cifrado de extremo a extremo de todos los dispositivos, haciendo que el historial de chat cifrado sea ilegible, a menos que primero exporte las claves de la habitación y vuelva a importarlas después. En el futuro esto será mejorado.",
"Claimed Ed25519 fingerprint key": "Clave Ed25519 es necesaria", "Claimed Ed25519 fingerprint key": "Clave Ed25519 es necesaria",
"Clear Cache and Reload": "Borrar caché y recargar", "Clear Cache and Reload": "Borrar Caché y Recargar",
"Clear Cache": "Borrar caché", "Clear Cache": "Borrar Caché",
"Click here to fix": "Haz clic aquí para arreglar", "Click here to fix": "Haz clic aquí para arreglar",
"Click to mute audio": "Haz clic para silenciar audio", "Click to mute audio": "Haz clic para silenciar audio",
"Click to mute video": "Haz clic para silenciar video", "Click to mute video": "Haz clic para silenciar video",
@ -56,8 +56,8 @@
"Conference calling is in development and may not be reliable.": "La llamada en conferencia está en desarrollo y puede no ser fiable.", "Conference calling is in development and may not be reliable.": "La llamada en conferencia está en desarrollo y puede no ser fiable.",
"Conference calls are not supported in encrypted rooms": "Las llamadas en conferencia no son soportadas en salas cifradas", "Conference calls are not supported in encrypted rooms": "Las llamadas en conferencia no son soportadas en salas cifradas",
"Conference calls are not supported in this client": "Las llamadas en conferencia no están soportadas en este cliente", "Conference calls are not supported in this client": "Las llamadas en conferencia no están soportadas en este cliente",
"Confirm password": "Confirmar clave", "Confirm password": "Confirmar contraseña",
"Confirm your new password": "Confirma tu nueva clave", "Confirm your new password": "Confirma tu contraseña nueva",
"Continue": "Continuar", "Continue": "Continuar",
"Could not connect to the integration server": "No se pudo conectar al servidor de integración", "Could not connect to the integration server": "No se pudo conectar al servidor de integración",
"Create an account": "Crear una cuenta", "Create an account": "Crear una cuenta",
@ -75,7 +75,7 @@
"Default": "Por defecto", "Default": "Por defecto",
"Device ID": "ID del dispositivo", "Device ID": "ID del dispositivo",
"Devices": "Dispositivos", "Devices": "Dispositivos",
"Devices will not yet be able to decrypt history from before they joined the room": "Los dispositivos aun no serán capaces de descifrar el historial antes de haberse unido a la sala", "Devices will not yet be able to decrypt history from before they joined the room": "Los dispositivos todavía no podrán descifrar el historial desde antes de unirse a la sala",
"Direct chats": "Conversaciones directas", "Direct chats": "Conversaciones directas",
"Disinvite": "Deshacer invitación", "Disinvite": "Deshacer invitación",
"Display name": "Nombre para mostrar", "Display name": "Nombre para mostrar",
@ -88,12 +88,12 @@
"Email address": "Dirección de correo electrónico", "Email address": "Dirección de correo electrónico",
"Email, name or matrix ID": "Correo electrónico, nombre o Matrix ID", "Email, name or matrix ID": "Correo electrónico, nombre o Matrix ID",
"Emoji": "Emoticones", "Emoji": "Emoticones",
"Enable encryption": "Habilitar encriptación", "Enable encryption": "Habilitar cifrado",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "Los mensajes encriptados no serán visibles en navegadores que no han implementado aun la encriptación", "Encrypted messages will not be visible on clients that do not yet implement encryption": "Los mensajes cifrados no serán visibles en los clientes que aún no implementen el cifrado",
"Encrypted room": "Sala encriptada", "Encrypted room": "Sala encriptada",
"%(senderName)s ended the call.": "%(senderName)s terminó la llamada.", "%(senderName)s ended the call.": "%(senderName)s finalizó la llamada.",
"End-to-end encryption information": "Información de encriptación de extremo a extremo", "End-to-end encryption information": "Información de encriptación de extremo a extremo",
"End-to-end encryption is in beta and may not be reliable": "El cifrado de extremo a extremo está en pruebas, podría no ser fiable", "End-to-end encryption is in beta and may not be reliable": "El cifrado de extremo a extremo está en beta y puede no ser confiable",
"Enter Code": "Ingresar Código", "Enter Code": "Ingresar Código",
"Error": "Error", "Error": "Error",
"Error decrypting attachment": "Error al descifrar adjunto", "Error decrypting attachment": "Error al descifrar adjunto",
@ -104,9 +104,9 @@
"Failed to change password. Is your password correct?": "No se pudo cambiar la contraseña. ¿Está usando la correcta?", "Failed to change password. Is your password correct?": "No se pudo cambiar la contraseña. ¿Está usando la correcta?",
"Failed to change power level": "Falló al cambiar de nivel de acceso", "Failed to change power level": "Falló al cambiar de nivel de acceso",
"Failed to forget room %(errCode)s": "Falló al olvidar la sala %(errCode)s", "Failed to forget room %(errCode)s": "Falló al olvidar la sala %(errCode)s",
"Failed to join room": "Falló al unirse a la sala", "Failed to join room": "No se pudo unir a la sala",
"Failed to kick": "Falló al expulsar", "Failed to kick": "Falló al expulsar",
"Failed to leave room": "Falló al dejar la sala", "Failed to leave room": "No se pudo salir de la sala",
"Failed to load timeline position": "Falló al cargar el historico", "Failed to load timeline position": "Falló al cargar el historico",
"Failed to mute user": "Falló al silenciar el usuario", "Failed to mute user": "Falló al silenciar el usuario",
"Failed to reject invite": "Falló al rechazar invitación", "Failed to reject invite": "Falló al rechazar invitación",
@ -120,7 +120,7 @@
"Failed to toggle moderator status": "Falló al cambiar estatus de moderador", "Failed to toggle moderator status": "Falló al cambiar estatus de moderador",
"Failed to unban": "Falló al desbloquear", "Failed to unban": "Falló al desbloquear",
"Failed to upload file": "Error en el envío del fichero", "Failed to upload file": "Error en el envío del fichero",
"Failed to verify email address: make sure you clicked the link in the email": "Falló al verificar el correo electrónico: Asegúrese hacer clic en el enlace del correo", "Failed to verify email address: make sure you clicked the link in the email": "No se pudo verificar la dirección de correo electrónico: asegúrate de hacer clic en el enlace del correo electrónico",
"Failure to create room": "Fallo al crear la sala", "Failure to create room": "Fallo al crear la sala",
"Favourite": "Favorito", "Favourite": "Favorito",
"Favourites": "Favoritos", "Favourites": "Favoritos",
@ -137,36 +137,36 @@
"Hide Text Formatting Toolbar": "Ocultar barra de herramientas de formato de texto", "Hide Text Formatting Toolbar": "Ocultar barra de herramientas de formato de texto",
"Historical": "Histórico", "Historical": "Histórico",
"Homeserver is": "El servidor es", "Homeserver is": "El servidor es",
"Identity Server is": "La identidad del servidor es", "Identity Server is": "El Servidor de Identidad es",
"I have verified my email address": "He verificado mi dirección de correo electrónico", "I have verified my email address": "He verificado mi dirección de correo electrónico",
"Import E2E room keys": "Importar claves E2E de la sala", "Import E2E room keys": "Importar claves E2E de la sala",
"Incorrect verification code": "Verificación de código incorrecta", "Incorrect verification code": "Verificación de código incorrecta",
"Interface Language": "Idioma de la interfaz", "Interface Language": "Idioma de la interfaz",
"Invalid alias format": "Formato de alias inválido", "Invalid alias format": "Formato de alias inválido",
"Invalid address format": "Formato de dirección inválida", "Invalid address format": "Formato de dirección inválida",
"Invalid Email Address": "Dirección de correo electrónico inválida", "Invalid Email Address": "Dirección de Correo Electrónico Inválida",
"Invalid file%(extra)s": "Archivo inválido %(extra)s", "Invalid file%(extra)s": "Archivo inválido %(extra)s",
"%(senderName)s invited %(targetName)s.": "%(senderName)s ha invitado a %(targetName)s.", "%(senderName)s invited %(targetName)s.": "%(senderName)s invitó a %(targetName)s.",
"Invite new room members": "Invitar nuevos miembros a la sala", "Invite new room members": "Invitar nuevos miembros a la sala",
"Invites": "Invitar", "Invites": "Invitaciones",
"Invites user with given id to current room": "Invitar a usuario con ID dado a esta sala", "Invites user with given id to current room": "Invitar a usuario con ID dado a esta sala",
"'%(alias)s' is not a valid format for an address": "'%(alias)s' no es un formato válido para una dirección", "'%(alias)s' is not a valid format for an address": "'%(alias)s' no es un formato válido para una dirección",
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' no es un formato válido para un alias", "'%(alias)s' is not a valid format for an alias": "'%(alias)s' no es un formato válido para un alias",
"%(displayName)s is typing": "%(displayName)s está escribiendo", "%(displayName)s is typing": "%(displayName)s está escribiendo",
"Sign in with": "Quiero iniciar sesión con", "Sign in with": "Quiero iniciar sesión con",
"Join Room": "Unirte a la sala", "Join Room": "Unirse a la Sala",
"%(targetName)s joined the room.": "%(targetName)s se ha unido a la sala.", "%(targetName)s joined the room.": "%(targetName)s se unió a la sala.",
"Joins room with given alias": "Unirse a la sala con el alias dado", "Joins room with given alias": "Unirse a la sala con el alias dado",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s ha expulsado a %(targetName)s.", "%(senderName)s kicked %(targetName)s.": "%(senderName)s expulsó a %(targetName)s.",
"Kick": "Expulsar", "Kick": "Expulsar",
"Kicks user with given id": "Expulsar usuario con ID dado", "Kicks user with given id": "Expulsar usuario con ID dado",
"Labs": "Laboratorios", "Labs": "Laboratorios",
"Leave room": "Dejar sala", "Leave room": "Salir de la sala",
"%(targetName)s left the room.": "%(targetName)s ha dejado la sala.", "%(targetName)s left the room.": "%(targetName)s salió de la sala.",
"Local addresses for this room:": "Direcciones locales para esta sala:", "Local addresses for this room:": "Direcciones locales para esta sala:",
"Logged in as:": "Sesión iniciada como:", "Logged in as:": "Sesión iniciada como:",
"Logout": "Cerrar Sesión", "Logout": "Cerrar Sesión",
"Low priority": "Baja prioridad", "Low priority": "Prioridad baja",
"Accept": "Aceptar", "Accept": "Aceptar",
"Add": "Añadir", "Add": "Añadir",
"Admin Tools": "Herramientas de administración", "Admin Tools": "Herramientas de administración",
@ -176,10 +176,10 @@
"Default Device": "Dispositivo por defecto", "Default Device": "Dispositivo por defecto",
"Microphone": "Micrófono", "Microphone": "Micrófono",
"Camera": "Cámara", "Camera": "Cámara",
"Hide removed messages": "Ocultar mensajes borrados", "Hide removed messages": "Ocultar mensajes eliminados",
"Alias (optional)": "Alias (opcional)", "Alias (optional)": "Alias (opcional)",
"Anyone": "Cualquiera", "Anyone": "Cualquiera",
"<a>Click here</a> to join the discussion!": "¡<a>Pulse aquí</a> para unirse a la conversación!", "<a>Click here</a> to join the discussion!": "¡<a>Haz clic aquí</a> para unirte a la discusión!",
"Close": "Cerrar", "Close": "Cerrar",
"%(count)s new messages|one": "%(count)s mensaje nuevo", "%(count)s new messages|one": "%(count)s mensaje nuevo",
"%(count)s new messages|other": "%(count)s mensajes nuevos", "%(count)s new messages|other": "%(count)s mensajes nuevos",
@ -190,13 +190,13 @@
"Device already verified!": "¡El dispositivo ya ha sido verificado!", "Device already verified!": "¡El dispositivo ya ha sido verificado!",
"Device ID:": "ID del dispositivo:", "Device ID:": "ID del dispositivo:",
"device id: ": "id del dispositvo: ", "device id: ": "id del dispositvo: ",
"Disable Notifications": "Desactivar notificaciones", "Disable Notifications": "Deshabilitar Notificaciones",
"Email address (optional)": "Dirección e-mail (opcional)", "Email address (optional)": "Dirección de correo electrónico (opcional)",
"Enable Notifications": "Activar notificaciones", "Enable Notifications": "Activar notificaciones",
"Encrypted by a verified device": "Cifrado por un dispositivo verificado", "Encrypted by a verified device": "Cifrado por un dispositivo verificado",
"Encrypted by an unverified device": "Cifrado por un dispositivo sin verificar", "Encrypted by an unverified device": "Cifrado por un dispositivo sin verificar",
"Encryption is enabled in this room": "Cifrado activo en esta sala", "Encryption is enabled in this room": "El cifrado está habilitado en esta sala",
"Encryption is not enabled in this room": "Cifrado desactivado en esta sala", "Encryption is not enabled in this room": "El cifrado no está habilitado en esta sala",
"Enter passphrase": "Introduzca contraseña", "Enter passphrase": "Introduzca contraseña",
"Error: Problem communicating with the given homeserver.": "Error: No es posible comunicar con el servidor indicado.", "Error: Problem communicating with the given homeserver.": "Error: No es posible comunicar con el servidor indicado.",
"Export": "Exportar", "Export": "Exportar",
@ -204,24 +204,24 @@
"Failed to upload profile picture!": "¡Fallo al enviar la foto de perfil!", "Failed to upload profile picture!": "¡Fallo al enviar la foto de perfil!",
"Home": "Inicio", "Home": "Inicio",
"Import": "Importar", "Import": "Importar",
"Incoming call from %(name)s": "Llamada de %(name)s", "Incoming call from %(name)s": "Llamada entrante de %(name)s",
"Incoming video call from %(name)s": "Video-llamada de %(name)s", "Incoming video call from %(name)s": "Llamada de vídeo entrante de %(name)s",
"Incoming voice call from %(name)s": "Llamada telefónica de %(name)s", "Incoming voice call from %(name)s": "Llamada de voz entrante de %(name)s",
"Incorrect username and/or password.": "Usuario o contraseña incorrectos.", "Incorrect username and/or password.": "Nombre de usuario y/o contraseña incorrectos.",
"Invited": "Invitado", "Invited": "Invitado",
"Jump to first unread message.": "Ir al primer mensaje sin leer.", "Jump to first unread message.": "Ir al primer mensaje no leído.",
"Last seen": "Visto por última vez", "Last seen": "Visto por última vez",
"Level:": "Nivel:", "Level:": "Nivel:",
"%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s ha configurado el historial de la sala visible para Todos los miembros de la sala, desde el momento en que son invitados.", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que son invitados.",
"%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s ha configurado el historial de la sala visible para Todos los miembros de la sala, desde el momento en que se han unido.", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que se unieron.",
"%(senderName)s made future room history visible to all room members.": "%(senderName)s ha configurado el historial de la sala visible para Todos los miembros de la sala.", "%(senderName)s made future room history visible to all room members.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala.",
"%(senderName)s made future room history visible to anyone.": "%(senderName)s ha configurado el historial de la sala visible para nadie.", "%(senderName)s made future room history visible to anyone.": "%(senderName)s hizo visible el historial futuro de la sala para cualquier persona.",
"%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s ha configurado el historial de la sala visible para desconocido (%(visibility)s).", "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s hizo visible el historial futuro de la sala para desconocido (%(visibility)s).",
"Something went wrong!": "¡Algo ha fallado!", "Something went wrong!": "¡Algo ha fallado!",
"Please select the destination room for this message": "Por favor, seleccione la sala destino para este mensaje", "Please select the destination room for this message": "Por favor, seleccione la sala destino para este mensaje",
"Create new room": "Crear nueva sala", "Create new room": "Crear nueva sala",
"Start chat": "Comenzar chat", "Start chat": "Comenzar chat",
"New Password": "Nueva contraseña", "New Password": "Nueva Contraseña",
"Analytics": "Analíticas", "Analytics": "Analíticas",
"Options": "Opciones", "Options": "Opciones",
"Passphrases must match": "Las contraseñas deben coincidir", "Passphrases must match": "Las contraseñas deben coincidir",
@ -232,7 +232,7 @@
"File to import": "Fichero a importar", "File to import": "Fichero a importar",
"You must join the room to see its files": "Debe unirse a la sala para ver los ficheros", "You must join the room to see its files": "Debe unirse a la sala para ver los ficheros",
"Reject all %(invitedRooms)s invites": "Rechazar todas las invitaciones a %(invitedRooms)s", "Reject all %(invitedRooms)s invites": "Rechazar todas las invitaciones a %(invitedRooms)s",
"Start new chat": "Iniciar una nueva conversación", "Start new chat": "Iniciar nueva conversación",
"Failed to invite": "Fallo en la invitación", "Failed to invite": "Fallo en la invitación",
"Failed to invite user": "No se pudo invitar al usuario", "Failed to invite user": "No se pudo invitar al usuario",
"Failed to invite the following users to the %(roomName)s room:": "No se pudo invitar a los siguientes usuarios a la sala %(roomName)s:", "Failed to invite the following users to the %(roomName)s room:": "No se pudo invitar a los siguientes usuarios a la sala %(roomName)s:",
@ -255,13 +255,13 @@
"Save": "Guardar", "Save": "Guardar",
"Scroll to bottom of page": "Bajar al final de la página", "Scroll to bottom of page": "Bajar al final de la página",
"Scroll to unread messages": "Ir al primer mensaje sin leer", "Scroll to unread messages": "Ir al primer mensaje sin leer",
"Search": "Búsqueda", "Search": "Buscar",
"Search failed": "Falló la búsqueda", "Search failed": "Falló la búsqueda",
"Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s el %(dateTime)s", "Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s el %(dateTime)s",
"Send anyway": "Enviar igualmente", "Send anyway": "Enviar de todos modos",
"Sender device information": "Información del dispositivo del remitente", "Sender device information": "Información del dispositivo emisor",
"Send Invites": "Enviar invitaciones", "Send Invites": "Enviar Invitaciones",
"Send Reset Email": "Enviar e-mail de reinicio", "Send Reset Email": "Enviar Correo Electrónico de Restauración",
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s envió una imagen.", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s envió una imagen.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s invitó a %(targetDisplayName)s a unirse a la sala.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s invitó a %(targetDisplayName)s a unirse a la sala.",
"Server error": "Error del servidor", "Server error": "Error del servidor",
@ -271,13 +271,13 @@
"Server unavailable, overloaded, or something else went wrong.": "Servidor saturado, desconectado, o alguien ha roto algo.", "Server unavailable, overloaded, or something else went wrong.": "Servidor saturado, desconectado, o alguien ha roto algo.",
"Session ID": "ID de sesión", "Session ID": "ID de sesión",
"%(senderName)s set a profile picture.": "%(senderName)s puso una foto de perfil.", "%(senderName)s set a profile picture.": "%(senderName)s puso una foto de perfil.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s cambió su nombre a %(displayName)s.", "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s estableció %(displayName)s como su nombre público.",
"Settings": "Configuración", "Settings": "Ajustes",
"Show panel": "Mostrar panel", "Show panel": "Mostrar panel",
"Show Text Formatting Toolbar": "Mostrar la barra de formato de texto", "Show Text Formatting Toolbar": "Mostrar la barra de formato de texto",
"Signed Out": "Desconectado", "Signed Out": "Desconectado",
"Sign in": "Conectar", "Sign in": "Conectar",
"Sign out": "Desconectar", "Sign out": "Cerrar sesión",
"%(count)s of your messages have not been sent.|other": "Algunos de sus mensajes no han sido enviados.", "%(count)s of your messages have not been sent.|other": "Algunos de sus mensajes no han sido enviados.",
"Someone": "Alguien", "Someone": "Alguien",
"Start a chat": "Iniciar una conversación", "Start a chat": "Iniciar una conversación",
@ -297,20 +297,20 @@
"Are you sure you want to leave the room '%(roomName)s'?": "¿Está seguro de que desea abandonar la sala '%(roomName)s'?", "Are you sure you want to leave the room '%(roomName)s'?": "¿Está seguro de que desea abandonar la sala '%(roomName)s'?",
"Are you sure you want to upload the following files?": "¿Está seguro que desea enviar los siguientes archivos?", "Are you sure you want to upload the following files?": "¿Está seguro que desea enviar los siguientes archivos?",
"Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> is trusted, and that a browser extension is not blocking requests.": "No se puede conectar al servidor - compruebe su conexión, asegúrese de que el <a>certificado SSL del servidor</a> es de confiaza, y compruebe que no hay extensiones del navegador bloqueando las peticiones.", "Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> is trusted, and that a browser extension is not blocking requests.": "No se puede conectar al servidor - compruebe su conexión, asegúrese de que el <a>certificado SSL del servidor</a> es de confiaza, y compruebe que no hay extensiones del navegador bloqueando las peticiones.",
"%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s ha quitado el nombre de la sala.", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s eliminó el nombre de la sala.",
"Device key:": "Clave del dispositivo:", "Device key:": "Clave del dispositivo:",
"Drop File Here": "Deje el fichero aquí", "Drop File Here": "Deje el fichero aquí",
"Guest access is disabled on this Home Server.": "El acceso de invitados está desactivado en este servidor.", "Guest access is disabled on this Home Server.": "El acceso de invitados está desactivado en este Servidor Doméstico.",
"Join as <voiceText>voice</voiceText> or <videoText>video</videoText>.": "Conecte con <voiceText>voz</voiceText> o <videoText>vídeo</videoText>.", "Join as <voiceText>voice</voiceText> or <videoText>video</videoText>.": "Unirse con <voiceText>voz</voiceText> o <videoText>vídeo</videoText>.",
"Manage Integrations": "Gestionar integraciones", "Manage Integrations": "Gestionar integraciones",
"Markdown is disabled": "Markdown está desactivado", "Markdown is disabled": "Markdown está deshabilitado",
"Markdown is enabled": "Markdown está activado", "Markdown is enabled": "Markdown está activado",
"matrix-react-sdk version:": "Versión de matrix-react-sdk:", "matrix-react-sdk version:": "Versión de matrix-react-sdk:",
"Message not sent due to unknown devices being present": "Mensaje no enviado debido a la presencia de dispositivos desconocidos", "Message not sent due to unknown devices being present": "Mensaje no enviado debido a la presencia de dispositivos desconocidos",
"Missing room_id in request": "Falta el ID de sala en la petición", "Missing room_id in request": "Falta el ID de sala en la petición",
"Missing user_id in request": "Falta el ID de usuario en la petición", "Missing user_id in request": "Falta el ID de usuario en la petición",
"Mobile phone number": "Número de teléfono móvil", "Mobile phone number": "Número telefónico de móvil",
"Mobile phone number (optional)": "Número de teléfono móvil (opcional)", "Mobile phone number (optional)": "Número telefónico de móvil (opcional)",
"Moderator": "Moderador", "Moderator": "Moderador",
"Mute": "Silenciar", "Mute": "Silenciar",
"%(serverName)s Matrix ID": "%(serverName)s ID de Matrix", "%(serverName)s Matrix ID": "%(serverName)s ID de Matrix",
@ -331,23 +331,23 @@
"No devices with registered encryption keys": "No hay dispositivos con claves de cifrado registradas", "No devices with registered encryption keys": "No hay dispositivos con claves de cifrado registradas",
"No display name": "Sin nombre para mostrar", "No display name": "Sin nombre para mostrar",
"No more results": "No hay más resultados", "No more results": "No hay más resultados",
"No results": "Sin resultados", "No results": "No hay resultados",
"No users have specific privileges in this room": "Ningún usuario tiene permisos específicos en esta sala", "No users have specific privileges in this room": "Ningún usuario tiene permisos específicos en esta sala",
"OK": "Correcto", "OK": "Correcto",
"olm version:": "versión de olm:", "olm version:": "versión de olm:",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Una vez se active el cifrado en esta sala, no podrá ser desactivado (por ahora)", "Once encryption is enabled for a room it cannot be turned off again (for now)": "Una vez que se habilita el cifrado en una sala no se puede volver a desactivar (por ahora)",
"Only people who have been invited": "Sólo usuarios que han sido invitados", "Only people who have been invited": "Solo personas que han sido invitadas",
"Operation failed": "Falló la operación", "Operation failed": "Falló la operación",
"Password": "Contraseña", "Password": "Contraseña",
"Password:": "Contraseña:", "Password:": "Contraseña:",
"Passwords can't be empty": "Las contraseñas no pueden estar en blanco", "Passwords can't be empty": "Las contraseñas no pueden estar en blanco",
"People": "Gente", "People": "Personas",
"Permissions": "Permisos", "Permissions": "Permisos",
"Phone": "Teléfono", "Phone": "Teléfono",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s ha hecho una llamada de tipo %(callType)s.", "%(senderName)s placed a %(callType)s call.": "%(senderName)s ha hecho una llamada de tipo %(callType)s.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor, compruebe su e-mail y pulse el enlace que contiene. Una vez esté hecho, pulse continuar.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor, compruebe su e-mail y pulse el enlace que contiene. Una vez esté hecho, pulse continuar.",
"Power level must be positive integer.": "El nivel debe ser un entero positivo.", "Power level must be positive integer.": "El nivel debe ser un entero positivo.",
"Privacy warning": "Alerta de privacidad", "Privacy warning": "Advertencia de privacidad",
"Private Chat": "Conversación privada", "Private Chat": "Conversación privada",
"Privileged Users": "Usuarios con privilegios", "Privileged Users": "Usuarios con privilegios",
"Profile": "Perfil", "Profile": "Perfil",
@ -356,20 +356,20 @@
"Reason: %(reasonText)s": "Razón: %(reasonText)s", "Reason: %(reasonText)s": "Razón: %(reasonText)s",
"Revoke Moderator": "Eliminar Moderador", "Revoke Moderator": "Eliminar Moderador",
"Refer a friend to Riot:": "Informar a un amigo sobre Riot:", "Refer a friend to Riot:": "Informar a un amigo sobre Riot:",
"Register": "Registro", "Register": "Registrar",
"%(targetName)s rejected the invitation.": "%(targetName)s ha rechazado la invitación.", "%(targetName)s rejected the invitation.": "%(targetName)s rechazó la invitación.",
"Reject invitation": "Rechazar invitación", "Reject invitation": "Rechazar invitación",
"Rejoin": "Volver a unirse", "Rejoin": "Volver a unirse",
"Remote addresses for this room:": "Dirección remota de esta sala:", "Remote addresses for this room:": "Dirección remota de esta sala:",
"Remove Contact Information?": "¿Eliminar información del contacto?", "Remove Contact Information?": "¿Eliminar información del contacto?",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s ha suprimido su nombre para mostar (%(oldDisplayName)s).", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s eliminó su nombre público (%(oldDisplayName)s).",
"%(senderName)s removed their profile picture.": "%(senderName)s ha eliminado su foto de perfil.", "%(senderName)s removed their profile picture.": "%(senderName)s ha eliminado su foto de perfil.",
"Remove": "Eliminar", "Remove": "Eliminar",
"Remove %(threePid)s?": "¿Eliminar %(threePid)s?", "Remove %(threePid)s?": "¿Eliminar %(threePid)s?",
"%(senderName)s requested a VoIP conference.": "%(senderName)s ha solicitado una conferencia Voz-IP.", "%(senderName)s requested a VoIP conference.": "%(senderName)s solicitó una conferencia de vozIP.",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Reiniciar la contraseña también reiniciará las claves de cifrado extremo-a-extremo, haciendo ilegible el historial de las conversaciones, salvo que exporte previamente las claves de sala, y las importe posteriormente. Esto será mejorado en futuras versiones.", "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Reiniciar la contraseña también reiniciará las claves de cifrado extremo-a-extremo, haciendo ilegible el historial de las conversaciones, salvo que exporte previamente las claves de sala, y las importe posteriormente. Esto será mejorado en futuras versiones.",
"Results from DuckDuckGo": "Resultados desde DuckDuckGo", "Results from DuckDuckGo": "Resultados desde DuckDuckGo",
"Return to login screen": "Volver a la pantalla de inicio de sesión", "Return to login screen": "Regresar a la pantalla de inicio de sesión",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot no tiene permisos para enviarle notificaciones - por favor, revise la configuración del navegador", "Riot does not have permission to send you notifications - please check your browser settings": "Riot no tiene permisos para enviarle notificaciones - por favor, revise la configuración del navegador",
"Riot was not given permission to send notifications - please try again": "Riot no pudo obtener permisos para enviar notificaciones - por favor, inténtelo de nuevo", "Riot was not given permission to send notifications - please try again": "Riot no pudo obtener permisos para enviar notificaciones - por favor, inténtelo de nuevo",
"riot-web version:": "versión riot-web:", "riot-web version:": "versión riot-web:",
@ -378,26 +378,26 @@
"Server may be unavailable or overloaded": "El servidor podría estar saturado o desconectado", "Server may be unavailable or overloaded": "El servidor podría estar saturado o desconectado",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar el tiempo en formato 12h (am/pm)", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar el tiempo en formato 12h (am/pm)",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La clave de firma que usted ha proporcionado coincide con la recibida del dispositivo %(deviceId)s de %(userId)s. Dispositivo verificado.", "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La clave de firma que usted ha proporcionado coincide con la recibida del dispositivo %(deviceId)s de %(userId)s. Dispositivo verificado.",
"This email address is already in use": "Dirección e-mail en uso", "This email address is already in use": "Esta dirección de correo electrónico ya está en uso",
"This email address was not found": "Esta dirección de correo electrónico no se encontró", "This email address was not found": "Esta dirección de correo electrónico no se encontró",
"The email address linked to your account must be entered.": "Debe introducir el e-mail asociado a su cuenta.", "The email address linked to your account must be entered.": "Debes ingresar la dirección de correo electrónico vinculada a tu cuenta.",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' supera el tamaño máximo permitido en este servidor", "The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' supera el tamaño máximo permitido en este servidor doméstico",
"The file '%(fileName)s' failed to upload": "No se pudo subir '%(fileName)s'", "The file '%(fileName)s' failed to upload": "No se pudo subir '%(fileName)s'",
"The remote side failed to pick up": "El sitio remoto falló al sincronizar", "The remote side failed to pick up": "El lado remoto no contestó",
"This Home Server does not support login using email address.": "Este servidor no permite identificarse con direcciones e-mail.", "This Home Server does not support login using email address.": "Este Servidor Doméstico no permite identificarse con direcciones e-mail.",
"This invitation was sent to an email address which is not associated with this account:": "Se envió la invitación a un e-mail no asociado con esta cuenta:", "This invitation was sent to an email address which is not associated with this account:": "Esta invitación fue enviada a una dirección de correo electrónico que no está asociada a esta cuenta:",
"This room has no local addresses": "Esta sala no tiene direcciones locales", "This room has no local addresses": "Esta sala no tiene direcciones locales",
"This room is not recognised.": "Esta sala no se reconoce.", "This room is not recognised.": "Esta sala no se reconoce.",
"These are experimental features that may break in unexpected ways": "Estas son funcionalidades experimentales, podrían fallar de formas imprevistas", "These are experimental features that may break in unexpected ways": "Estas son funcionalidades experimentales, podrían fallar de formas imprevistas",
"The visibility of existing history will be unchanged": "La visibilidad del historial previo no se verá afectada", "The visibility of existing history will be unchanged": "La visibilidad del historial previo no se verá afectada",
"This doesn't appear to be a valid email address": "Esto no parece un e-mail váido", "This doesn't appear to be a valid email address": "Esto no parece un e-mail váido",
"This is a preview of this room. Room interactions have been disabled": "Esto es una vista previa de la sala. Las interacciones con la sala están desactivadas", "This is a preview of this room. Room interactions have been disabled": "Esta es una vista previa de esta sala. Las interacciones dentro de la sala se han deshabilitado",
"This phone number is already in use": "Este número de teléfono ya se está usando", "This phone number is already in use": "Este número de teléfono ya se está usando",
"This room": "Esta sala", "This room": "Esta sala",
"This room is not accessible by remote Matrix servers": "Esta sala no es accesible por otros servidores Matrix", "This room is not accessible by remote Matrix servers": "Esta sala no es accesible por otros servidores Matrix",
"This room's internal ID is": "El ID interno de la sala es", "This room's internal ID is": "El ID interno de la sala es",
"To link to a room it must have <a>an address</a>.": "Para enlazar una sala, debe tener <a>una dirección</a>.", "To link to a room it must have <a>an address</a>.": "Para enlazar una sala, debe tener <a>una dirección</a>.",
"To reset your password, enter the email address linked to your account": "Para reiniciar su contraseña, introduzca el e-mail asociado a su cuenta", "To reset your password, enter the email address linked to your account": "Para restablecer tu contraseña, ingresa la dirección de correo electrónico vinculada a tu cuenta",
"Cancel": "Cancelar", "Cancel": "Cancelar",
"Dismiss": "Omitir", "Dismiss": "Omitir",
"powered by Matrix": "con el poder de Matrix", "powered by Matrix": "con el poder de Matrix",
@ -405,7 +405,7 @@
"Custom Server Options": "Opciones de Servidor Personalizado", "Custom Server Options": "Opciones de Servidor Personalizado",
"unknown error code": "Código de error desconocido", "unknown error code": "Código de error desconocido",
"Start verification": "Comenzar la verificación", "Start verification": "Comenzar la verificación",
"Skip": "Saltar", "Skip": "Omitir",
"To return to your account in future you need to set a password": "Para volver a usar su cuenta en el futuro es necesario que establezca una contraseña", "To return to your account in future you need to set a password": "Para volver a usar su cuenta en el futuro es necesario que establezca una contraseña",
"Share without verifying": "Compartir sin verificar", "Share without verifying": "Compartir sin verificar",
"Ignore request": "Ignorar la solicitud", "Ignore request": "Ignorar la solicitud",
@ -427,13 +427,13 @@
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Se ha intentado cargar cierto punto en la cronología de esta sala, pero no se ha podido encontrarlo.", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Se ha intentado cargar cierto punto en la cronología de esta sala, pero no se ha podido encontrarlo.",
"Turn Markdown off": "Desactivar markdown", "Turn Markdown off": "Desactivar markdown",
"Turn Markdown on": "Activar markdown", "Turn Markdown on": "Activar markdown",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ha activado el cifrado de extremo-a-extremo (algorithm %(algorithm)s).", "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s activó el cifrado de extremo a extremo (algoritmo %(algorithm)s).",
"Unable to add email address": "No se ha podido añadir la dirección de correo electrónico", "Unable to add email address": "No es posible añadir la dirección de correo electrónico",
"Unable to create widget.": "No se ha podido crear el widget.", "Unable to create widget.": "No se ha podido crear el widget.",
"Unable to remove contact information": "No se ha podido eliminar la información de contacto", "Unable to remove contact information": "No se ha podido eliminar la información de contacto",
"Unable to verify email address.": "No se ha podido verificar la dirección de correo electrónico.", "Unable to verify email address.": "No es posible verificar la dirección de correo electrónico.",
"Unban": "Revocar bloqueo", "Unban": "Quitar Veto",
"Unbans user with given id": "Revoca el bloqueo del usuario con la identificación dada", "Unbans user with given id": "Quita el veto al usuario con la ID dada",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "No se ha podido asegurar que la dirección a la que se envió esta invitación, coincide con una asociada a su cuenta.", "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "No se ha podido asegurar que la dirección a la que se envió esta invitación, coincide con una asociada a su cuenta.",
"Unable to capture screen": "No se ha podido capturar la pantalla", "Unable to capture screen": "No se ha podido capturar la pantalla",
"Unable to enable Notifications": "No se ha podido activar las notificaciones", "Unable to enable Notifications": "No se ha podido activar las notificaciones",
@ -470,67 +470,67 @@
"Verified key": "Clave verificada", "Verified key": "Clave verificada",
"Video call": "Llamada de vídeo", "Video call": "Llamada de vídeo",
"Voice call": "Llamada de voz", "Voice call": "Llamada de voz",
"VoIP conference finished.": "Conferencia VoIP terminada.", "VoIP conference finished.": "conferencia de vozIP finalizada.",
"VoIP conference started.": "Conferencia de VoIP iniciada.", "VoIP conference started.": "conferencia de vozIP iniciada.",
"VoIP is unsupported": "No hay soporte para VoIP", "VoIP is unsupported": "No hay soporte para VoIP",
"(could not connect media)": "(no se ha podido conectar medio)", "(could not connect media)": "(no se ha podido conectar medio)",
"(no answer)": "(sin respuesta)", "(no answer)": "(sin respuesta)",
"(unknown failure: %(reason)s)": "(error desconocido: %(reason)s)", "(unknown failure: %(reason)s)": "(error desconocido: %(reason)s)",
"(warning: cannot be disabled again!)": "(aviso: ¡no se puede volver a desactivar!)", "(warning: cannot be disabled again!)": "(advertencia: ¡no se puede volver a deshabilitar!)",
"Warning!": "¡Advertencia!", "Warning!": "¡Advertencia!",
"WARNING: Device already verified, but keys do NOT MATCH!": "AVISO: Dispositivo ya verificado, ¡pero las claves NO COINCIDEN!", "WARNING: Device already verified, but keys do NOT MATCH!": "ADVERTENCIA: Dispositivo ya verificado, ¡pero las claves NO COINCIDEN!",
"Who can access this room?": "¿Quién puede acceder a esta sala?", "Who can access this room?": "¿Quién puede acceder a esta sala?",
"Who can read history?": "¿Quién puede leer el historial?", "Who can read history?": "¿Quién puede leer el historial?",
"Who would you like to add to this room?": "¿A quién quiere añadir a esta sala?", "Who would you like to add to this room?": "¿A quién quiere añadir a esta sala?",
"Who would you like to communicate with?": "¿Con quién quiere comunicarse?", "Who would you like to communicate with?": "¿Con quién quiere comunicarse?",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s ha retirado la invitación de %(targetName)s.", "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s retiró la invitación de %(targetName)s.",
"Would you like to <acceptText>accept</acceptText> or <declineText>decline</declineText> this invitation?": "¿Quiere <acceptText>aceptar</acceptText> o <declineText>rechazar</declineText> esta invitación?", "Would you like to <acceptText>accept</acceptText> or <declineText>decline</declineText> this invitation?": "¿Quiere <acceptText>aceptar</acceptText> o <declineText>rechazar</declineText> esta invitación?",
"You already have existing direct chats with this user:": "Ya tiene chats directos con este usuario:", "You already have existing direct chats with this user:": "Ya tiene conversaciones directas con este usuario:",
"You are already in a call.": "Ya está participando en una llamada.", "You are already in a call.": "Ya está participando en una llamada.",
"You are not in this room.": "Usted no está en esta sala.", "You are not in this room.": "Usted no está en esta sala.",
"You do not have permission to do that in this room.": "No tiene permiso para hacer esto en esta sala.", "You do not have permission to do that in this room.": "No tiene permiso para hacer esto en esta sala.",
"You're not in any rooms yet! Press <CreateRoomButton> to make a room or <RoomDirectoryButton> to browse the directory": "¡Todavía no participa en ninguna sala! Pulsa <CreateRoomButton> para crear una sala o <RoomDirectoryButton> para explorar el directorio", "You're not in any rooms yet! Press <CreateRoomButton> to make a room or <RoomDirectoryButton> to browse the directory": "¡Todavía no participa en ninguna sala! Pulsa <CreateRoomButton> para crear una sala o <RoomDirectoryButton> para explorar el directorio",
"You are trying to access %(roomName)s.": "Está tratando de acceder a %(roomName)s.", "You are trying to access %(roomName)s.": "Estás intentando acceder a %(roomName)s.",
"You cannot place a call with yourself.": "No puede iniciar una llamada con usted mismo.", "You cannot place a call with yourself.": "No puede iniciar una llamada con usted mismo.",
"Cannot add any more widgets": "no es posible agregar mas widgets", "Cannot add any more widgets": "no es posible agregar mas widgets",
"Do you want to load widget from URL:": "desea cargar widget desde URL:", "Do you want to load widget from URL:": "desea cargar widget desde URL:",
"Integrations Error": "error de integracion", "Integrations Error": "error de integracion",
"Publish this room to the public in %(domain)s's room directory?": "Desea publicar esta sala al publico en el directorio de sala de %(domain)s?", "Publish this room to the public in %(domain)s's room directory?": "Desea publicar esta sala al publico en el directorio de salas de %(domain)s?",
"AM": "AM", "AM": "AM",
"PM": "PM", "PM": "PM",
"NOTE: Apps are not end-to-end encrypted": "NOTA: Las Apps no son cifradas de extremo a extremo", "NOTE: Apps are not end-to-end encrypted": "NOTA: Las Apps no son cifradas de extremo a extremo",
"Revoke widget access": "Revocar acceso del widget", "Revoke widget access": "Revocar acceso del widget",
"The maximum permitted number of widgets have already been added to this room.": "La cantidad máxima de widgets permitida ha sido alcanzada en esta sala.", "The maximum permitted number of widgets have already been added to this room.": "La cantidad máxima de widgets permitida ha sido alcanzada en esta sala.",
"To use it, just wait for autocomplete results to load and tab through them.": "Para usar, solo espere a que carguen los resultados de auto-completar y navegue entre ellos.", "To use it, just wait for autocomplete results to load and tab through them.": "Para usar, solo espere a que carguen los resultados de auto-completar y navegue entre ellos.",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s levanto la suspensión de %(targetName)s.", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s le quitó el veto a %(targetName)s.",
"unencrypted": "no cifrado", "unencrypted": "no cifrado",
"Unmute": "desactivar el silencio", "Unmute": "desactivar el silencio",
"Unrecognised command:": "comando no reconocido:", "Unrecognised command:": "comando no reconocido:",
"Unrecognised room alias:": "alias de sala no reconocido:", "Unrecognised room alias:": "alias de sala no reconocido:",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nivel de permisos %(powerLevelNumber)s)", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nivel de permisos %(powerLevelNumber)s)",
"WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "Atención: VERIFICACIÓN DE CLAVE FALLO\" La clave de firma para %(userId)s y el dispositivo %(deviceId)s es \"%(fprint)s\" la cual no concuerda con la clave provista por \"%(fingerprint)s\". Esto puede significar que sus comunicaciones están siendo interceptadas!", "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ADVERTENCIA: VERIFICACIÓN DE CLAVE FALLO\" La clave de firma para %(userId)s y el dispositivo %(deviceId)s es \"%(fprint)s\" la cual no concuerda con la clave provista por \"%(fingerprint)s\". Esto puede significar que sus comunicaciones están siendo interceptadas!",
"You cannot place VoIP calls in this browser.": "No puede realizar llamadas VoIP en este navegador.", "You cannot place VoIP calls in this browser.": "No puede realizar llamadas VoIP en este navegador.",
"You do not have permission to post to this room": "no tiene permiso para publicar en esta sala", "You do not have permission to post to this room": "no tiene permiso para publicar en esta sala",
"You have been banned from %(roomName)s by %(userName)s.": "Ha sido expulsado de %(roomName)s por %(userName)s.", "You have been banned from %(roomName)s by %(userName)s.": "Ha sido expulsado de %(roomName)s por %(userName)s.",
"You have been invited to join this room by %(inviterName)s": "Ha sido invitado a entrar a esta sala por %(inviterName)s", "You have been invited to join this room by %(inviterName)s": "Ha sido invitado por %(inviterName)s a unirte a esta sala",
"You have been kicked from %(roomName)s by %(userName)s.": "Ha sido removido de %(roomName)s por %(userName)s.", "You have been kicked from %(roomName)s by %(userName)s.": "Ha sido removido de %(roomName)s por %(userName)s.",
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Ha sido desconectado de todos los dispositivos y no continuara recibiendo notificaciones. Para volver a habilitar las notificaciones, vuelva a conectarse en cada dispositivo", "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Se ha cerrado sesión en todos tus dispositivos y ya no recibirás notificaciones push. Para volver a habilitar las notificaciones, vuelve a iniciar sesión en cada dispositivo",
"You have <a>disabled</a> URL previews by default.": "Ha <a>deshabilitado</a> la vista previa de URL por defecto.", "You have <a>disabled</a> URL previews by default.": "Ha <a>deshabilitado</a> la vista previa de URL por defecto.",
"You have <a>enabled</a> URL previews by default.": "Ha <a>habilitado</a> vista previa de URL por defecto.", "You have <a>enabled</a> URL previews by default.": "Ha <a>habilitado</a> vista previa de URL por defecto.",
"You have no visible notifications": "No tiene notificaciones visibles", "You have no visible notifications": "No tiene notificaciones visibles",
"You may wish to login with a different account, or add this email to this account.": "Puede ingresar con una cuenta diferente, o agregar este e-mail a esta cuenta.", "You may wish to login with a different account, or add this email to this account.": "Quizás quieras iniciar sesión con otra cuenta, o añadir este correo electrónico a esta cuenta.",
"You must <a>register</a> to use this functionality": "Usted debe ser un <a>registrar</a> para usar esta funcionalidad", "You must <a>register</a> to use this functionality": "Usted debe ser un <a>registrar</a> para usar esta funcionalidad",
"You need to be able to invite users to do that.": "Usted debe ser capaz de invitar usuarios para hacer eso.", "You need to be able to invite users to do that.": "Usted debe ser capaz de invitar usuarios para hacer eso.",
"You need to be logged in.": "Necesita estar autenticado.", "You need to be logged in.": "Necesita estar autenticado.",
"You need to enter a user name.": "Tiene que ingresar un nombre de usuario.", "You need to enter a user name.": "Tiene que ingresar un nombre de usuario.",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Su correo electrónico parece no estar asociado con una ID de Matrix en este Homeserver.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Su correo electrónico parece no estar asociado con una ID de Matrix en este Homeserver.",
"Your password has been reset": "Su contraseña ha sido restablecida", "Your password has been reset": "Tu contraseña fue restablecida",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Su contraseña a sido cambiada exitosamente. No recibirá notificaciones en otros dispositivos hasta que ingrese de nuevo en ellos", "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Su contraseña a sido cambiada exitosamente. No recibirá notificaciones en otros dispositivos hasta que ingrese de nuevo en ellos",
"You seem to be in a call, are you sure you want to quit?": "Parece estar en medio de una llamada, ¿esta seguro que desea salir?", "You seem to be in a call, are you sure you want to quit?": "Parece estar en medio de una llamada, ¿esta seguro que desea salir?",
"You seem to be uploading files, are you sure you want to quit?": "Parece estar cargando archivos, ¿esta seguro que desea salir?", "You seem to be uploading files, are you sure you want to quit?": "Parece estar cargando archivos, ¿esta seguro que desea salir?",
"You should not yet trust it to secure data": "No debería confiarle aun para asegurar su información", "You should not yet trust it to secure data": "Aún no deberías confiar en él para proteger tus datos",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "No podrá revertir este cambio ya que esta promoviendo al usuario para tener el mismo nivel de autoridad que usted.", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "No podrá revertir este cambio ya que esta promoviendo al usuario para tener el mismo nivel de autoridad que usted.",
"Your home server does not support device management.": "Su servidor privado no suporta la gestión de dispositivos.", "Your home server does not support device management.": "Tu servidor doméstico no suporta la gestión de dispositivos.",
"Sun": "Dom", "Sun": "Dom",
"Mon": "Lun", "Mon": "Lun",
"Tue": "Mar", "Tue": "Mar",
@ -559,7 +559,7 @@
"Dec": "Dic", "Dec": "Dic",
"Warning": "Advertencia", "Warning": "Advertencia",
"Unpin Message": "Desmarcar Mensaje", "Unpin Message": "Desmarcar Mensaje",
"Online": "Conectado", "Online": "En línea",
"Submit debug logs": "Enviar registros de depuración", "Submit debug logs": "Enviar registros de depuración",
"The platform you're on": "La plataforma en la que te encuentras", "The platform you're on": "La plataforma en la que te encuentras",
"The version of Riot.im": "La versión de Riot.im", "The version of Riot.im": "La versión de Riot.im",
@ -571,7 +571,7 @@
"Drop here to demote": "Suelta aquí para degradar", "Drop here to demote": "Suelta aquí para degradar",
"Whether or not you're using the Richtext mode of the Rich Text Editor": "Estés o no usando el modo Richtext del Editor de Texto Enriquecido", "Whether or not you're using the Richtext mode of the Rich Text Editor": "Estés o no usando el modo Richtext del Editor de Texto Enriquecido",
"Who would you like to add to this community?": "¿A quién deseas añadir a esta comunidad?", "Who would you like to add to this community?": "¿A quién deseas añadir a esta comunidad?",
"Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Aviso: cualquier persona que añadas a una comunidad será públicamente visible a cualquiera que conozca el ID de la comunidad", "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Advertencia: cualquier persona que añadas a una comunidad será públicamente visible a cualquiera que conozca el ID de la comunidad",
"Invite new community members": "Invita nuevos miembros a la comunidad", "Invite new community members": "Invita nuevos miembros a la comunidad",
"Name or matrix ID": "Nombre o ID de matrix", "Name or matrix ID": "Nombre o ID de matrix",
"Invite to Community": "Invitar a la comunidad", "Invite to Community": "Invitar a la comunidad",
@ -604,9 +604,9 @@
"Leave": "Salir", "Leave": "Salir",
"Uploaded on %(date)s by %(user)s": "Subido el %(date)s por %(user)s", "Uploaded on %(date)s by %(user)s": "Subido el %(date)s por %(user)s",
"Send Custom Event": "Enviar Evento Personalizado", "Send Custom Event": "Enviar Evento Personalizado",
"All notifications are currently disabled for all targets.": "Las notificaciones estan desactivadas para todos los objetivos.", "All notifications are currently disabled for all targets.": "Las notificaciones están deshabilitadas para todos los objetivos.",
"Failed to send logs: ": "Error al enviar registros: ", "Failed to send logs: ": "Error al enviar registros: ",
"delete the alias.": "borrar el alias.", "delete the alias.": "eliminar el alias.",
"To return to your account in future you need to <u>set a password</u>": "Para regresar a tu cuenta en el futuro debes <u>establecer una contraseña</u>", "To return to your account in future you need to <u>set a password</u>": "Para regresar a tu cuenta en el futuro debes <u>establecer una contraseña</u>",
"Forget": "Olvidar", "Forget": "Olvidar",
"World readable": "Legible por todo el mundo", "World readable": "Legible por todo el mundo",
@ -614,7 +614,7 @@
"You cannot delete this image. (%(code)s)": "No puedes eliminar esta imagen. (%(code)s)", "You cannot delete this image. (%(code)s)": "No puedes eliminar esta imagen. (%(code)s)",
"Cancel Sending": "Cancelar envío", "Cancel Sending": "Cancelar envío",
"This Room": "Esta sala", "This Room": "Esta sala",
"The Home Server may be too old to support third party networks": "El Home Server puede ser demasiado antiguo para soportar redes de terceros", "The Home Server may be too old to support third party networks": "El Servidor Doméstico puede ser demasiado antiguo para soportar redes de terceros",
"Resend": "Reenviar", "Resend": "Reenviar",
"Room not found": "Sala no encontrada", "Room not found": "Sala no encontrada",
"Messages containing my display name": "Mensajes que contienen mi nombre", "Messages containing my display name": "Mensajes que contienen mi nombre",
@ -623,7 +623,7 @@
"View Decrypted Source": "Ver Fuente Descifrada", "View Decrypted Source": "Ver Fuente Descifrada",
"Failed to update keywords": "Error al actualizar las palabras clave", "Failed to update keywords": "Error al actualizar las palabras clave",
"Notes:": "Notas:", "Notes:": "Notas:",
"remove %(name)s from the directory.": "retirar %(name)s del directorio.", "remove %(name)s from the directory.": "eliminar a %(name)s del directorio.",
"Notifications on the following keywords follow rules which cant be displayed here:": "Las notificaciones de las siguientes palabras clave siguen reglas que no se pueden mostrar aquí:", "Notifications on the following keywords follow rules which cant be displayed here:": "Las notificaciones de las siguientes palabras clave siguen reglas que no se pueden mostrar aquí:",
"<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> y <operaLink>Opera</operaLink> también funcionan.", "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> y <operaLink>Opera</operaLink> también funcionan.",
"Please set a password!": "¡Por favor establece una contraseña!", "Please set a password!": "¡Por favor establece una contraseña!",
@ -636,7 +636,7 @@
"Members": "Miembros", "Members": "Miembros",
"No update available.": "No hay actualizaciones disponibles.", "No update available.": "No hay actualizaciones disponibles.",
"Noisy": "Ruidoso", "Noisy": "Ruidoso",
"Failed to get protocol list from Home Server": "Error al obtener la lista de protocolos desde el Home Server", "Failed to get protocol list from Home Server": "Error al obtener la lista de protocolos desde el Servidor Doméstico",
"Collecting app version information": "Recolectando información de la versión de la aplicación", "Collecting app version information": "Recolectando información de la versión de la aplicación",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "¿Borrar el alias de la sala %(alias)s y eliminar %(name)s del directorio?", "Delete the room alias %(alias)s and remove %(name)s from the directory?": "¿Borrar el alias de la sala %(alias)s y eliminar %(name)s del directorio?",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Esto te permitirá regresar a tu cuenta después de cerrar sesión, así como iniciar sesión en otros dispositivos.", "This will allow you to return to your account after signing out, and sign in on other devices.": "Esto te permitirá regresar a tu cuenta después de cerrar sesión, así como iniciar sesión en otros dispositivos.",
@ -644,21 +644,21 @@
"Enable notifications for this account": "Habilitar notificaciones para esta cuenta", "Enable notifications for this account": "Habilitar notificaciones para esta cuenta",
"Directory": "Directorio", "Directory": "Directorio",
"Invite to this community": "Invitar a esta comunidad", "Invite to this community": "Invitar a esta comunidad",
"Search for a room": "Buscar sala", "Search for a room": "Buscar una sala",
"Messages containing <span>keywords</span>": "Mensajes que contienen <span>palabras clave</span>", "Messages containing <span>keywords</span>": "Mensajes que contienen <span>palabras clave</span>",
"Error saving email notification preferences": "Error al guardar las preferencias de notificación por email", "Error saving email notification preferences": "Error al guardar las preferencias de notificación por email",
"Tuesday": "Martes", "Tuesday": "Martes",
"Enter keywords separated by a comma:": "Introduzca palabras clave separadas por una coma:", "Enter keywords separated by a comma:": "Introduzca palabras clave separadas por una coma:",
"Search…": "Buscar…", "Search…": "Buscar…",
"You have successfully set a password and an email address!": "¡Has establecido una nueva contraseña y dirección de correo electrónico!", "You have successfully set a password and an email address!": "¡Has establecido una nueva contraseña y dirección de correo electrónico!",
"Remove %(name)s from the directory?": "¿Retirar %(name)s del directorio?", "Remove %(name)s from the directory?": "¿Eliminar a %(name)s del directorio?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot usa muchas características avanzadas del navegador, algunas de las cuales no están disponibles en su navegador actual.", "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot usa muchas características avanzadas del navegador, algunas de las cuales no están disponibles en su navegador actual.",
"Event sent!": "Evento enviado!", "Event sent!": "Evento enviado!",
"Preparing to send logs": "Preparando para enviar registros", "Preparing to send logs": "Preparando para enviar registros",
"Enable desktop notifications": "Habilitar notificaciones de escritorio", "Enable desktop notifications": "Habilitar notificaciones de escritorio",
"Unnamed room": "Sala sin nombre", "Unnamed room": "Sala sin nombre",
"Explore Account Data": "Explorar Datos de la Cuenta", "Explore Account Data": "Explorar Datos de la Cuenta",
"Remove from Directory": "Retirar del Directorio", "Remove from Directory": "Eliminar del Directorio",
"Saturday": "Sábado", "Saturday": "Sábado",
"Remember, you can always set an email address in user settings if you change your mind.": "Recuerda que si es necesario puedes establecer una dirección de email en las preferencias de usuario.", "Remember, you can always set an email address in user settings if you change your mind.": "Recuerda que si es necesario puedes establecer una dirección de email en las preferencias de usuario.",
"Direct Chat": "Conversación directa", "Direct Chat": "Conversación directa",
@ -693,10 +693,10 @@
"Notify for all other messages/rooms": "Notificar para todos los demás mensajes/salas", "Notify for all other messages/rooms": "Notificar para todos los demás mensajes/salas",
"Unable to look up room ID from server": "No se puede buscar el ID de la sala desde el servidor", "Unable to look up room ID from server": "No se puede buscar el ID de la sala desde el servidor",
"Couldn't find a matching Matrix room": "No se encontró una sala Matrix que coincida", "Couldn't find a matching Matrix room": "No se encontró una sala Matrix que coincida",
"All Rooms": "Todas las salas", "All Rooms": "Todas las Salas",
"You cannot delete this message. (%(code)s)": "No puedes eliminar este mensaje. (%(code)s)", "You cannot delete this message. (%(code)s)": "No puedes eliminar este mensaje. (%(code)s)",
"Thursday": "Jueves", "Thursday": "Jueves",
"Forward Message": "Reenviar mensaje", "Forward Message": "Reenviar Mensaje",
"Logs sent": "Registros enviados", "Logs sent": "Registros enviados",
"Back": "Atrás", "Back": "Atrás",
"Reply": "Responder", "Reply": "Responder",
@ -710,7 +710,7 @@
"Yesterday": "Ayer", "Yesterday": "Ayer",
"Error encountered (%(errorDetail)s).": "Error encontrado (%(errorDetail)s).", "Error encountered (%(errorDetail)s).": "Error encontrado (%(errorDetail)s).",
"Login": "Iniciar sesión", "Login": "Iniciar sesión",
"Low Priority": "Baja Prioridad", "Low Priority": "Prioridad Baja",
"Riot does not know how to join a room on this network": "Riot no sabe cómo unirse a una sala en esta red", "Riot does not know how to join a room on this network": "Riot no sabe cómo unirse a una sala en esta red",
"Set Password": "Establecer contraseña", "Set Password": "Establecer contraseña",
"Enable audible notifications in web client": "Habilitar notificaciones audibles en el cliente web", "Enable audible notifications in web client": "Habilitar notificaciones audibles en el cliente web",
@ -722,7 +722,7 @@
"You can now return to your account after signing out, and sign in on other devices.": "Ahora puedes regresar a tu cuenta después de cerrar tu sesión, e iniciar sesión en otros dispositivos.", "You can now return to your account after signing out, and sign in on other devices.": "Ahora puedes regresar a tu cuenta después de cerrar tu sesión, e iniciar sesión en otros dispositivos.",
"Enable email notifications": "Habilitar notificaciones por email", "Enable email notifications": "Habilitar notificaciones por email",
"Event Type": "Tipo de Evento", "Event Type": "Tipo de Evento",
"No rooms to show": "Sin salas para mostrar", "No rooms to show": "No hay salas para mostrar",
"Download this file": "Descargar este archivo", "Download this file": "Descargar este archivo",
"Pin Message": "Marcar Mensaje", "Pin Message": "Marcar Mensaje",
"Failed to change settings": "Error al cambiar la configuración", "Failed to change settings": "Error al cambiar la configuración",
@ -773,7 +773,7 @@
"You are no longer ignoring %(userId)s": "Ya no está ignorando a %(userId)s", "You are no longer ignoring %(userId)s": "Ya no está ignorando a %(userId)s",
"Opens the Developer Tools dialog": "Abre el diálogo de Herramientas de Desarrollador", "Opens the Developer Tools dialog": "Abre el diálogo de Herramientas de Desarrollador",
"Verifies a user, device, and pubkey tuple": "Verifica a un usuario, dispositivo, y tupla de clave pública", "Verifies a user, device, and pubkey tuple": "Verifica a un usuario, dispositivo, y tupla de clave pública",
"%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s cambió su nombre visible a %(displayName)s.", "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s cambió su nombre público a %(displayName)s.",
"%(senderName)s changed the pinned messages for the room.": "%(senderName)s cambió los mensajes con chincheta en la sala.", "%(senderName)s changed the pinned messages for the room.": "%(senderName)s cambió los mensajes con chincheta en la sala.",
"%(widgetName)s widget modified by %(senderName)s": "el widget %(widgetName)s fue modificado por %(senderName)s", "%(widgetName)s widget modified by %(senderName)s": "el widget %(widgetName)s fue modificado por %(senderName)s",
"%(widgetName)s widget added by %(senderName)s": "el widget %(widgetName)s fue agregado por %(senderName)s", "%(widgetName)s widget added by %(senderName)s": "el widget %(widgetName)s fue agregado por %(senderName)s",
@ -784,43 +784,43 @@
"Not a valid Riot keyfile": "No es un archivo de claves de Riot válido", "Not a valid Riot keyfile": "No es un archivo de claves de Riot válido",
"Message Pinning": "Mensajes con chincheta", "Message Pinning": "Mensajes con chincheta",
"Jitsi Conference Calling": "Llamadas de conferencia Jitsi", "Jitsi Conference Calling": "Llamadas de conferencia Jitsi",
"Disable Emoji suggestions while typing": "Desactivar sugerencias de Emoji mientras escribe", "Disable Emoji suggestions while typing": "Deshabilitar sugerencias de Emoji mientras escribe",
"Hide avatar changes": "Ocultar cambios del avatar", "Hide avatar changes": "Ocultar cambios del avatar",
"Hide display name changes": "Ocultar cambios del nombre visible", "Hide display name changes": "Ocultar cambios del nombre visible",
"Always show encryption icons": "Mostrar siempre iconos de cifrado", "Always show encryption icons": "Mostrar siempre iconos de cifrado",
"Hide avatars in user and room mentions": "Ocultar avatares en las menciones de usuarios y salas", "Hide avatars in user and room mentions": "Ocultar avatares en las menciones de usuarios y salas",
"Disable big emoji in chat": "Desactivar emoji grande en la conversación", "Disable big emoji in chat": "Deshabilitar emoji grande en la conversación",
"Automatically replace plain text Emoji": "Sustituir automáticamente Emojis de texto", "Automatically replace plain text Emoji": "Sustituir automáticamente Emojis de texto",
"Mirror local video feed": "Clonar transmisión de video local", "Mirror local video feed": "Clonar transmisión de video local",
"Disable Community Filter Panel": "Desactivar Panel de Filtro de la Comunidad", "Disable Community Filter Panel": "Deshabilitar Panel de Filtro de la Comunidad",
"Disable Peer-to-Peer for 1:1 calls": "Desactivar pares para llamadas 1:1", "Disable Peer-to-Peer for 1:1 calls": "Deshabilitar pares para llamadas 1:1",
"Send analytics data": "Enviar información de estadísticas", "Send analytics data": "Enviar información de estadísticas",
"Enable inline URL previews by default": "Activar vistas previas de las URLs por defecto", "Enable inline URL previews by default": "Activar vistas previas de las URLs por defecto",
"Enable URL previews for this room (only affects you)": "Activar vista previa de URL en esta sala (sólo le afecta a ud.)", "Enable URL previews for this room (only affects you)": "Activar vista previa de URL en esta sala (sólo le afecta a ud.)",
"Enable URL previews by default for participants in this room": "Activar vista previa de URL por defecto para los participantes en esta sala", "Enable URL previews by default for participants in this room": "Activar vista previa de URL por defecto para los participantes en esta sala",
"Enable widget screenshots on supported widgets": "Activar capturas de pantalla de widget en los widgets soportados", "Enable widget screenshots on supported widgets": "Activar capturas de pantalla de widget en los widgets soportados",
"Show empty room list headings": "Mostrar encabezados de listas de sala vacíos", "Show empty room list headings": "Mostrar encabezados de listas de sala vacíos",
"Delete %(count)s devices|other": "Borrar %(count)s dispositivos", "Delete %(count)s devices|other": "Eliminar %(count)s dispositivos",
"Delete %(count)s devices|one": "Borrar dispositivo", "Delete %(count)s devices|one": "Eliminar dispositivo",
"Select devices": "Seleccionar dispositivos", "Select devices": "Seleccionar dispositivos",
"Drop file here to upload": "Soltar aquí el fichero a subir", "Drop file here to upload": "Soltar aquí el fichero a subir",
" (unsupported)": " (no soportado)", " (unsupported)": " (no soportado)",
"Ongoing conference call%(supportedText)s.": "Llamada de conferencia en curso%(supportedText)s", "Ongoing conference call%(supportedText)s.": "Llamada de conferencia en curso%(supportedText)s.",
"This event could not be displayed": "No se pudo mostrar este evento", "This event could not be displayed": "No se pudo mostrar este evento",
"%(senderName)s sent an image": "%(senderName)s envió una imagen", "%(senderName)s sent an image": "%(senderName)s envió una imagen",
"%(senderName)s sent a video": "%(senderName)s envió un video", "%(senderName)s sent a video": "%(senderName)s envió un vídeo",
"%(senderName)s uploaded a file": "%(senderName)s subió un fichero", "%(senderName)s uploaded a file": "%(senderName)s subió un fichero",
"Your key share request has been sent - please check your other devices for key share requests.": "Se envió su solicitud para compartir la clave - por favor, compruebe sus otros dispositivos para solicitudes de compartir clave.", "Your key share request has been sent - please check your other devices for key share requests.": "Se envió su solicitud para compartir la clave - por favor, compruebe sus otros dispositivos para solicitudes de compartir clave.",
"Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Las solicitudes para compartir la clave se envían a sus otros dispositivos automáticamente. Si rechazó o descartó la solicitud en sus otros dispositivos, pulse aquí para solicitar otra vez las claves durante esta sesión.", "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Las solicitudes para compartir la clave se envían a sus otros dispositivos automáticamente. Si rechazó o descartó la solicitud en sus otros dispositivos, pulse aquí para solicitar otra vez las claves durante esta sesión.",
"If your other devices do not have the key for this message you will not be able to decrypt them.": "Si sus otros dispositivos no tienen la clave para este mensaje no podrá descifrarlos.", "If your other devices do not have the key for this message you will not be able to decrypt them.": "Si sus otros dispositivos no tienen la clave para este mensaje no podrá descifrarlos.",
"Key request sent.": "Solicitud de clave enviada.", "Key request sent.": "Solicitud de clave enviada.",
"<requestLink>Re-request encryption keys</requestLink> from your other devices.": "<requestLink>Volver a solicitar claves de cifrado</requestLink> de sus otros dispositivos.", "<requestLink>Re-request encryption keys</requestLink> from your other devices.": "<requestLink>Volver a solicitar las claves de cifrado</requestLink> de tus otros dispositivos.",
"Encrypting": "Cifrando", "Encrypting": "Cifrando",
"Encrypted, not sent": "Cifrado, no enviado", "Encrypted, not sent": "Cifrado, no enviado",
"Disinvite this user?": "¿Dejar de invitar a este usuario?", "Disinvite this user?": "¿Dejar de invitar a este usuario?",
"Kick this user?": "¿Echar a este usuario?", "Kick this user?": "¿Echar a este usuario?",
"Unban this user?": "¿Dejar de bloquear a este usuario?", "Unban this user?": "¿Dejar de bloquear a este usuario?",
"Ban this user?": "¿Proscribir a este usuario?", "Ban this user?": "¿Vetar a este usuario?",
"Demote yourself?": "¿Degradarse a ud mismo?", "Demote yourself?": "¿Degradarse a ud mismo?",
"You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "No podrá deshacer este cambio ya que está degradándose a usted mismo, si es el usuario con menos privilegios de la sala le resultará imposible recuperarlos.", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "No podrá deshacer este cambio ya que está degradándose a usted mismo, si es el usuario con menos privilegios de la sala le resultará imposible recuperarlos.",
"Demote": "Degradar", "Demote": "Degradar",
@ -834,7 +834,7 @@
"Make Moderator": "Convertir en Moderador", "Make Moderator": "Convertir en Moderador",
"bold": "negrita", "bold": "negrita",
"italic": "cursiva", "italic": "cursiva",
"deleted": "borrado", "deleted": "eliminado",
"underlined": "subrayado", "underlined": "subrayado",
"inline-code": "código en línea", "inline-code": "código en línea",
"block-quote": "cita extensa", "block-quote": "cita extensa",
@ -855,7 +855,7 @@
"%(duration)sm": "%(duration)sm", "%(duration)sm": "%(duration)sm",
"%(duration)sh": "%(duration)sh", "%(duration)sh": "%(duration)sh",
"%(duration)sd": "%(duration)sd", "%(duration)sd": "%(duration)sd",
"Online for %(duration)s": "En línea para %(duration)s", "Online for %(duration)s": "En línea durante %(duration)s",
"Idle for %(duration)s": "En reposo durante %(duration)s", "Idle for %(duration)s": "En reposo durante %(duration)s",
"Offline for %(duration)s": "Desconectado durante %(duration)s", "Offline for %(duration)s": "Desconectado durante %(duration)s",
"Unknown for %(duration)s": "Desconocido durante %(duration)s", "Unknown for %(duration)s": "Desconocido durante %(duration)s",
@ -872,10 +872,10 @@
"Drop here to tag direct chat": "Soltar aquí para etiquetar la conversación", "Drop here to tag direct chat": "Soltar aquí para etiquetar la conversación",
"Drop here to restore": "Soltar aquí para restaurar", "Drop here to restore": "Soltar aquí para restaurar",
"Community Invites": "Invitaciones a comunidades", "Community Invites": "Invitaciones a comunidades",
"You have no historical rooms": "No tiene salas en su historial", "You have no historical rooms": "No tienes salas históricas",
"You have been kicked from this room by %(userName)s.": "Ha sido echado de esta sala por %(userName)s.", "You have been kicked from this room by %(userName)s.": "Ha sido echado de esta sala por %(userName)s.",
"You have been banned from this room by %(userName)s.": "Ha sido proscrito de esta sala por %(userName)s.", "You have been banned from this room by %(userName)s.": "Ha sido proscrito de esta sala por %(userName)s.",
"You are trying to access a room.": "Está intentando acceder a una sala.", "You are trying to access a room.": "Estás intentando acceder a una sala.",
"To change the room's avatar, you must be a": "Para cambiar el avatar de la sala, debe ser un", "To change the room's avatar, you must be a": "Para cambiar el avatar de la sala, debe ser un",
"To change the room's name, you must be a": "Para cambiar el nombre de la sala, debe ser un", "To change the room's name, you must be a": "Para cambiar el nombre de la sala, debe ser un",
"To change the room's main address, you must be a": "Para cambiar la dirección principal de la sala, debe ser un", "To change the room's main address, you must be a": "Para cambiar la dirección principal de la sala, debe ser un",
@ -883,7 +883,7 @@
"To change the permissions in the room, you must be a": "Para cambiar los permisos de la sala, debe ser un", "To change the permissions in the room, you must be a": "Para cambiar los permisos de la sala, debe ser un",
"To change the topic, you must be a": "Para cambiar el tema, debe ser un", "To change the topic, you must be a": "Para cambiar el tema, debe ser un",
"To modify widgets in the room, you must be a": "Para modificar los widgets de la sala, debe ser un", "To modify widgets in the room, you must be a": "Para modificar los widgets de la sala, debe ser un",
"Banned by %(displayName)s": "Proscrito por %(displayName)s", "Banned by %(displayName)s": "Vetado por %(displayName)s",
"To send messages, you must be a": "Para cambiar mensajes, debe ser un", "To send messages, you must be a": "Para cambiar mensajes, debe ser un",
"To invite users into the room, you must be a": "Para cambiar usuarios a la sala, debe ser un", "To invite users into the room, you must be a": "Para cambiar usuarios a la sala, debe ser un",
"To configure the room, you must be a": "Para configurar la sala, debe ser un", "To configure the room, you must be a": "Para configurar la sala, debe ser un",
@ -897,11 +897,11 @@
"Members only (since the point in time of selecting this option)": "Sólo miembros (desde el instante desde que se selecciona esta opción)", "Members only (since the point in time of selecting this option)": "Sólo miembros (desde el instante desde que se selecciona esta opción)",
"Members only (since they were invited)": "Sólo miembros (desde que fueron invitados)", "Members only (since they were invited)": "Sólo miembros (desde que fueron invitados)",
"Members only (since they joined)": "Sólo miembros (desde que se unieron)", "Members only (since they joined)": "Sólo miembros (desde que se unieron)",
"You don't currently have any stickerpacks enabled": "En este momento no tiene pegatinas activadas", "You don't currently have any stickerpacks enabled": "Actualmente no tienes ningún paquete de pegatinas habilitado",
"Add a stickerpack": "Añadir un lote de pegatinas", "Add a stickerpack": "Añadir un paquete de pegatinas",
"Stickerpack": "Lote de pegatinas", "Stickerpack": "Paquete de pegatinas",
"Hide Stickers": "Ocultar pegatinas", "Hide Stickers": "Ocultar Pegatinas",
"Show Stickers": "Mostrar pegatinas", "Show Stickers": "Mostrar Pegatinas",
"Addresses": "Direcciones", "Addresses": "Direcciones",
"Invalid community ID": "ID de comunidad no válido", "Invalid community ID": "ID de comunidad no válido",
"'%(groupId)s' is not a valid community ID": "'%(groupId)s' no es un ID de comunidad válido", "'%(groupId)s' is not a valid community ID": "'%(groupId)s' no es un ID de comunidad válido",
@ -928,13 +928,13 @@
"Message removed by %(userId)s": "Mensaje eliminado por %(userId)s", "Message removed by %(userId)s": "Mensaje eliminado por %(userId)s",
"Message removed": "Mensaje eliminado", "Message removed": "Mensaje eliminado",
"Robot check is currently unavailable on desktop - please use a <a>web browser</a>": "La comprobación de robot no está actualmente disponible en escritorio - por favor, use un <a>navegador Web</a>", "Robot check is currently unavailable on desktop - please use a <a>web browser</a>": "La comprobación de robot no está actualmente disponible en escritorio - por favor, use un <a>navegador Web</a>",
"This Home Server would like to make sure you are not a robot": "A este Home Server le gustaría asegurarse de que no es un robot", "This Home Server would like to make sure you are not a robot": "Este Servidor Doméstico quiere asegurarse de que no eres un robot",
"Sign in with CAS": "Ingresar con CAS", "Sign in with CAS": "Ingresar con CAS",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Puede usar las opciones personalizadas del servidor para ingresar en otros servidores de Matrix especificando una URL del Home server diferente.", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Puede usar las opciones personalizadas del servidor para ingresar en otros servidores de Matrix especificando una URL del Servidor Doméstico diferente.",
"This allows you to use this app with an existing Matrix account on a different home server.": "Esto le permite usar esta aplicación con una cuenta de Matrix ya existente en un home server diferente.", "This allows you to use this app with an existing Matrix account on a different home server.": "Esto le permite usar esta aplicación con una cuenta de Matrix ya existente en un servidor doméstico diferente.",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Puede también usar un servidor de identidad personalizado, pero esto habitualmente evitará la interacción con usuarios mediante dirección de correo electrónico.", "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Puede también usar un servidor de identidad personalizado, pero esto habitualmente evitará la interacción con usuarios mediante dirección de correo electrónico.",
"An email has been sent to %(emailAddress)s": "Se envió un correo electrónico a %(emailAddress)s", "An email has been sent to %(emailAddress)s": "Se envió un correo electrónico a %(emailAddress)s",
"Please check your email to continue registration.": "Por favor compruebe su correo electrónico para continuar con el registro.", "Please check your email to continue registration.": "Por favor consulta tu correo electrónico para continuar con el registro.",
"Token incorrect": "Token incorrecto", "Token incorrect": "Token incorrecto",
"A text message has been sent to %(msisdn)s": "Se envió un mensaje de texto a %(msisdn)s", "A text message has been sent to %(msisdn)s": "Se envió un mensaje de texto a %(msisdn)s",
"Please enter the code it contains:": "Por favor introduzca el código que contiene:", "Please enter the code it contains:": "Por favor introduzca el código que contiene:",
@ -948,8 +948,8 @@
"You are registering with %(SelectedTeamName)s": "Está registrándose con %(SelectedTeamName)s", "You are registering with %(SelectedTeamName)s": "Está registrándose con %(SelectedTeamName)s",
"Default server": "Servidor por defecto", "Default server": "Servidor por defecto",
"Custom server": "Servidor personalizado", "Custom server": "Servidor personalizado",
"Home server URL": "URL del Home server", "Home server URL": "URL del servidor doméstico",
"Identity server URL": "URL del servidor de Identidad", "Identity server URL": "URL del servidor de identidad",
"What does this mean?": "¿Qué significa esto?", "What does this mean?": "¿Qué significa esto?",
"Remove from community": "Eliminar de la comunidad", "Remove from community": "Eliminar de la comunidad",
"Disinvite this user from community?": "¿Quitar como invitado a este usuario de la comunidad?", "Disinvite this user from community?": "¿Quitar como invitado a este usuario de la comunidad?",
@ -959,7 +959,7 @@
"Filter community members": "Filtrar miembros de la comunidad", "Filter community members": "Filtrar miembros de la comunidad",
"Flair will appear if enabled in room settings": "La insignia aparecerá si se activa en la configuración de la sala", "Flair will appear if enabled in room settings": "La insignia aparecerá si se activa en la configuración de la sala",
"Flair will not appear": "La insignia no aparecerá", "Flair will not appear": "La insignia no aparecerá",
"Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "¿Está seguro de querer eliminar '%(roomName)s' de %(groupId)s?", "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "¿Seguro que quieres eliminar a '%(roomName)s' de %(groupId)s?",
"Removing a room from the community will also remove it from the community page.": "Al eliminar una sala de la comunidad también se eliminará de su página.", "Removing a room from the community will also remove it from the community page.": "Al eliminar una sala de la comunidad también se eliminará de su página.",
"Failed to remove room from community": "Falló la eliminación de la sala de la comunidad", "Failed to remove room from community": "Falló la eliminación de la sala de la comunidad",
"Failed to remove '%(roomName)s' from %(groupId)s": "Falló la eliminación de '%(roomName)s' de %(groupId)s", "Failed to remove '%(roomName)s' from %(groupId)s": "Falló la eliminación de '%(roomName)s' de %(groupId)s",
@ -976,7 +976,7 @@
"Yes, I want to help!": "¡Sí, quiero ayudar!", "Yes, I want to help!": "¡Sí, quiero ayudar!",
"Unknown Address": "Dirección desconocida", "Unknown Address": "Dirección desconocida",
"Warning: This widget might use cookies.": "Advertencia: Este widget puede usar cookies.", "Warning: This widget might use cookies.": "Advertencia: Este widget puede usar cookies.",
"Delete Widget": "Borrar widget", "Delete Widget": "Eliminar Componente",
"Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Al borrar un widget se elimina para todos usuarios de la sala. ¿Está seguro?", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Al borrar un widget se elimina para todos usuarios de la sala. ¿Está seguro?",
"Failed to remove widget": "Falló la eliminación del widget", "Failed to remove widget": "Falló la eliminación del widget",
"An error ocurred whilst trying to remove the widget from the room": "Ocurrió un error mientras se intentaba eliminar el widget de la sala", "An error ocurred whilst trying to remove the widget from the room": "Ocurrió un error mientras se intentaba eliminar el widget de la sala",
@ -997,7 +997,7 @@
"%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s se fueron %(count)s veces", "%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s se fueron %(count)s veces",
"%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s se fueron", "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s se fueron",
"%(oneUser)sleft %(count)s times|other": "%(oneUser)s se fue %(count)s veces", "%(oneUser)sleft %(count)s times|other": "%(oneUser)s se fue %(count)s veces",
"%(oneUser)sleft %(count)s times|one": "%(oneUser)s se fue", "%(oneUser)sleft %(count)s times|one": "%(oneUser)s salió",
"%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s se unieron y fueron %(count)s veces", "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s se unieron y fueron %(count)s veces",
"%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)s se unieron y fueron", "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)s se unieron y fueron",
"%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)s se unió y fue %(count)s veces", "%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)s se unió y fue %(count)s veces",
@ -1019,13 +1019,13 @@
"was invited %(count)s times|other": "fue invitado %(count)s veces", "was invited %(count)s times|other": "fue invitado %(count)s veces",
"was invited %(count)s times|one": "fue invitado", "was invited %(count)s times|one": "fue invitado",
"were banned %(count)s times|other": "fue proscrito %(count)s veces", "were banned %(count)s times|other": "fue proscrito %(count)s veces",
"were banned %(count)s times|one": "fueron proscritos", "were banned %(count)s times|one": "fueron vetados",
"was banned %(count)s times|other": "fue proscrito %(count)s veces", "was banned %(count)s times|other": "fue vetado %(count)s veces",
"was banned %(count)s times|one": "fue proscrito", "was banned %(count)s times|one": "fue vetado",
"were unbanned %(count)s times|other": "fueron proscritos %(count)s veces", "were unbanned %(count)s times|other": "les quitaron el veto %(count)s veces",
"were unbanned %(count)s times|one": "dejaron de ser proscritos", "were unbanned %(count)s times|one": "les quitaron el veto",
"was unbanned %(count)s times|other": "dejaron de ser proscritos %(count)s veces", "was unbanned %(count)s times|other": "se le quitó el veto %(count)s veces",
"was unbanned %(count)s times|one": "dejó de ser proscrito", "was unbanned %(count)s times|one": "se le quitó el veto",
"were kicked %(count)s times|other": "fueron echados %(count)s veces", "were kicked %(count)s times|other": "fueron echados %(count)s veces",
"were kicked %(count)s times|one": "fueron echados", "were kicked %(count)s times|one": "fueron echados",
"was kicked %(count)s times|other": "fue echado %(count)s veces", "was kicked %(count)s times|other": "fue echado %(count)s veces",
@ -1070,7 +1070,7 @@
"Create": "Crear", "Create": "Crear",
"Advanced options": "Opciones avanzadas", "Advanced options": "Opciones avanzadas",
"Block users on other matrix homeservers from joining this room": "Impedir que usuarios de otros homeservers se unan a esta sala", "Block users on other matrix homeservers from joining this room": "Impedir que usuarios de otros homeservers se unan a esta sala",
"This setting cannot be changed later!": "Este ajuste no se puede cambiar posteriormente", "This setting cannot be changed later!": "¡Este ajuste no se puede cambiar más tarde!",
"Failed to indicate account erasure": "Falló la indicación de eliminado de la cuenta", "Failed to indicate account erasure": "Falló la indicación de eliminado de la cuenta",
"This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. <b>This action is irreversible.</b>": "Una vez realizada esta acción, la cuenta no será posible utilizarla de forma permanente. No podrá ingresar con ella, y nadie será capaz de volver a registrar el mismo ID de usuario. También abandonará todas las salas en las que participaba,y eliminará los detalles del servidor de identidad. <b>Esta acción es irreversible.</b>", "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. <b>This action is irreversible.</b>": "Una vez realizada esta acción, la cuenta no será posible utilizarla de forma permanente. No podrá ingresar con ella, y nadie será capaz de volver a registrar el mismo ID de usuario. También abandonará todas las salas en las que participaba,y eliminará los detalles del servidor de identidad. <b>Esta acción es irreversible.</b>",
"Deactivating your account <b>does not by default cause us to forget messages you have sent.</b> If you would like us to forget your messages, please tick the box below.": "La desactivación de su cuenta <b>no supone por defecto que los mensajes enviados se olviden.</b> Si así lo desea, por favor, active la caja de selección inferior.", "Deactivating your account <b>does not by default cause us to forget messages you have sent.</b> If you would like us to forget your messages, please tick the box below.": "La desactivación de su cuenta <b>no supone por defecto que los mensajes enviados se olviden.</b> Si así lo desea, por favor, active la caja de selección inferior.",
@ -1084,14 +1084,14 @@
"Your unverified device '%(displayName)s' is requesting encryption keys.": "Su dispositivo sin verificar '%(displayName)s' está solicitando claves de cifrado.", "Your unverified device '%(displayName)s' is requesting encryption keys.": "Su dispositivo sin verificar '%(displayName)s' está solicitando claves de cifrado.",
"Loading device info...": "Cargando información del dispositivo...", "Loading device info...": "Cargando información del dispositivo...",
"Encryption key request": "Solicitud de clave de cifrado", "Encryption key request": "Solicitud de clave de cifrado",
"Log out and remove encryption keys?": "¿Salir y eliminar claves de cifrado?", "Log out and remove encryption keys?": "¿Cerrar sesión y eliminar claves de cifrado?",
"Clear Storage and Sign Out": "Limpiar Almacenamiento y Desconectar", "Clear Storage and Sign Out": "Borrar Almacenamiento y Cerrar Sesión",
"Send Logs": "Enviar Registros", "Send Logs": "Enviar Registros",
"Refresh": "Refrescar", "Refresh": "Refrescar",
"We encountered an error trying to restore your previous session.": "Encontramos un error al intentar restaurar su sesión anterior.", "We encountered an error trying to restore your previous session.": "Encontramos un error al intentar restaurar su sesión anterior.",
"If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si ha usado anteriormente una versión más reciente de Riot, su sesión puede ser incompatible con ésta. Cierre la ventana y vuelva a la versión más reciente.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si ha usado anteriormente una versión más reciente de Riot, su sesión puede ser incompatible con ésta. Cierre la ventana y vuelva a la versión más reciente.",
"Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Limpiando el almacenamiento del navegador puede arreglar el problema, pero le desconectará y cualquier historial de conversación cifrado se volverá ilegible.", "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Limpiando el almacenamiento del navegador puede arreglar el problema, pero le desconectará y cualquier historial de conversación cifrado se volverá ilegible.",
"User names may only contain letters, numbers, dots, hyphens and underscores.": "Los nombres de usuario pueden contener letras, números, punto, guiones y subrayado.", "User names may only contain letters, numbers, dots, hyphens and underscores.": "Los nombres de usuario solo pueden contener letras, números, puntos, guiones y guiones bajos.",
"Username not available": "Nombre de usuario no disponible", "Username not available": "Nombre de usuario no disponible",
"An error occurred: %(error_string)s": "Ocurrió un error: %(error_string)s", "An error occurred: %(error_string)s": "Ocurrió un error: %(error_string)s",
"Username available": "Nombre de usuario disponible", "Username available": "Nombre de usuario disponible",
@ -1109,7 +1109,7 @@
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contiene dispositivos que no ha visto antes.", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contiene dispositivos que no ha visto antes.",
"Unknown devices": "Dispositivos desconocidos", "Unknown devices": "Dispositivos desconocidos",
"Unable to reject invite": "No se pudo rechazar la invitación", "Unable to reject invite": "No se pudo rechazar la invitación",
"Share Message": "Compartir Mensaje", "Share Message": "Compartir mensaje",
"Collapse Reply Thread": "Colapsar Hilo de Respuestas", "Collapse Reply Thread": "Colapsar Hilo de Respuestas",
"Topic": "Tema", "Topic": "Tema",
"Make this room private": "Hacer privada esta sala", "Make this room private": "Hacer privada esta sala",
@ -1127,24 +1127,24 @@
"Add users to the community summary": "Agregar usuario al resumen de la comunidad", "Add users to the community summary": "Agregar usuario al resumen de la comunidad",
"Who would you like to add to this summary?": "¿A quién le gustaría agregar a este resumen?", "Who would you like to add to this summary?": "¿A quién le gustaría agregar a este resumen?",
"Failed to add the following users to the summary of %(groupId)s:": "Falló la adición de los usuarios siguientes al resumen de %(groupId)s:", "Failed to add the following users to the summary of %(groupId)s:": "Falló la adición de los usuarios siguientes al resumen de %(groupId)s:",
"Add a User": "Agregar un Usuario", "Add a User": "Agregar un usuario",
"Failed to remove a user from the summary of %(groupId)s": "Falló la eliminación de un usuario del resumen de %(groupId)s", "Failed to remove a user from the summary of %(groupId)s": "Falló la eliminación de un usuario del resumen de %(groupId)s",
"The user '%(displayName)s' could not be removed from the summary.": "No se pudo eliminar al usuario '%(displayName)s' del resumen.", "The user '%(displayName)s' could not be removed from the summary.": "No se pudo eliminar al usuario '%(displayName)s' del resumen.",
"Failed to upload image": "Falló la subida de la imagen", "Failed to upload image": "No se pudo cargar la imagen",
"Failed to update community": "Falló la actualización de la comunidad", "Failed to update community": "Falló la actualización de la comunidad",
"Unable to accept invite": "No se pudo aceptar la invitación", "Unable to accept invite": "No se pudo aceptar la invitación",
"Unable to join community": "No se pudo unir a comunidad", "Unable to join community": "No se pudo unir a comunidad",
"Leave Community": "Abandonar Comunidad", "Leave Community": "Salir de la Comunidad",
"Leave %(groupName)s?": "¿Abandonar %(groupName)s?", "Leave %(groupName)s?": "¿Salir de %(groupName)s?",
"Unable to leave community": "No se pudo abandonar la comunidad", "Unable to leave community": "No se pudo abandonar la comunidad",
"Community Settings": "Configuración de la Comunidad", "Community Settings": "Ajustes de Comunidad",
"Changes made to your community <bold1>name</bold1> and <bold2>avatar</bold2> might not be seen by other users for up to 30 minutes.": "Las modificaciones realizadas al <bold1>nombre</bold1> y <bold2>avatar</bold2> de la comunidad pueden no mostrarse a otros usuarios hasta dentro de 30 minutos.", "Changes made to your community <bold1>name</bold1> and <bold2>avatar</bold2> might not be seen by other users for up to 30 minutes.": "Las modificaciones realizadas al <bold1>nombre</bold1> y <bold2>avatar</bold2> de la comunidad pueden no mostrarse a otros usuarios hasta dentro de 30 minutos.",
"These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Estas salas se muestran a los miembros de la comunidad en la página de la misma. Los miembros pueden unirse a las salas pulsando sobre ellas.", "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Estas salas se muestran a los miembros de la comunidad en la página de la misma. Los miembros pueden unirse a las salas pulsando sobre ellas.",
"Featured Rooms:": "Salas Destacadas:", "Featured Rooms:": "Salas destacadas:",
"Featured Users:": "Usuarios Destacados:", "Featured Users:": "Usuarios destacados:",
"%(inviter)s has invited you to join this community": "%(inviter)s le ha invitado a unirse a esta comunidad", "%(inviter)s has invited you to join this community": "%(inviter)s te invitó a unirte a esta comunidad",
"Join this community": "Unirse a esta comunidad", "Join this community": "Unirse a esta comunidad",
"Leave this community": "Abandonar esta comunidad", "Leave this community": "Salir de esta comunidad",
"You are an administrator of this community": "Usted es un administrador de esta comunidad", "You are an administrator of this community": "Usted es un administrador de esta comunidad",
"You are a member of this community": "Usted es un miembro de esta comunidad", "You are a member of this community": "Usted es un miembro de esta comunidad",
"Who can join this community?": "¿Quién puede unirse a esta comunidad?", "Who can join this community?": "¿Quién puede unirse a esta comunidad?",
@ -1153,7 +1153,7 @@
"Long Description (HTML)": "Descripción Larga (HTML)", "Long Description (HTML)": "Descripción Larga (HTML)",
"Description": "Descripción", "Description": "Descripción",
"Community %(groupId)s not found": "No se encontraron %(groupId)s de la comunidad", "Community %(groupId)s not found": "No se encontraron %(groupId)s de la comunidad",
"This Home server does not support communities": "Este Home server no soporta comunidades", "This Home server does not support communities": "Este Servidor Doméstico no soporta comunidades",
"Failed to load %(groupId)s": "Falló la carga de %(groupId)s", "Failed to load %(groupId)s": "Falló la carga de %(groupId)s",
"This room is not public. You will not be able to rejoin without an invite.": "Esta sala no es pública. No podrá volver a unirse sin una invitación.", "This room is not public. You will not be able to rejoin without an invite.": "Esta sala no es pública. No podrá volver a unirse sin una invitación.",
"Can't leave Server Notices room": "No puede abandonar la sala Avisos del Servidor", "Can't leave Server Notices room": "No puede abandonar la sala Avisos del Servidor",
@ -1169,18 +1169,18 @@
"Error whilst fetching joined communities": "Se produjo un error al recuperar las comunidades suscritas", "Error whilst fetching joined communities": "Se produjo un error al recuperar las comunidades suscritas",
"Create a new community": "Crear una comunidad nueva", "Create a new community": "Crear una comunidad nueva",
"Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crear una comunidad para agrupar usuarios y salas. Construye una página de inicio personalizada para destacarla.", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crear una comunidad para agrupar usuarios y salas. Construye una página de inicio personalizada para destacarla.",
"<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.": "<showDevicesText>Mostrar dispositivos</showDevicesText>, <sendAnywayText>enviar de todas formas</sendAnywayText> o <cancelText>cancelar</cancelText>.", "<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.": "<showDevicesText>Mostrar dispositivos</showDevicesText>, <sendAnywayText>enviar de todos modos</sendAnywayText> o <cancelText>cancelar</cancelText>.",
"You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.": "No puede enviar ningún mensaje hasta que revise y esté de acuerdo con <consentLink>nuestros términos y condiciones</consentLink>.", "You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.": "No puede enviar ningún mensaje hasta que revise y esté de acuerdo con <consentLink>nuestros términos y condiciones</consentLink>.",
"%(count)s of your messages have not been sent.|one": "No se envió su mensaje.", "%(count)s of your messages have not been sent.|one": "No se envió su mensaje.",
"%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.|other": "<resendText>Reenviar todo</resendText> o <cancelText>cancelar todo</cancelText> ahora. También puede seleccionar mensajes sueltos o reenviar o cancelar.", "%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.|other": "<resendText>Reenviar todo</resendText> o <cancelText>cancelar todo</cancelText> ahora. También puede seleccionar mensajes sueltos o reenviar o cancelar.",
"%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.|one": "<resendText>Reemviar mensaje</resendText> o <cancelText>cancelar mensaje</cancelText> ahora.", "%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.|one": "<resendText>Reenviar mensaje</resendText> o <cancelText>cancelar mensaje</cancelText> ahora.",
"Connectivity to the server has been lost.": "Se perdió la conexión con el servidor.", "Connectivity to the server has been lost.": "Se perdió la conexión con el servidor.",
"Sent messages will be stored until your connection has returned.": "Los mensajes enviados se almacenarán hasta que vuelva su conexión.", "Sent messages will be stored until your connection has returned.": "Los mensajes enviados se almacenarán hasta que vuelva su conexión.",
"Active call": "Llamada activa", "Active call": "Llamada activa",
"There's no one else here! Would you like to <inviteText>invite others</inviteText> or <nowarnText>stop warning about the empty room</nowarnText>?": "¡No hay nadie aquí! ¿Le gustaría <inviteText>invitar a otros</inviteText> o <nowarnText>dejar de avisar de la sala vacía</nowarnText>?", "There's no one else here! Would you like to <inviteText>invite others</inviteText> or <nowarnText>stop warning about the empty room</nowarnText>?": "¡No hay nadie aquí! ¿Le gustaría <inviteText>invitar a otros</inviteText> o <nowarnText>dejar de avisar de la sala vacía</nowarnText>?",
"Room": "Sala", "Room": "Sala",
"Clear filter": "Limpiar filtro", "Clear filter": "Borrar filtro",
"Light theme": "Tema ligero", "Light theme": "Tema claro",
"Dark theme": "Tema oscuro", "Dark theme": "Tema oscuro",
"Status.im theme": "Tema Status.im", "Status.im theme": "Tema Status.im",
"Autocomplete Delay (ms):": "Retraso del completado automático (en ms):", "Autocomplete Delay (ms):": "Retraso del completado automático (en ms):",
@ -1196,7 +1196,7 @@
"Start automatically after system login": "Iniciar automáticamente después de ingresar en el sistema", "Start automatically after system login": "Iniciar automáticamente después de ingresar en el sistema",
"No Audio Outputs detected": "No se detectaron Salidas de Sonido", "No Audio Outputs detected": "No se detectaron Salidas de Sonido",
"Audio Output": "Salida de Sonido", "Audio Output": "Salida de Sonido",
"An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Se envió un correo electrónico a %(emailAddress)s. Una vez haya seguido el enlace en él, pulse debajo.", "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Se envió un correo electrónico a %(emailAddress)s. Una vez hayas seguido el enlace que contiene, haz clic a continuación.",
"Please note you are logging into the %(hs)s server, not matrix.org.": "Por favor, tenga en cuenta que está ingresando en el servidor %(hs)s, no en matrix.org.", "Please note you are logging into the %(hs)s server, not matrix.org.": "Por favor, tenga en cuenta que está ingresando en el servidor %(hs)s, no en matrix.org.",
"This homeserver doesn't offer any login flows which are supported by this client.": "Este homeserver no ofrece flujos de ingreso soportados por este cliente.", "This homeserver doesn't offer any login flows which are supported by this client.": "Este homeserver no ofrece flujos de ingreso soportados por este cliente.",
"Try the app first": "Probar primero la app", "Try the app first": "Probar primero la app",
@ -1206,9 +1206,9 @@
"This server does not support authentication with a phone number.": "Este servidor no soporta autenticación mediante número de teléfono.", "This server does not support authentication with a phone number.": "Este servidor no soporta autenticación mediante número de teléfono.",
"Missing password.": "Falta la contraseña.", "Missing password.": "Falta la contraseña.",
"Passwords don't match.": "Las contraseñas no coinciden.", "Passwords don't match.": "Las contraseñas no coinciden.",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "La contraseña es demasiado corta (mín %(MIN_PASSWORD_LENGTH)s).", "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Contraseña demasiado corta (mínimo %(MIN_PASSWORD_LENGTH)s).",
"This doesn't look like a valid email address.": "Ésta no parece una dirección de correo electrónico válida.", "This doesn't look like a valid email address.": "Esto no parece ser una dirección de correo electrónico válida.",
"This doesn't look like a valid phone number.": "Éste no parece un número de teléfono válido.", "This doesn't look like a valid phone number.": "Esto no parece ser un número telefónico válido.",
"An unknown error occurred.": "Ocurrió un error desconocido.", "An unknown error occurred.": "Ocurrió un error desconocido.",
"I already have an account": "Ya tengo una cuenta", "I already have an account": "Ya tengo una cuenta",
"Notify the whole room": "Notificar a toda la sala", "Notify the whole room": "Notificar a toda la sala",
@ -1216,5 +1216,43 @@
"This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Este proceso le permite exportar las claves para los mensajes que haya recibido en salas cifradas a un fichero local. Entonces podrá importar el fichero en otro cliente de Matrix en el futuro, de modo que dicho cliente será capaz de descifrar dichos mensajes.", "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Este proceso le permite exportar las claves para los mensajes que haya recibido en salas cifradas a un fichero local. Entonces podrá importar el fichero en otro cliente de Matrix en el futuro, de modo que dicho cliente será capaz de descifrar dichos mensajes.",
"The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "El fichero exportado permitirá a cualquiera que pueda leerlo la tarea de descifrar todo mensaje cifrado que usted pueda ver, así que debe ser cuidadoso en mantenerlo seguro. Para ayudarle, debería introducir una contraseña debajo, la cual usará para cifrar la información exportada. Sólo será posible importar dicha información usando la misma contraseña.", "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "El fichero exportado permitirá a cualquiera que pueda leerlo la tarea de descifrar todo mensaje cifrado que usted pueda ver, así que debe ser cuidadoso en mantenerlo seguro. Para ayudarle, debería introducir una contraseña debajo, la cual usará para cifrar la información exportada. Sólo será posible importar dicha información usando la misma contraseña.",
"This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este proceso permite importar claves de cifrado que había exportado previamente desde otro cliente de Matrix. Entonces será capaz de descifrar todos los mensajes que el otro cliente así hacía.", "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este proceso permite importar claves de cifrado que había exportado previamente desde otro cliente de Matrix. Entonces será capaz de descifrar todos los mensajes que el otro cliente así hacía.",
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "El fichero de exportación se protegerá con una contraseña. Debería introducir aquí la contraseña para descifrar el fichero." "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "El fichero de exportación se protegerá con una contraseña. Debería introducir aquí la contraseña para descifrar el fichero.",
"Internal room ID: ": "ID interno de la sala: ",
"Room version number: ": "Número de versión de la sala: ",
"There is a known vulnerability affecting this room.": "Hay una vulnerabilidad conocida que afecta a esta sala.",
"This room version is vulnerable to malicious modification of room state.": "La versión de esta sala es vulnerable a la modificación maliciosa de su estado.",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "Pulse aquí para actualizar a la última versión de la sala y garantizar que se protege su integridad.",
"Only room administrators will see this warning": "Sólo los administradores de la sala verán esta advertencia",
"Please <a>contact your service administrator</a> to continue using the service.": "Por favor <a>contacte con su administrador del servicio</a> para continuar usándolo.",
"This homeserver has hit its Monthly Active User limit.": "Este servidor doméstico ha alcanzado su límite de Usuarios Activos Mensual.",
"This homeserver has exceeded one of its resource limits.": "Este servidor doméstico ha superado uno de sus límites de recursos.",
"Please <a>contact your service administrator</a> to get this limit increased.": "Por favor, <a>contacte con su administrador del servicio</a> para incrementar este límite.",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "Este servidor doméstico ha alcanzado su límite de Usuarios Activos Mensual por lo que <b>algunos usuarios no podrán ingresar</b>.",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "Este servidor doméstico ha excedido uno de sus límites de recursos por lo que <b>algunos usuarios no podrán ingresar</b>.",
"Upgrade Room Version": "Actualizar Versión de la Sala",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "La actualización esta sala requiere cerrar la instancia actual de la misma y crear una nueva en su lugar. Para ofrecer a los miembros de la sala la mejor experiencia posible, haremos:",
"Create a new room with the same name, description and avatar": "Crear una sala nueva con el mismo nombre, descripción y avatar",
"Update any local room aliases to point to the new room": "Actualizar los alias locales de la sala para que apunten a la nueva",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Impedir a los usuarios que conversen en la versión antigua de la sala, y publicar un mensaje aconsejándoles que se muden a la nueva",
"Put a link back to the old room at the start of the new room so people can see old messages": "Poner un enlace de retorno a la sala antigua al principio de la nueva de modo que se puedan ver los mensajes viejos",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "Su mensaje no se pudo enviar porque el servidor doméstico ha alcanzado el Límite Mensual de Usuarios Activos. Por favor <a>contacte con su administrador del servicio</a> para continuar usando el servicio.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "Su mensaje no se envió porque este servidor doméstico ha excedido un límite de recursos. Por favor <a>contacte con su administrador del servicio</a> para continuar usando el servicio.",
"Please <a>contact your service administrator</a> to continue using this service.": "Por favor <a>contacte con su administrador del servicio</a> para continuar usando este servicio.",
"Increase performance by only loading room members on first view": "Incrementar el rendimiento cargando sólo los miembros de la sala en la primera vista",
"Lazy loading members not supported": "No se admite la carga diferida de miembros",
"Lazy loading is not supported by your current homeserver.": "La carga lenta no está soportada por su servidor doméstico actual.",
"System Alerts": "Alertas de Sistema",
"Forces the current outbound group session in an encrypted room to be discarded": "Obliga a que la sesión de salida grupal actual en una sala cifrada se descarte",
"Error Discarding Session": "Error al Descartar la Sesión",
"Sorry, your homeserver is too old to participate in this room.": "Lo sentimos, tu servidor doméstico es demasiado antiguo para participar en esta sala.",
"Please contact your homeserver administrator.": "Por favor contacta al administrador de tu servidor doméstico.",
"This room has been replaced and is no longer active.": "Esta sala ha sido reemplazada y ya no está activa.",
"The conversation continues here.": "La conversación continúa aquí.",
"Upgrade room to version %(ver)s": "Actualiza la sala a la versión %(ver)s",
"This room is a continuation of another conversation.": "Esta sala es la continuación de otra conversación.",
"Click here to see older messages.": "Haz clic aquí para ver mensajes más antiguos.",
"Failed to upgrade room": "No se pudo actualizar la sala",
"The room upgrade could not be completed": "La actualización de la sala no pudo ser completada",
"Upgrade this room to version %(version)s": "Actualiza esta sala a la versión %(version)s",
"Legal": "Legal"
} }

View File

@ -1231,5 +1231,40 @@
"Internal room ID: ": "Gelaren barne IDa: ", "Internal room ID: ": "Gelaren barne IDa: ",
"Room version number: ": "Gelaren bertsio zenbakia: ", "Room version number: ": "Gelaren bertsio zenbakia: ",
"This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "Hasiera zerbitzari honek hileko erabiltzaile aktiboen muga jo du. <a>Jarri zerbitzuaren administratzailearekin kontaktuan</a> zerbitzua erabiltzen jarraitzeko.", "This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "Hasiera zerbitzari honek hileko erabiltzaile aktiboen muga jo du. <a>Jarri zerbitzuaren administratzailearekin kontaktuan</a> zerbitzua erabiltzen jarraitzeko.",
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "Hasiera zerbitzari honek hileko erabiltzaile aktiboen muga jo du eta ezin izango duzu saioa hasi. <a>Jarri zerbitzuaren administratzailearekin kontaktuan</a> muga hau handitu dezan." "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "Hasiera zerbitzari honek hileko erabiltzaile aktiboen muga jo du eta ezin izango duzu saioa hasi. <a>Jarri zerbitzuaren administratzailearekin kontaktuan</a> muga hau handitu dezan.",
"Sorry, your homeserver is too old to participate in this room.": "Zure hasiera-zerbitzaria zaharregia da gela honetan parte hartzeko.",
"Please contact your homeserver administrator.": "Jarri zure hasiera-zerbitzariaren administratzailearekin kontaktuan.",
"Increase performance by only loading room members on first view": "Hobetu errendimendua gelako kideak lehen ikustaldian besterik ez kargatuz",
"This room has been replaced and is no longer active.": "Gela hau ordeztu da eta ez dago aktibo jada.",
"The conversation continues here.": "Elkarrizketak hemen darrai.",
"Upgrade room to version %(ver)s": "Eguneratu gela %(ver)s bertsiora",
"There is a known vulnerability affecting this room.": "Gela honi eragiten dion ahulezia ezagun bat dago.",
"This room version is vulnerable to malicious modification of room state.": "Gela bertsio honek gelaren egoera gaiztoki aldatzea baimentzen duen ahulezia bat du.",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "Sakatu hemen gela azken bertsiora eguneratzeko eta gelaren osotasuna babestuta dagoela egiaztatzeko.",
"Only room administrators will see this warning": "Gelaren administratzaileek besterik ez dute abisu hau ikusiko",
"This room is a continuation of another conversation.": "Gela hau aurreko elkarrizketa baten jarraipena da.",
"Click here to see older messages.": "Egin klik hemen mezu zaharrak ikusteko.",
"Please <a>contact your service administrator</a> to continue using the service.": "<a>Jarri kontaktuan zerbitzuaren administratzailearekin</a> zerbitzu hau erabiltzen jarraitzeko.",
"This homeserver has hit its Monthly Active User limit.": "Hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga gainditu du.",
"This homeserver has exceeded one of its resource limits.": "Hasiera zerbitzari honek bere baliabide mugetako bat gainditu du.",
"Please <a>contact your service administrator</a> to get this limit increased.": "<a>Jarri kontaktuan zerbitzuaren administratzailearekin</a> muga hau areagotzeko.",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "Hasiera zerbitzari honek hilabeteko erabiltzaile aktiboen muga jo du <b>erabiltzaile batzuk ezin izango dute saioa hasi</b>.",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "Hasiera zerbitzari honek bere baliabide mugetako bat jo du <b>erabiltzaile batzuk ezin izango dute saioa hasi</b>.",
"Failed to upgrade room": "Huts egin du gela eguneratzea",
"The room upgrade could not be completed": "Ezin izan da gelaren eguneraketa osatu",
"Upgrade this room to version %(version)s": "Eguneratu gela hau %(version)s bertsiora",
"Upgrade Room Version": "Eguneratu gelaren bertsioa",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Gela hau eguneratzeak instantzian uneko gela itxi eta berri bat sortzea dakar. Erabiltzaileei ahalik eta esperientzia onena emateko hau egingo dugu:",
"Create a new room with the same name, description and avatar": "Izen, deskripzio eta abatar bereko beste gela bat sortu",
"Update any local room aliases to point to the new room": "Tokiko gelaren ezizen guztiak gela berrira apuntatu ditzaten eguneratu",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Erabiltzaileei gelaren bertsio zaharrean hitz egiten jarraitzea eragotzi, eta erabiltzaileei gela berrira mugitzea aholkatzeko mezu bat bidali",
"Put a link back to the old room at the start of the new room so people can see old messages": "Gela berriaren hasieran gela zaharrera esteka bat jarri jendeak mezu zaharrak ikus ditzan",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "Zure mezua ez da bidali zure hasiera zerbitzariak hilabeteko erabiltzaile aktiboen muga jo duelako. <a>Jarri kontaktuan zerbitzuaren administratzailearekin</a> zerbitzua erabiltzen jarraitzeko.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "Zure mezua ez da bidali zure hasiera zerbitzariak baliabide mugaren bat jo duelako. <a>Jarri kontaktuan zerbitzuaren administratzailearekin</a> zerbitzua erabiltzen jarraitzeko.",
"Lazy loading members not supported": "Kideen karga alferrerako euskarririk ez",
"Lazy loading is not supported by your current homeserver.": "Zure hasiera zerbitzariak ez du onartzen karga alferra.",
"Legal": "Legezkoa",
"Please <a>contact your service administrator</a> to continue using this service.": "<a>Jarri kontaktuan zerbitzuaren administratzailearekin</a> zerbitzu hau erabiltzen jarraitzeko.",
"Forces the current outbound group session in an encrypted room to be discarded": "Uneko irteerako talde saioa zifratutako gela batean baztertzera behartzen du",
"Error Discarding Session": "Errorea saioa baztertzean"
} }

View File

@ -1231,5 +1231,43 @@
"This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez <a>contacter l'administrateur de votre service</a> pour continuer à l'utiliser.", "This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez <a>contacter l'administrateur de votre service</a> pour continuer à l'utiliser.",
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs donc certains utilisateurs ne pourront pas se connecter. Veuillez <a>contacter l'administrateur de votre service</a> pour augmenter cette limite.", "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs donc certains utilisateurs ne pourront pas se connecter. Veuillez <a>contacter l'administrateur de votre service</a> pour augmenter cette limite.",
"Internal room ID: ": "Identifiant interne du salon : ", "Internal room ID: ": "Identifiant interne du salon : ",
"Room version number: ": "Numéro de version du salon : " "Room version number: ": "Numéro de version du salon : ",
"There is a known vulnerability affecting this room.": "Ce salon est touché par une faille de sécurité connue.",
"This room version is vulnerable to malicious modification of room state.": "Ce salon est vulnérable à la modification malveillante de l'état du salon.",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "Cliquer ici pour mettre le salon à niveau vers la dernière version et s'assurer que l'intégrité du salon est protégée.",
"Only room administrators will see this warning": "Seuls les administrateurs du salon verront cet avertissement",
"Please <a>contact your service administrator</a> to continue using the service.": "Veuillez <a>contacter l'administrateur de votre service</a> pour continuer à l'utiliser.",
"This homeserver has hit its Monthly Active User limit.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs.",
"This homeserver has exceeded one of its resource limits.": "Ce serveur d'accueil a dépassé une de ses limites de ressources.",
"Please <a>contact your service administrator</a> to get this limit increased.": "Veuillez <a>contacter l'administrateur de votre service</a> pour augmenter cette limite.",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs donc <b>certains utilisateurs ne pourront pas se connecter</b>.",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "Ce serveur d'accueil a atteint une de ses limites de ressources donc <b>certains utilisateurs ne pourront pas se connecter</b>.",
"Upgrade Room Version": "Mettre à niveau la version du salon",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "La mise à niveau de ce salon nécessite la clôture de l'instance en cours du salon et la création d'un nouveau salon à la place. Pour donner la meilleure expérience possible aux participants, nous allons :",
"Create a new room with the same name, description and avatar": "Créer un salon avec le même nom, la même description et le même avatar",
"Update any local room aliases to point to the new room": "Mettre à jour tous les alias du salon locaux pour qu'ils dirigent vers le nouveau salon",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Empêcher les utilisateurs de discuter dans l'ancienne version du salon et envoyer un message conseillant aux nouveaux utilisateurs d'aller dans le nouveau salon",
"Put a link back to the old room at the start of the new room so people can see old messages": "Fournir un lien vers l'ancien salon au début du nouveau salon pour que l'on puisse voir les vieux messages",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "Votre message n'a pas été envoyé car le serveur d'accueil a atteint sa limite mensuelle d'utilisateurs. Veuillez <a>contacter l'administrateur de votre service</a> pour continuer à l'utiliser.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "Votre message n'a pas été envoyé car ce serveur d'accueil a dépassé une de ses limites de ressources. Veuillez <a>contacter l'administrateur de votre service</a> pour continuer à l'utiliser.",
"Please <a>contact your service administrator</a> to continue using this service.": "Veuillez <a>contacter l'administrateur de votre service</a> pour continuer à l'utiliser.",
"Increase performance by only loading room members on first view": "Améliorer les performances en ne chargeant les participants des salons qu'au premier affichage",
"Lazy loading members not supported": "La chargement différé des participants n'est pas pris en charge",
"Lazy loading is not supported by your current homeserver.": "Le chargement différé n'est pas pris en charge par votre serveur d'accueil actuel.",
"Sorry, your homeserver is too old to participate in this room.": "Désolé, votre serveur d'accueil est trop vieux pour participer à ce salon.",
"Please contact your homeserver administrator.": "Veuillez contacter l'administrateur de votre serveur d'accueil.",
"Legal": "Légal",
"This room has been replaced and is no longer active.": "Ce salon a été remplacé et n'est plus actif.",
"The conversation continues here.": "La discussion continue ici.",
"Upgrade room to version %(ver)s": "Mettre à niveau le salon vers la version %(ver)s",
"This room is a continuation of another conversation.": "Ce salon est la suite d'une autre discussion.",
"Click here to see older messages.": "Cliquer ici pour voir les vieux messages.",
"Failed to upgrade room": "Échec de la mise à niveau du salon",
"The room upgrade could not be completed": "La mise à niveau du salon n'a pas pu être effectuée",
"Upgrade this room to version %(version)s": "Mettre à niveau ce salon vers la version %(version)s",
"Forces the current outbound group session in an encrypted room to be discarded": "Force la session de groupe sortante actuelle dans un salon chiffré à être rejetée",
"Error Discarding Session": "Erreur lors du rejet de la session",
"Registration Required": "Enregistrement nécessaire",
"You need to register to do this. Would you like to register now?": "Vous devez vous enregistrer pour faire cela. Voulez-vous créer un compte maintenant ?",
"Unable to query for supported registration methods": "Impossible de demander les méthodes d'enregistrement prises en charge"
} }

View File

@ -1219,5 +1219,26 @@
"The user name field must not be blank.": "O campo de nome de usuario non pode quedar en branco.", "The user name field must not be blank.": "O campo de nome de usuario non pode quedar en branco.",
"The phone number field must not be blank.": "O número de teléfono non pode quedar en branco.", "The phone number field must not be blank.": "O número de teléfono non pode quedar en branco.",
"The password field must not be blank.": "O campo do contrasinal non pode quedar en branco.", "The password field must not be blank.": "O campo do contrasinal non pode quedar en branco.",
"You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.": "Non vai poder enviar mensaxes ata que revise e acepte <consentLink>os nosos termos e condicións</consentLink>." "You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.": "Non vai poder enviar mensaxes ata que revise e acepte <consentLink>os nosos termos e condicións</consentLink>.",
"A call is currently being placed!": "Xa se estableceu a chamada!",
"Sorry, your homeserver is too old to participate in this room.": "Lametámolo, o seu servidor de inicio é vello de máis para participar en esta sala.",
"Please contact your homeserver administrator.": "Por favor, contacte coa administración do seu servidor.",
"Increase performance by only loading room members on first view": "Aumente o rendemento cargando só membros da sala na vista inicial",
"System Alerts": "Alertas do Sistema",
"Internal room ID: ": "ID interno da sala: ",
"Room version number: ": "Número de versión da sala: ",
"Please <a>contact your service administrator</a> to continue using the service.": "Por favor <a>contacte coa administración do servizo</a> para seguir utilizando o servizo.",
"This homeserver has hit its Monthly Active User limit.": "Este servidor acadou o límite mensual de usuarias activas.",
"This homeserver has exceeded one of its resource limits.": "Este servidor excedeu un dos seus límites de recursos.",
"Please <a>contact your service administrator</a> to get this limit increased.": "Por favor <a>contacte coa administración do servizo</a> para incrementar este límite.",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "Este servidor acadou o Límite Mensual de usuarias activas polo que <b>algunhas usuarias non poderán conectar</b>.",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "Este servidor excedeu un dos límites de recursos polo que <b>algunhas usuarias no poderán conectar</b>.",
"Failed to remove widget": "Fallo ao eliminar o widget",
"An error ocurred whilst trying to remove the widget from the room": "Algo fallou mentras se intentaba eliminar o widget da sala",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "A súa mensaxe non foi enviada porque este servidor acadou o Límite Mensual de Usuaria Activa. Por favor <a>contacte coa administración do servizo</a> para continuar utilizando o servizo.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "A súa mensaxe non foi enviada porque o servidor superou o límite de recursos. Por favor <a>contacte coa administración do servizo</a> para continuar utilizando o servizo.",
"Lazy loading members not supported": "A cargar preguiceira de membros non está soportada",
"Lazy loading is not supported by your current homeserver.": "A carga preguiceira non está soportada polo servidor actual.",
"Legal": "Legal",
"Please <a>contact your service administrator</a> to continue using this service.": "Por favor <a>contacte coa administración do servizo</a> para continuar utilizando o servizo."
} }

View File

@ -1231,5 +1231,43 @@
"This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot. Kérlek <a>vedd fel a kapcsolatot a szolgáltatás adminisztrátorával</a> a szolgáltatás további használatához.", "This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot. Kérlek <a>vedd fel a kapcsolatot a szolgáltatás adminisztrátorával</a> a szolgáltatás további használatához.",
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot, így néhány felhasználó nem fog tudni bejelentkezni. Kérlek <a>vedd fel a kapcsolatot a szolgáltatás adminisztrátorával</a>, hogy a korlátot felemeljék.", "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot, így néhány felhasználó nem fog tudni bejelentkezni. Kérlek <a>vedd fel a kapcsolatot a szolgáltatás adminisztrátorával</a>, hogy a korlátot felemeljék.",
"Internal room ID: ": "Belső szoba azonosító: ", "Internal room ID: ": "Belső szoba azonosító: ",
"Room version number: ": "Szoba verziószáma: " "Room version number: ": "Szoba verziószáma: ",
"There is a known vulnerability affecting this room.": "Ez a szoba ismert sérülékenységgel rendelkezik.",
"This room version is vulnerable to malicious modification of room state.": "A szoba ezen verziójában a szoba állapota ártó szándékkal módosítható.",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "Kattints ide a szoba legújabb verziójára való frissítéshez, hogy a szoba integritása védve legyen.",
"Only room administrators will see this warning": "Csak a szoba adminisztrátorai látják ezt a figyelmeztetést",
"Please <a>contact your service administrator</a> to continue using the service.": "A szolgáltatás további használata érdekében kérlek <a>vedd fel a kapcsolatot a szolgáltatás adminisztrátorával</a>.",
"This homeserver has hit its Monthly Active User limit.": "A Matrix szerver elérte a havi aktív felhasználói korlátot.",
"This homeserver has exceeded one of its resource limits.": "A Matrix szerver túllépte valamelyik erőforrás korlátját.",
"Please <a>contact your service administrator</a> to get this limit increased.": "A korlát emelése érdekében kérlek <a>vedd fel a kapcsolatot a szolgáltatás adminisztrátorával</a>.",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátját <b>néhány felhasználó nem fog tudni bejelentkezni</b>.",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "Ez a Matrix szerver túllépte valamelyik erőforrás korlátját így <b>néhány felhasználó nem tud majd bejelentkezni</b>.",
"Upgrade Room Version": "Szoba verziójának frissítése",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "A szoba frissítése miatt ezt a szobát be kell zárni és egy új szobát kell nyitni a helyében. Hogy a felhasználóknak ne legyen rossz tapasztalata ezért ezt fogjuk tenni:",
"Create a new room with the same name, description and avatar": "Készíts egy új szobát ugyanazzal a névvel, leírással és profilképpel",
"Update any local room aliases to point to the new room": "Állíts át minden helyi alternatív nevet erre a szobára",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "A felhasználóknak tiltsd meg, hogy a régi szobában beszélgessenek. Küldj egy üzenetet amiben megkéred a felhasználókat, hogy menjenek át az új szobába",
"Put a link back to the old room at the start of the new room so people can see old messages": "Tegyél egy linket az új szoba elejére ami visszamutat a régi szobára, hogy az emberek lássák a régi üzeneteket",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "Az üzeneted nincs elküldve, mert ez a Matrix szerver elérte a havi aktív felhasználói korlátot. A szolgáltatás további igénybevétele végett kérlek <a>vedd fel a kapcsolatot a szolgáltatás adminisztrátorával</a>.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "Az üzeneted nem került elküldésre mert ez a Matrix szerver túllépte valamelyik erőforrás korlátját. A szolgáltatás további igénybevétele végett kérlek <a>vedd fel a kapcsolatot a szolgáltatás adminisztrátorával</a>.",
"Please <a>contact your service administrator</a> to continue using this service.": "A szolgáltatás további használatához kérlek <a>vedd fel a kapcsolatot a szolgáltatás adminisztrátorával</a>.",
"Increase performance by only loading room members on first view": "A teljesítmény növelése érdekében a szoba tagsága csak az első megtekintéskor töltődik be",
"Lazy loading members not supported": "A tagok késleltetett betöltése nem támogatott",
"Lazy loading is not supported by your current homeserver.": "A késleltetett betöltés nem támogatott ennél a Matrix szervernél.",
"Sorry, your homeserver is too old to participate in this room.": "Sajnáljuk, a Matrix szervered nem elég friss ahhoz, hogy részt vegyen ebben a szobában.",
"Please contact your homeserver administrator.": "Kérlek vedd fel a kapcsolatot a Matrix szerver adminisztrátorával.",
"Legal": "Jogi",
"This room has been replaced and is no longer active.": "Ezt a szobát lecseréltük és nem aktív többé.",
"The conversation continues here.": "A beszélgetés itt folytatódik.",
"Upgrade room to version %(ver)s": "A szoba frissítése %(ver)s verzióra",
"This room is a continuation of another conversation.": "Ebben a szobában folytatódik egy másik beszélgetés.",
"Click here to see older messages.": "Ide kattintva megnézheted a régi üzeneteket.",
"Failed to upgrade room": "A szoba frissítése sikertelen",
"The room upgrade could not be completed": "A szoba frissítését nem sikerült befejezni",
"Upgrade this room to version %(version)s": "A szoba frissítése %(version)s verzióra",
"Error Discarding Session": "Hiba a munkamenet törlésénél",
"Forces the current outbound group session in an encrypted room to be discarded": "A jelenlegi csoport munkamenet törlését kikényszeríti a titkosított szobában",
"Registration Required": "Regisztrációt igényel",
"You need to register to do this. Would you like to register now?": "Hogy ezt megtedd regisztrálnod kell. Szeretnél regisztrálni?",
"Unable to query for supported registration methods": "A támogatott regisztrációs folyamatok listáját nem sikerült lekérdezni"
} }

View File

@ -151,7 +151,7 @@
"Access Token:": "Token Akses:", "Access Token:": "Token Akses:",
"Active call (%(roomName)s)": "Panggilan aktif (%(roomName)s)", "Active call (%(roomName)s)": "Panggilan aktif (%(roomName)s)",
"Admin": "Admin", "Admin": "Admin",
"Admin Tools": "Alat admin", "Admin Tools": "Peralatan Admin",
"VoIP": "VoIP", "VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Tidak ada Izin Media, klik disini untuk meminta.", "Missing Media Permissions, click here to request.": "Tidak ada Izin Media, klik disini untuk meminta.",
"No Webcams detected": "Tidak ada Webcam terdeteksi", "No Webcams detected": "Tidak ada Webcam terdeteksi",

View File

@ -14,7 +14,7 @@
"Close": "Chiudi", "Close": "Chiudi",
"Create new room": "Crea una nuova stanza", "Create new room": "Crea una nuova stanza",
"Custom Server Options": "Opzioni Server Personalizzate", "Custom Server Options": "Opzioni Server Personalizzate",
"Dismiss": "Scarta", "Dismiss": "Chiudi",
"Error": "Errore", "Error": "Errore",
"Favourite": "Preferito", "Favourite": "Preferito",
"OK": "OK", "OK": "OK",
@ -1111,7 +1111,7 @@
"Messages in group chats": "Messaggi nelle chat di gruppo", "Messages in group chats": "Messaggi nelle chat di gruppo",
"Yesterday": "Ieri", "Yesterday": "Ieri",
"Error encountered (%(errorDetail)s).": "Errore riscontrato (%(errorDetail)s).", "Error encountered (%(errorDetail)s).": "Errore riscontrato (%(errorDetail)s).",
"Login": "Entra", "Login": "Accedi",
"Low Priority": "Priorità bassa", "Low Priority": "Priorità bassa",
"What's New": "Novità", "What's New": "Novità",
"Set Password": "Imposta Password", "Set Password": "Imposta Password",
@ -1230,5 +1230,40 @@
"This homeserver has hit its Monthly Active User limit": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili", "This homeserver has hit its Monthly Active User limit": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili",
"Please contact your service administrator to continue using this service.": "Contatta l'amministratore del servizio per continuare ad usarlo.", "Please contact your service administrator to continue using this service.": "Contatta l'amministratore del servizio per continuare ad usarlo.",
"Internal room ID: ": "ID interno della stanza: ", "Internal room ID: ": "ID interno della stanza: ",
"Room version number: ": "Numero di versione della stanza: " "Room version number: ": "Numero di versione della stanza: ",
"There is a known vulnerability affecting this room.": "C'è una vulnerabilità nota che affligge questa stanza.",
"This room version is vulnerable to malicious modification of room state.": "La versione di questa stanza è vulnerabile a modifiche malevole dello stato della stanza.",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "Clicca qui per aggiornare all'ultima versione ed assicurare che l'integrità della stanza sia protetta.",
"Only room administrators will see this warning": "Solo gli amministratori della stanza vedranno questo avviso",
"Please <a>contact your service administrator</a> to continue using the service.": "<a>Contatta l'amministratore del servizio</a> per continuare ad usarlo.",
"This homeserver has hit its Monthly Active User limit.": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili.",
"This homeserver has exceeded one of its resource limits.": "Questo homeserver ha oltrepassato uno dei suoi limiti di risorse.",
"Please <a>contact your service administrator</a> to get this limit increased.": "<a>Contatta l'amministratore del servizio</a> per fare aumentare questo limite.",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili, perciò <b>alcuni utenti non potranno accedere</b>.",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "Questo homeserver ha oltrepassato uno dei suoi limiti di risorse, perciò <b>alcuni utenti non potranno accedere</b>.",
"Upgrade Room Version": "Aggiorna versione stanza",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "L'aggiornamento di questa stanza richiede la chiusura dell'istanza attuale e la creazione di una nuova stanza al suo posto. Per offrire la migliore esperienza possibile ai membri della stanza, noi:",
"Create a new room with the same name, description and avatar": "Creeremo una nuova stanza con lo stesso nome, descrizione e avatar",
"Update any local room aliases to point to the new room": "Aggiorneremo qualsiasi alias di stanza in modo che punti a quella nuova",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Eviteremo che gli utenti parlino nella vecchia versione della stanza e posteremo un messaggio avvisando gli utenti di spostarsi in quella nuova",
"Put a link back to the old room at the start of the new room so people can see old messages": "Inseriremo un link alla vecchia stanza all'inizio della di quella nuova in modo che la gente possa vedere i messaggi precedenti",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "Il tuo messaggio non è stato inviato perchè questo homeserver ha raggiunto il suo limite di utenti attivi mensili. <a>Contatta l'amministratore del servizio</a> per continuare ad usarlo.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "Il tuo messaggio non è stato inviato perchè questo homeserver ha oltrepassato un limite di risorse. <a>Contatta l'amministratore del servizio</a> per continuare ad usarlo.",
"Please <a>contact your service administrator</a> to continue using this service.": "<a>Contatta l'amministratore del servizio</a> per continuare ad usarlo.",
"Increase performance by only loading room members on first view": "Aumenta le prestazioni caricando solo i membri della stanza alla prima occhiata",
"Sorry, your homeserver is too old to participate in this room.": "Spiacenti, il tuo homeserver è troppo vecchio per partecipare a questa stanza.",
"Please contact your homeserver administrator.": "Contatta l'amministratore del tuo homeserver.",
"Lazy loading members not supported": "Il caricamento lento dei membri non è supportato",
"Lazy loading is not supported by your current homeserver.": "Il caricamento lento non è supportato dal tuo attuale homeserver.",
"Legal": "Informazioni legali",
"Forces the current outbound group session in an encrypted room to be discarded": "Forza l'eliminazione dell'attuale sessione di gruppo in uscita in una stanza criptata",
"Error Discarding Session": "Errore nell'eliminazione della sessione",
"This room has been replaced and is no longer active.": "Questa stanza è stata sostituita e non è più attiva.",
"The conversation continues here.": "La conversazione continua qui.",
"Upgrade room to version %(ver)s": "Aggiorna la stanza alla versione %(ver)s",
"This room is a continuation of another conversation.": "Questa stanza è la continuazione di un'altra conversazione.",
"Click here to see older messages.": "Clicca qui per vedere i messaggi precedenti.",
"Failed to upgrade room": "Aggiornamento stanza fallito",
"The room upgrade could not be completed": "Non è stato possibile completare l'aggiornamento della stanza",
"Upgrade this room to version %(version)s": "Aggiorna questa stanza alla versione %(version)s"
} }

1
src/i18n/strings/ka.json Normal file
View File

@ -0,0 +1 @@
{}

View File

@ -46,7 +46,7 @@
"To return to your account in future you need to <u>set a password</u>": "Ateityje, norėdami grįžti prie savo paskyros turite <u>nusistatyti slaptažodį</u>", "To return to your account in future you need to <u>set a password</u>": "Ateityje, norėdami grįžti prie savo paskyros turite <u>nusistatyti slaptažodį</u>",
"Forget": "Pamiršti", "Forget": "Pamiršti",
"World readable": "Visiems skaitomas", "World readable": "Visiems skaitomas",
"Mute": "tildyti", "Mute": "Nutildyti",
"Hide panel": "Slėpti skydelį", "Hide panel": "Slėpti skydelį",
"You cannot delete this image. (%(code)s)": "Jūs negalite ištrinti šio paveikslėlio. (%(code)s)", "You cannot delete this image. (%(code)s)": "Jūs negalite ištrinti šio paveikslėlio. (%(code)s)",
"Cancel Sending": "Atšaukti siuntimą", "Cancel Sending": "Atšaukti siuntimą",
@ -452,5 +452,335 @@
"Allow": "Leisti", "Allow": "Leisti",
"Delete Widget": "Ištrinti valdiklį", "Delete Widget": "Ištrinti valdiklį",
"Delete widget": "Ištrinti valdiklį", "Delete widget": "Ištrinti valdiklį",
"Failed to remove widget": "Nepavyko pašalinti valdiklį" "Failed to remove widget": "Nepavyko pašalinti valdiklį",
"Scroll to bottom of page": "Slinkti į puslapio apačią",
"<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.": "<showDevicesText>Rodyti įrenginius</showDevicesText>, <sendAnywayText>vis tiek siųsti</sendAnywayText> ar <cancelText>atsisakyti</cancelText>.",
"%(count)s of your messages have not been sent.|other": "Kai kurios iš jūsų žinučių nebuvo išsiųstos.",
"%(count)s of your messages have not been sent.|one": "Jūsų žinutė nebuvo išsiųsta.",
"Connectivity to the server has been lost.": "Jungiamumas su šiuo serveriu buvo prarastas.",
"Sent messages will be stored until your connection has returned.": "Išsiųstos žinutės bus saugomos tol, kol atsiras ryšys.",
"%(count)s new messages|other": "%(count)s naujų žinučių",
"%(count)s new messages|one": "%(count)s nauja žinutė",
"Active call": "Aktyvus skambutis",
"There's no one else here! Would you like to <inviteText>invite others</inviteText> or <nowarnText>stop warning about the empty room</nowarnText>?": "Čia daugiau nieko nėra! Ar norėtumėte <inviteText>pakviesti kitus</inviteText> ar <nowarnText>išjungti įspėjimą apie tuščią kambarį</nowarnText>?",
"You seem to be uploading files, are you sure you want to quit?": "Atrodo, kad jūs įkelinėjate failus, ar tikrai norite išeiti?",
"You seem to be in a call, are you sure you want to quit?": "Atrodo, kad dalyvaujate skambutyje, ar tikrai norite išeiti?",
"Failed to upload file": "Nepavyko įkelti failo",
"Server may be unavailable, overloaded, or the file too big": "Gali būti, kad serveris neprieinamas, perkrautas arba failas yra per didelis",
"Search failed": "Paieška nepavyko",
"Server may be unavailable, overloaded, or search timed out :(": "Gali būti, kad serveris neprieinamas, perkrautas arba pasibaigė paieškai skirtas laikas :(",
"No more results": "Daugiau nėra jokių rezultatų",
"Unknown room %(roomId)s": "Nežinomas kambarys %(roomId)s",
"Room": "Kambarys",
"Failed to save settings": "Nepavyko įrašyti nustatymų",
"Failed to reject invite": "Nepavyko atmesti pakvietimo",
"Fill screen": "Užpildyti ekraną",
"Click to unmute video": "Spustelėkite, norėdami įjungti vaizdą",
"Click to mute video": "Spustelėkite, norėdami išjungti vaizdą",
"Click to unmute audio": "Spustelėkite, norėdami įjungti garsą",
"Click to mute audio": "Spustelėkite, norėdami nutildyti garsą",
"Clear filter": "Išvalyti filtrą",
"Uploading %(filename)s and %(count)s others|other": "Įkeliamas %(filename)s ir dar %(count)s failai",
"Uploading %(filename)s and %(count)s others|zero": "Įkeliamas %(filename)s",
"Uploading %(filename)s and %(count)s others|one": "Įkeliamas %(filename)s ir dar %(count)s failas",
"Light theme": "Šviesi tema",
"Dark theme": "Tamsi tema",
"Status.im theme": "Status.im tema",
"Can't load user settings": "Nepavyksta įkelti naudotojo nustatymų",
"Server may be unavailable or overloaded": "Gali būti, kad serveris neprieinamas arba perkrautas",
"Success": "Pavyko",
"Remove Contact Information?": "Šalinti kontaktinę informaciją?",
"Remove %(threePid)s?": "Šalinti %(threePid)s?",
"Unable to remove contact information": "Nepavyko pašalinti kontaktinę informaciją",
"Interface Language": "Sąsajos kalba",
"User Interface": "Naudotojo sąsaja",
"<not supported>": "<nepalaikoma>",
"Device ID:": "Įrenginio ID:",
"Device key:": "Įrenginio raktas:",
"Ignored Users": "Nepaisomi naudotojai",
"Debug Logs Submission": "Derinimo žurnalų pateikimas",
"These are experimental features that may break in unexpected ways": "Šios yra eksperimentinės ypatybės, kurios veikti netikėtais būdais",
"Deactivate my account": "Pasyvinti mano paskyrą",
"Clear Cache": "Išvalyti podėlį",
"Clear Cache and Reload": "Išvalyti podėlį ir įkelti iš naujo",
"Updates": "Atnaujinimai",
"Check for update": "Tikrinti, ar yra atnaujinimų",
"Reject all %(invitedRooms)s invites": "Atmesti visus %(invitedRooms)s pakvietimus",
"Bulk Options": "Masiniai parametrai",
"You may need to manually permit Riot to access your microphone/webcam": "Jums gali tekti rankiniu būdu leisti Riot prieigą prie savo mikrofono/kameros",
"Missing Media Permissions, click here to request.": "Trūksta medijos leidimų, spustelėkite čia, norėdami užklausti.",
"No Audio Outputs detected": "Neaptikta jokių garso išvesčių",
"No Microphones detected": "Neaptikta jokių mikrofonų",
"No Webcams detected": "Neaptikta jokių kamerų",
"Default Device": "Numatytasis įrenginys",
"Audio Output": "Garso išvestis",
"Microphone": "Mikrofonas",
"Camera": "Kamera",
"VoIP": "VoIP",
"Email": "El. paštas",
"Add email address": "Pridėti el. pašto adresą",
"Profile": "Profilis",
"Account": "Paskyra",
"To return to your account in future you need to set a password": "Norėdami ateityje sugrįžti į savo paskyrą, turite nusistatyti slaptažodį",
"Logged in as:": "Esate prisijungę kaip:",
"click to reveal": "spustelėkite, norėdami atskleisti",
"matrix-react-sdk version:": "matrix-react-sdk versija:",
"riot-web version:": "riot-web versija:",
"olm version:": "olm versija:",
"Failed to send email": "Nepavyko išsiųsti el. laiško",
"The email address linked to your account must be entered.": "Privalo būti įvestas su jūsų paskyra susietas el. pašto adresas.",
"A new password must be entered.": "Privalo būti įvestas naujas slaptažodis.",
"New passwords must match each other.": "Nauji slaptažodžiai privalo sutapti.",
"I have verified my email address": "Aš patvirtinau savo el. pašto adresą",
"Your password has been reset": "Jūsų slaptažodis buvo atstatytas",
"Return to login screen": "Grįžti į prisijungimo ekraną",
"To reset your password, enter the email address linked to your account": "Norėdami atstatyti slaptažodį, įveskite su jūsų paskyra susietą el. pašto adresą",
"New password": "Naujas slaptažodis",
"Confirm your new password": "Patvirtinkite savo naują slaptažodį",
"Send Reset Email": "Siųsti atstatymo el. laišką",
"Create an account": "Sukurti paskyrą",
"Incorrect username and/or password.": "Neteisingas naudotojo vardas ir/ar slaptažodis.",
"Please note you are logging into the %(hs)s server, not matrix.org.": "Turėkite omenyje, kad jūs prisijungiate prie %(hs)s serverio, o ne matrix.org.",
"Sign in to get started": "Norėdami pradėti, prisijunkite",
"Failed to fetch avatar URL": "Nepavyko gauti avataro URL",
"Missing password.": "Trūksta slaptažodžio.",
"Passwords don't match.": "Slaptažodžiai nesutampa.",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Slaptažodis per trumpas (mažiausiai, %(MIN_PASSWORD_LENGTH)s).",
"This doesn't look like a valid email address.": "Tai nepanašu į teisingą el. pašto adresą.",
"This doesn't look like a valid phone number.": "Tai nepanašu į teisingą telefono numerį.",
"You need to enter a user name.": "Turite įvesti naudotojo vardą.",
"An unknown error occurred.": "Įvyko nežinoma klaida.",
"I already have an account": "Aš jau turiu paskyrą",
"Commands": "Komandos",
"Results from DuckDuckGo": "Rezultatai iš DuckDuckGo",
"Notify the whole room": "Pranešti visam kambariui",
"Users": "Naudotojai",
"unknown device": "nežinomas įrenginys",
"Ed25519 fingerprint": "Ed25519 kontrolinis kodas",
"User ID": "Naudotojo ID",
"Curve25519 identity key": "Curve25519 tapatybės raktas",
"none": "nėra",
"Algorithm": "Algoritmas",
"Decryption error": "Iššifravimo klaida",
"Session ID": "Seanso ID",
"End-to-end encryption information": "Ištisinio šifravimo informacija",
"Event information": "Įvykio informacija",
"Sender device information": "Siuntėjo įrenginio informacija",
"Passphrases must match": "Slaptafrazės privalo sutapti",
"Passphrase must not be empty": "Slaptafrazė negali būti tuščia",
"Export room keys": "Eksportuoti kambario raktus",
"Enter passphrase": "Įveskite slaptafrazę",
"Confirm passphrase": "Patvirtinkite slaptafrazę",
"Export": "Eksportuoti",
"Import room keys": "Importuoti kambario raktus",
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Eksportavimo failas bus apsaugotas slaptafraze. Norėdami iššifruoti failą, čia turėtumėte įvesti slaptafrazę.",
"File to import": "Failas, kurį importuoti",
"Import": "Importuoti",
"Your User Agent": "Jūsų naudotojo agentas",
"Review Devices": "Peržiūrėti įrenginius",
"You do not have permission to start a conference call in this room": "Jūs neturite leidimo šiame kambaryje pradėti konferencinį pokalbį",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "Failas \"%(fileName)s\" viršija šio namų serverio įkeliamų failų dydžio apribojimą",
"Room name or alias": "Kambario pavadinimas ar slapyvardis",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Neatrodo, kad jūsų el. pašto adresas šiame namų serveryje būtų susietas su Matrix ID.",
"Who would you like to communicate with?": "Su kuo norėtumėte susisiekti?",
"Missing room_id in request": "Užklausoje trūksta room_id",
"Missing user_id in request": "Užklausoje trūksta user_id",
"Unrecognised room alias:": "Neatpažintas kambario slapyvardis:",
"WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ĮSPĖJIMAS: RAKTO PATVIRTINIMAS NEPAVYKO! Pasirašymo raktas, skirtas %(userId)s ir įrenginiui %(deviceId)s yra \"%(fprint)s\", o tai nesutampa su pateiktu raktu \"%(fingerprint)s\". Tai gali reikšti, kad kažkas perima jūsų komunikavimą!",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Jūsų pateiktas pasirašymo raktas sutampa su pasirašymo raktus, kuris gautas iš naudotojo %(userId)s įrenginio %(deviceId)s. Įrenginys pažymėtas kaip patvirtintas.",
"VoIP conference started.": "VoIP konferencija pradėta.",
"VoIP conference finished.": "VoIP konferencija užbaigta.",
"%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s pašalino kambario pavadinimą.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s įjungė ištisinį šifravimą (%(algorithm)s algoritmas).",
"%(widgetName)s widget modified by %(senderName)s": "%(senderName)s modifikavo %(widgetName)s valdiklį",
"%(widgetName)s widget added by %(senderName)s": "%(senderName)s pridėjo %(widgetName)s valdiklį",
"%(widgetName)s widget removed by %(senderName)s": "%(senderName)s pašalino %(widgetName)s valdiklį",
"Failure to create room": "Nepavyko sukurti kambarį",
"Server may be unavailable, overloaded, or you hit a bug.": "Gali būti, kad serveris neprieinamas, perkrautas arba susidūrėte su klaida.",
"Use compact timeline layout": "Naudoti kompaktišką laiko juostos išdėstymą",
"Autoplay GIFs and videos": "Automatiškai atkurti GIF ir vaizdo įrašus",
"Never send encrypted messages to unverified devices from this device": "Niekada nesiųsti iš šio įrenginio šifruotų žinučių į nepatvirtintus įrenginius",
"Never send encrypted messages to unverified devices in this room from this device": "Niekada nesiųsti iš šio įrenginio šifruotas žinutes į nepatvirtintus įrenginius šiame kambaryje",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Tekstinė žinutė išsiųsta į +%(msisdn)s. Įveskite žinutėje esantį patvirtinimo kodą",
"Enter Code": "Įvesti kodą",
"Your home server does not support device management.": "Jūsų namų serveris nepalaiko įrenginių tvarkymą.",
"Delete %(count)s devices|other": "Ištrinti %(count)s įrenginius",
"This event could not be displayed": "Nepavyko parodyti šio įvykio",
"If your other devices do not have the key for this message you will not be able to decrypt them.": "Jeigu jūsų kituose įrenginiuose nėra rakto šiai žinutei, tuomet jūs negalėsite jos iššifruoti.",
"<requestLink>Re-request encryption keys</requestLink> from your other devices.": "<requestLink>Iš naujo užklausti šifravimo raktus</requestLink> iš jūsų kitų įrenginių.",
"Undecryptable": "Neiššifruojama",
"Encrypted, not sent": "Šifruota, neišsiųsta",
"Encrypted by a verified device": "Šifruota patvirtintu įrenginiu",
"Encrypted by an unverified device": "Šifruota nepatvirtintu įrenginiu",
"Kick": "Išmesti",
"Kick this user?": "Išmesti šį naudotoją?",
"Failed to kick": "Nepavyko išmesti",
"Unban": "Atblokuoti",
"Ban": "Užblokuoti",
"Unban this user?": "Atblokuoti šį naudotoją?",
"Ban this user?": "Užblokuoti šį naudotoją?",
"Failed to ban user": "Nepavyko užblokuoti naudotoją",
"Failed to toggle moderator status": "Nepavyko perjungti moderatoriaus būseną",
"Invited": "Pakviestas",
"Filter room members": "Filtruoti kambario dalyvius",
"Server unavailable, overloaded, or something else went wrong.": "Serveris neprieinamas, perkrautas arba nutiko kažkas kito.",
"%(duration)ss": "%(duration)s sek.",
"%(duration)sm": "%(duration)s min.",
"%(duration)sh": "%(duration)s val.",
"%(duration)sd": "%(duration)s d.",
"Seen by %(userName)s at %(dateTime)s": "%(userName)s matė ties %(dateTime)s",
"Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) matė ties %(dateTime)s",
"Show these rooms to non-members on the community page and room list?": "Ar rodyti šiuos kambarius ne dalyviams bendruomenės puslapyje ir kambarių sąraše?",
"Invite new room members": "Pakviesti naujus kambario dalyvius",
"Changes colour scheme of current room": "Pakeičia esamo kambario spalvų rinkinį",
"Kicks user with given id": "Išmeta naudotoją su nurodytu id",
"Bans user with given id": "Užblokuoja naudotoja su nurodytu id",
"Unbans user with given id": "Atblokuoja naudotoją su nurodytu id",
"%(senderName)s banned %(targetName)s.": "%(senderName)s užblokavo naudotoją %(targetName)s.",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s atblokavo naudotoją %(targetName)s.",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s išmetė naudotoją %(targetName)s.",
"(not supported by this browser)": "(nėra palaikoma šios naršyklės)",
"(no answer)": "(nėra atsakymo)",
"%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s padarė kambario ateities istoriją matomą visiems kambario dalyviams nuo to laiko, kai jie buvo pakviesti.",
"%(senderName)s made future room history visible to all room members.": "%(senderName)s padarė kambario ateities istoriją matomą visiems kambario dalyviams.",
"%(senderName)s made future room history visible to anyone.": "%(senderName)s padarė kambario ateities istoriją matomą bet kam.",
"%(names)s and %(count)s others are typing|one": "%(names)s ir dar vienas naudotojas rašo",
"Your browser does not support the required cryptography extensions": "Jūsų naršyklė nepalaiko reikalingų kriptografijos plėtinių",
"Not a valid Riot keyfile": "Negaliojantis Riot rakto failas",
"Authentication check failed: incorrect password?": "Tapatybės nustatymo patikrinimas patyrė nesėkmę: neteisingas slaptažodis?",
"Send analytics data": "Siųsti analitinius duomenis",
"Incoming voice call from %(name)s": "Gaunamasis balso skambutis nuo %(name)s",
"Incoming video call from %(name)s": "Gaunamasis vaizdo skambutis nuo %(name)s",
"Incoming call from %(name)s": "Gaunamasis skambutis nuo %(name)s",
"Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Šiuo metu slaptažodžio pakeitimas atstatys bet kokius ištisinio šifravimo raktus visuose įrenginiuose ir tokiu būdu pavers šifruotą pokalbių istoriją neperskaitoma, nebent, iš pradžių, savo kambario raktus eksportuosite, o po to, juos importuosite iš naujo. Ateityje tai bus patobulinta.",
"Change Password": "Keisti slaptažodį",
"Authentication": "Tapatybės nustatymas",
"The maximum permitted number of widgets have already been added to this room.": "Į šį kambarį jau yra pridėtas didžiausias leidžiamas valdiklių skaičius.",
"Your key share request has been sent - please check your other devices for key share requests.": "Jūsų rakto bendrinimo užklausa išsiųsta - patikrinkite kitus savo įrenginius, ar juose nėra rakto bendrinimo užklausų.",
"Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Rakto bendrinimo užklausos yra išsiunčiamos į jūsų kitus įrenginius automatiškai. Jeigu savo kitame įrenginyje atmetėte ar nepaisėte rakto užklausos, spustelėkite čia, norėdami dar kartą užklausti raktų šiam seansui.",
"Please select the destination room for this message": "Pasirinkite šiai žinutei paskirties kambarį",
"No devices with registered encryption keys": "Nėra jokių įrenginių su registruotais šifravimo raktais",
"Make Moderator": "Padaryti moderatoriumi",
"Level:": "Lygis:",
"Hangup": "Padėti ragelį",
"No pinned messages.": "Nėra jokių prisegtų žinučių.",
"Online for %(duration)s": "Prisijungęs %(duration)s",
"Idle for %(duration)s": "Neveiklus %(duration)s",
"Offline for %(duration)s": "Atsijungęs %(duration)s",
"Idle": "Neveiklus",
"Offline": "Atsijungęs",
"Failed to set avatar.": "Nepavyko nustatyti avataro.",
"Forget room": "Pamiršti kambarį",
"Share room": "Bendrinti kambarį",
"There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Šiame kambaryje yra nepatvirtintų įrenginių: jeigu tęsite jų nepatvirtinę, tuomet kas nors galės slapta klausytis jūsų skambučio.",
"Usage": "Naudojimas",
"Searches DuckDuckGo for results": "Atlieka rezultatų paiešką sistemoje DuckDuckGo",
"To use it, just wait for autocomplete results to load and tab through them.": "Norėdami tai naudoti, tiesiog, palaukite, kol bus įkelti automatiškai užbaigti rezultatai, o tuomet, pereikite per juos naudodami Tab klavišą.",
"%(targetName)s left the room.": "%(targetName)s išėjo iš kambario.",
"%(senderName)s changed the pinned messages for the room.": "%(senderName)s pakeitė prisegtas kambario žinutes.",
"Sorry, your homeserver is too old to participate in this room.": "Atleiskite, jūsų namų serveris yra per senas dalyvauti šiame kambaryje.",
"Please contact your homeserver administrator.": "Prašome susisiekti su savo namų serverio administratoriumi.",
"Enable inline URL previews by default": "Įjungti tiesiogines URL nuorodų peržiūras pagal numatymą",
"Enable URL previews for this room (only affects you)": "Įjungti URL nuorodų peržiūras šiame kambaryje (įtakoja tik jus)",
"Enable URL previews by default for participants in this room": "Įjungti URL nuorodų peržiūras pagal numatymą dalyviams šiame kambaryje",
"Confirm password": "Pakartokite slaptažodį",
"Demote yourself?": "Pažeminti save?",
"Demote": "Pažeminti",
"Share Link to User": "Bendrinti nuorodą su naudotoju",
"Direct chats": "Tiesioginiai pokalbiai",
"The conversation continues here.": "Pokalbis tęsiasi čia.",
"Jump to message": "Pereiti prie žinutės",
"Drop here to demote": "Vilkite čia, norėdami pažeminti",
"Favourites": "Mėgstami",
"This invitation was sent to an email address which is not associated with this account:": "Šis pakvietimas buvo išsiųstas į el. pašto adresą, kuris nėra susietas su šia paskyra:",
"You may wish to login with a different account, or add this email to this account.": "Jūs galite pageidauti prisijungti, naudojant kitą paskyrą, arba pridėti šį el. paštą į šią paskyrą.",
"You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s išmetė jus iš %(roomName)s.",
"You have been kicked from this room by %(userName)s.": "%(userName)s išmetė jus iš šio kambario.",
"You have been banned from %(roomName)s by %(userName)s.": "%(userName)s užblokavo jus kambaryje %(roomName)s.",
"You have been banned from this room by %(userName)s.": "%(userName)s užblokavo jus šiame kambaryje.",
"To change the room's name, you must be a": "Norėdami pakeisti kambario pavadinimą, privalote būti",
"To change the room's main address, you must be a": "Norėdami pakeisti pagrindinį kambario adresą, privalote būti",
"To change the room's history visibility, you must be a": "Norėdami pakeisti kambario istorijos matomumą, privalote būti",
"To change the permissions in the room, you must be a": "Norėdami pakeisti leidimus kambaryje, privalote būti",
"To modify widgets in the room, you must be a": "Norėdami modifikuoti valdiklius šiame kambaryje, privalote būti",
"The visibility of existing history will be unchanged": "Esamos istorijos matomumas išliks nepakeistas",
"End-to-end encryption is in beta and may not be reliable": "Ištisinis šifravimas yra beta versijoje ir gali būti nepatikimas",
"You should not yet trust it to secure data": "Kol kas neturėtumėte pasitikėti, kad jis apsaugos jūsų duomenis",
"Encryption is enabled in this room": "Šifravimas šiame kambaryje yra įjungtas",
"Encryption is not enabled in this room": "Šifravimas šiame kambaryje nėra įjungtas",
"To kick users, you must be a": "Norėdami išmesti naudotojus, privalote būti",
"To ban users, you must be a": "Norėdami užblokuoti naudotojus, privalote būti",
"Banned users": "Užblokuoti naudotojai",
"This room is not accessible by remote Matrix servers": "Šis kambarys nėra pasiekiamas nuotoliniams Matrix serveriams",
"Who can read history?": "Kas gali skaityti istoriją?",
"Room version number: ": "Kambario versijos numeris: ",
"There is a known vulnerability affecting this room.": "Yra žinomas pažeidžiamumas, kuris paveikia šį kambarį.",
"Only room administrators will see this warning": "Šį įspėjimą matys tik kambario administratoriai",
"Remote addresses for this room:": "Nuotoliniai šio kambario adresai:",
"You have <a>enabled</a> URL previews by default.": "Jūs esate <a>įjungę</a> URL nuorodų peržiūras pagal numatymą.",
"You have <a>disabled</a> URL previews by default.": "Jūs esate <a>išjungę</a> URL nuorodų peržiūras pagal numatymą.",
"URL previews are enabled by default for participants in this room.": "URL nuorodų peržiūros yra įjungtos pagal numatymą šio kambario dalyviams.",
"URL previews are disabled by default for participants in this room.": "URL nuorodų peržiūros yra išjungtos pagal numatymą šio kambario dalyviams.",
"Invalid file%(extra)s": "Neteisingas failas %(extra)s",
"This room is a continuation of another conversation.": "Šis kambarys yra kito pokalbio pratęsimas.",
"Click here to see older messages.": "Spustelėkite čia, norėdami matyti senesnes žinutes.",
"This Home Server would like to make sure you are not a robot": "Šis namų serveris norėtų įsitikinti, kad nesate robotas",
"Token incorrect": "Neteisingas prieigos raktas",
"Sign in with": "Prisijungti naudojant",
"Sign in": "Prisijungti",
"If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Jeigu nenurodysite savo el. pašto adreso, negalėsite atstatyti savo slaptažodį. Ar esate tikri?",
"Home server URL": "Namų serverio URL",
"Identity server URL": "Tapatybės serverio URL",
"Please <a>contact your service administrator</a> to continue using the service.": "Norėdami tęsti naudotis paslauga, <a>susisiekite su savo paslaugos administratoriumi</a>.",
"Reload widget": "Įkelti valdiklį iš naujo",
"Picture": "Paveikslas",
"Create new room": "Sukurti naują kambarį",
"No results": "Jokių rezultatų",
"Delete": "Ištrinti",
"%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s",
"%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s pasikeitė savo vardą",
"%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s pasikeitė savo avatarą",
"%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s pasikeitė savo avatarą",
"collapse": "suskleisti",
"expand": "išskleisti",
"Room directory": "Kambarių katalogas",
"Start chat": "Pradėti pokalbį",
"ex. @bob:example.com": "pvz., @jonas:example.com",
"Add User": "Pridėti naudotoją",
"Matrix ID": "Matrix ID",
"email address": "el. pašto adresas",
"You have entered an invalid address.": "Įvedėte neteisingą adresą.",
"Try using one of the following valid address types: %(validTypesList)s.": "Pabandykite naudoti vieną iš šių teisingų adreso tipų: %(validTypesList)s.",
"Logs sent": "Žurnalai išsiųsti",
"Failed to send logs: ": "Nepavyko išsiųsti žurnalų: ",
"Submit debug logs": "Pateikti derinimo žurnalus",
"Start new chat": "Pradėti naują pokalbį",
"Click on the button below to start chatting!": "Norėdami pradėti bendravimą, paspauskite ant žemiau esančio mygtuko!",
"Create Community": "Sukurti bendruomenę",
"Community Name": "Bendruomenės pavadinimas",
"Example": "Pavyzdys",
"Community ID": "Bendruomenės ID",
"example": "pavyzdys",
"Create": "Sukurti",
"Create Room": "Sukurti kambarį",
"Room name (optional)": "Kambario pavadinimas (nebūtina)",
"Advanced options": "Išplėstiniai parametrai",
"This setting cannot be changed later!": "Šio nustatymo vėliau nebeįmanoma bus pakeisti!",
"Unknown error": "Nežinoma klaida",
"Incorrect password": "Neteisingas slaptažodis",
"To continue, please enter your password:": "Norėdami tęsti, įveskite savo slaptažodį:",
"password": "slaptažodis",
"Device name": "Įrenginio pavadinimas",
"Device key": "Įrenginio raktas",
"An error has occurred.": "Įvyko klaida.",
"Ignore request": "Nepaisyti užklausos",
"Loading device info...": "Įkeliama įrenginio informacija...",
"Failed to upgrade room": "Nepavyko atnaujinti kambarį",
"The room upgrade could not be completed": "Nepavyko užbaigti kambario naujinimo",
"Sign out": "Atsijungti",
"Log out and remove encryption keys?": "Atsijungti ir pašalinti šifravimo raktus?",
"Send Logs": "Siųsti žurnalus",
"Refresh": "Įkelti iš naujo",
"Unable to restore session": "Nepavyko atkurti seanso",
"Invalid Email Address": "Neteisingas el. pašto adresas"
} }

View File

@ -112,5 +112,6 @@
"Quote": "Sitat", "Quote": "Sitat",
"Collapse panel": "Skjul panel", "Collapse panel": "Skjul panel",
"Saturday": "Lørdag", "Saturday": "Lørdag",
"There are advanced notifications which are not shown here": "Det er avanserte varsler som ikke vises her" "There are advanced notifications which are not shown here": "Det er avanserte varsler som ikke vises her",
"Dismiss": "Avvis"
} }

View File

@ -9,8 +9,8 @@
"Call Failed": "Oppringjing Mislukkast", "Call Failed": "Oppringjing Mislukkast",
"There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Det finst ukjende einingar i dette rommet: viss du gjeng frama utan å godkjenna dei, kan nokon mogelegvis tjuvlytta på samtala.", "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Det finst ukjende einingar i dette rommet: viss du gjeng frama utan å godkjenna dei, kan nokon mogelegvis tjuvlytta på samtala.",
"Review Devices": "Sjå Over Einingar", "Review Devices": "Sjå Over Einingar",
"Call Anyway": "Ring Same Kva", "Call Anyway": "Ring Likevel",
"Answer Anyway": "Svar Same Kva", "Answer Anyway": "Svar Likevel",
"Call": "Ring", "Call": "Ring",
"Answer": "Svar", "Answer": "Svar",
"You are already in a call.": "Du er allereie i ei samtale.", "You are already in a call.": "Du er allereie i ei samtale.",
@ -62,22 +62,22 @@
"Add rooms to the community": "Legg til rom i samfunnet", "Add rooms to the community": "Legg til rom i samfunnet",
"Room name or alias": "Romnamn eller alias", "Room name or alias": "Romnamn eller alias",
"Add to community": "Legg til i samfunn", "Add to community": "Legg til i samfunn",
"Failed to invite the following users to %(groupId)s:": "Følgjande brukarar lét seg ikkje byda inn i %(groupId)s:", "Failed to invite the following users to %(groupId)s:": "Fylgjande brukarar lét seg ikkje byda inn i %(groupId)s:",
"Failed to invite users to community": "Fekk ikkje til å byda brukarar inn til samfunnet", "Failed to invite users to community": "Fekk ikkje til å byda brukarar inn til samfunnet",
"Failed to invite users to %(groupId)s": "Fekk ikkje til å byda brukarar inn til %(groupId)s", "Failed to invite users to %(groupId)s": "Fekk ikkje til å byda brukarar inn til %(groupId)s",
"Failed to add the following rooms to %(groupId)s:": "Følgjande rom lét seg ikkje leggja til i %(groupId)s:", "Failed to add the following rooms to %(groupId)s:": "Fylgjande rom lét seg ikkje leggja til i %(groupId)s:",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot har ikkje tillating til å senda deg varsel - ver venleg og sjekk nettlesarinnstillingane dine", "Riot does not have permission to send you notifications - please check your browser settings": "Riot har ikkje tillating til å senda deg varsel - ver venleg og sjekk nettlesarinnstillingane dine",
"Riot was not given permission to send notifications - please try again": "Riot fekk ikkje tillating til å senda varsel - ver venleg og prøv igjen", "Riot was not given permission to send notifications - please try again": "Riot fekk ikkje tillating til å senda varsel - ver venleg og prøv igjen",
"Unable to enable Notifications": "Klarte ikkje å skru på Varsel", "Unable to enable Notifications": "Klarte ikkje å skru på Varsel",
"This email address was not found": "Denne emailadressa var ikkje funne", "This email address was not found": "Denne epostadressa var ikkje funnen",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Emailadressa di ser ikkje ut til å vera tilknytta ein Matrix-ID på denne heimtenaren.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Epostadressa di ser ikkje ut til å vera tilknytta ein Matrix-ID på denne heimtenaren.",
"Default": "Utgangspunktinnstilling", "Default": "Utgangspunktinnstilling",
"Restricted": "Avgrensa", "Restricted": "Avgrensa",
"Moderator": "Moderator", "Moderator": "Moderator",
"Admin": "Administrator", "Admin": "Administrator",
"Start a chat": "Start ei samtale", "Start a chat": "Start ei samtale",
"Who would you like to communicate with?": "Kven vil du koma i kontakt med?", "Who would you like to communicate with?": "Kven vil du koma i kontakt med?",
"Email, name or matrix ID": "Email, namn eller Matrix-ID", "Email, name or matrix ID": "Epost, namn eller Matrix-ID",
"Start Chat": "Start ei Samtale", "Start Chat": "Start ei Samtale",
"Invite new room members": "Byd nye rommedlemer inn", "Invite new room members": "Byd nye rommedlemer inn",
"Who would you like to add to this room?": "Kven vil du leggja til i rommet?", "Who would you like to add to this room?": "Kven vil du leggja til i rommet?",
@ -85,7 +85,7 @@
"Failed to invite user": "Fekk ikkje til å byda brukar inn", "Failed to invite user": "Fekk ikkje til å byda brukar inn",
"Operation failed": "Handling mislukkast", "Operation failed": "Handling mislukkast",
"Failed to invite": "Fekk ikkje til å byda inn", "Failed to invite": "Fekk ikkje til å byda inn",
"Failed to invite the following users to the %(roomName)s room:": "Dei følgjande brukarane lét seg ikkje byda inn til %(roomName)s:", "Failed to invite the following users to the %(roomName)s room:": "Dei fylgjande brukarane lét seg ikkje byda inn til %(roomName)s:",
"You need to be logged in.": "Du må vera logga inn.", "You need to be logged in.": "Du må vera logga inn.",
"You need to be able to invite users to do that.": "Du må kunna byda brukarar inn for å gjera det.", "You need to be able to invite users to do that.": "Du må kunna byda brukarar inn for å gjera det.",
"Unable to create widget.": "Klarte ikkje å laga widget.", "Unable to create widget.": "Klarte ikkje å laga widget.",
@ -103,8 +103,8 @@
"Your language of choice": "Ditt valde mål", "Your language of choice": "Ditt valde mål",
"e.g. %(exampleValue)s": "t.d. %(exampleValue)s", "e.g. %(exampleValue)s": "t.d. %(exampleValue)s",
"/ddg is not a command": "/ddg er ikkje eit påbod", "/ddg is not a command": "/ddg er ikkje eit påbod",
"Changes your display nickname": "Endrar kallenamnet ditt", "Changes your display nickname": "Forandrar kallenamnet ditt",
"Changes colour scheme of current room": "Endrar fargevala i ditt noverande rom", "Changes colour scheme of current room": "Forandrar fargevala i ditt noverande rom",
"Sets the room topic": "Set romemnet", "Sets the room topic": "Set romemnet",
"Invites user with given id to current room": "Byd brukarar med den gjevne IDen inn til det noverande rommet", "Invites user with given id to current room": "Byd brukarar med den gjevne IDen inn til det noverande rommet",
"Joins room with given alias": "Gjeng inn i eit rom med det gjevne aliaset", "Joins room with given alias": "Gjeng inn i eit rom med det gjevne aliaset",
@ -120,9 +120,9 @@
"Unignored user": "Avoversedd brukar", "Unignored user": "Avoversedd brukar",
"You are no longer ignoring %(userId)s": "Du overser ikkje %(userId)s no lenger", "You are no longer ignoring %(userId)s": "Du overser ikkje %(userId)s no lenger",
"Define the power level of a user": "Set ein brukar si makthøgd", "Define the power level of a user": "Set ein brukar si makthøgd",
"This email address is already in use": "Denne emailadressa er allereie i bruk", "This email address is already in use": "Denne epostadressa er allereie i bruk",
"The platform you're on": "Platformen du er på", "The platform you're on": "Platformen du er på",
"Failed to verify email address: make sure you clicked the link in the email": "Fekk ikkje til å godkjenna emailadressa: sjå til at du klikka på den rette lenkja i emailen", "Failed to verify email address: make sure you clicked the link in the email": "Fekk ikkje til å stadfesta epostadressa: sjå til at du klikka på den rette lenkja i eposten",
"Your identity server's URL": "Din identitetstenar si nettadresse", "Your identity server's URL": "Din identitetstenar si nettadresse",
"Every page you use in the app": "Alle sider du brukar i æppen", "Every page you use in the app": "Alle sider du brukar i æppen",
"e.g. <CurrentPageURL>": "t.d. <CurrentPageURL>", "e.g. <CurrentPageURL>": "t.d. <CurrentPageURL>",
@ -160,7 +160,7 @@
"%(targetName)s joined the room.": "%(targetName)s kom inn i rommet.", "%(targetName)s joined the room.": "%(targetName)s kom inn i rommet.",
"VoIP conference finished.": "VoIP-gruppesamtale enda.", "VoIP conference finished.": "VoIP-gruppesamtale enda.",
"%(targetName)s rejected the invitation.": "%(targetName)s sa nei til innbydinga.", "%(targetName)s rejected the invitation.": "%(targetName)s sa nei til innbydinga.",
"%(targetName)s left the room.": "%(targetName)s gjekk frå rommet.", "%(targetName)s left the room.": "%(targetName)s fór frå rommet.",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s fjerna utestenginga til %(targetName)s.", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s fjerna utestenginga til %(targetName)s.",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s sparka %(targetName)s ut.", "%(senderName)s kicked %(targetName)s.": "%(senderName)s sparka %(targetName)s ut.",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s tok attende %(targetName)s si innbyding.", "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s tok attende %(targetName)s si innbyding.",
@ -195,24 +195,24 @@
"%(names)s and %(lastPerson)s are typing": "%(names)s og %(lastPerson)s skriv", "%(names)s and %(lastPerson)s are typing": "%(names)s og %(lastPerson)s skriv",
"Failure to create room": "Klarte ikkje å laga rommet", "Failure to create room": "Klarte ikkje å laga rommet",
"Server may be unavailable, overloaded, or you hit a bug.": "tenaren er kanskje utilgjengeleg, overlasta elles so traff du ein bøgg.", "Server may be unavailable, overloaded, or you hit a bug.": "tenaren er kanskje utilgjengeleg, overlasta elles so traff du ein bøgg.",
"Send anyway": "Send same kva", "Send anyway": "Send likevel",
"Send": "Send", "Send": "Send",
"Unnamed Room": "Rom utan Namn", "Unnamed Room": "Rom utan Namn",
"Your browser does not support the required cryptography extensions": "Nettlesaren din støttar ikkje dei naudsynte kryptografiske utvidingane", "Your browser does not support the required cryptography extensions": "Nettlesaren din støttar ikkje dei naudsynte kryptografiske utvidingane",
"Not a valid Riot keyfile": "Ikkje ei gyldig Riot-nykelfil", "Not a valid Riot keyfile": "Ikkje ei gyldig Riot-nykelfil",
"Authentication check failed: incorrect password?": "Autentifiseringssjekk mislukkast: urett passord?", "Authentication check failed: incorrect password?": "Godkjenningssjekk mislukkast: urett passord?",
"Failed to join room": "Fekk ikkje til å gå inn i rom", "Failed to join room": "Fekk ikkje til å gå inn i rom",
"Message Pinning": "Meldingsfesting", "Message Pinning": "Meldingsfesting",
"Disable Emoji suggestions while typing": "Skru emojiframlegg av mens ein skriv", "Disable Emoji suggestions while typing": "Skru emojiframlegg av mens ein skriv",
"Use compact timeline layout": "Bruk smal tidslinjeutforming", "Use compact timeline layout": "Bruk smal tidslinjeutforming",
"Hide removed messages": "Gøym fjerna meldingar", "Hide removed messages": "Gøym fjerna meldingar",
"Hide join/leave messages (invites/kicks/bans unaffected)": "Gøym vert med/fór ut-meldingar (innbydingar, utspark, utestengingar påverkast ikkje)", "Hide join/leave messages (invites/kicks/bans unaffected)": "Gøym kom inn/fór ut-meldingar (innbydingar, utspark, utestengingar påverkast ikkje)",
"Hide avatar changes": "Gøym avatarendringar", "Hide avatar changes": "Gøym avatarendringar",
"Hide display name changes": "Gøym visingsnamn-endringar", "Hide display name changes": "Gøym visingsnamn-endringar",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Vis tidspunkt i 12-timarsform (t.d. 2:30pm)", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Vis tidspunkt i 12-timarsform (t.d. 2:30pm)",
"Always show message timestamps": "Vis alltid meldingstidspunkt", "Always show message timestamps": "Vis alltid meldingstidspunkt",
"Autoplay GIFs and videos": "Spel av GIFar og videoar med ein gong", "Autoplay GIFs and videos": "Spel av GIFar og videoar med ein gong",
"Always show encryption icons": "Vis alltid enkrypteringsikon", "Always show encryption icons": "Vis alltid krypteringsikon",
"Hide avatars in user and room mentions": "Gøym avatarar i brukar- og romnemningar", "Hide avatars in user and room mentions": "Gøym avatarar i brukar- og romnemningar",
"Disable big emoji in chat": "Skru store emojiar i samtaler av", "Disable big emoji in chat": "Skru store emojiar i samtaler av",
"Don't send typing notifications": "Ikkje send skrivevarsel", "Don't send typing notifications": "Ikkje send skrivevarsel",
@ -223,12 +223,12 @@
"Disable Community Filter Panel": "Skru Samfunnsfilterpanel av", "Disable Community Filter Panel": "Skru Samfunnsfilterpanel av",
"Disable Peer-to-Peer for 1:1 calls": "Skru Peer-til-Peer for 1:1-samtaler av", "Disable Peer-to-Peer for 1:1 calls": "Skru Peer-til-Peer for 1:1-samtaler av",
"Send analytics data": "Send statistikkdata", "Send analytics data": "Send statistikkdata",
"Never send encrypted messages to unverified devices from this device": "Send aldri enkrypterte meldingar til ugodkjende einingar frå denne eininga", "Never send encrypted messages to unverified devices from this device": "Send aldri krypterte meldingar til ikkje-godkjende einingar frå denne eininga",
"Never send encrypted messages to unverified devices in this room from this device": "Send aldri enkrypterte meldingar til ugodkjende einingar i dette rommet frå denne eininga", "Never send encrypted messages to unverified devices in this room from this device": "Send aldri krypterte meldingar til ikkje-godkjende einingar i dette rommet frå denne eininga",
"Enable URL previews for this room (only affects you)": "Skru URL-førehandsvisingar på for dette rommet (påverkar deg åleine)", "Enable URL previews for this room (only affects you)": "Skru URL-førehandsvisingar på for dette rommet (påverkar deg åleine)",
"Enable URL previews by default for participants in this room": "Skru URL-førehandsvisingar på som utgangspunkt for deltakarar i dette rommet", "Enable URL previews by default for participants in this room": "Skru URL-førehandsvisingar på som utgangspunkt for deltakarar i dette rommet",
"Room Colour": "Romfarge", "Room Colour": "Romfarge",
"Enable widget screenshots on supported widgets": "Skru widget-skjermbilete på for støtta widget", "Enable widget screenshots on supported widgets": "Skru widget-skjermbilete på for støtta widgetar",
"Collecting app version information": "Samlar æppversjoninfo", "Collecting app version information": "Samlar æppversjoninfo",
"Collecting logs": "Samlar loggar", "Collecting logs": "Samlar loggar",
"Uploading report": "Lastar rapport opp", "Uploading report": "Lastar rapport opp",
@ -237,8 +237,8 @@
"Messages containing my user name": "Meldingar som inneheld brukarnamnet mitt", "Messages containing my user name": "Meldingar som inneheld brukarnamnet mitt",
"Messages in one-to-one chats": "Meldingar i ein-til-ein-samtaler", "Messages in one-to-one chats": "Meldingar i ein-til-ein-samtaler",
"Messages in group chats": "Meldingar i gruppesamtaler", "Messages in group chats": "Meldingar i gruppesamtaler",
"When I'm invited to a room": "Når eg er bode inn til eit rom", "When I'm invited to a room": "Når eg er boden inn til eit rom",
"Call invitation": "Samtaleinnbyding", "Call invitation": "Samtaleinnbydingar",
"Messages sent by bot": "Meldingar sendt frå ein bot", "Messages sent by bot": "Meldingar sendt frå ein bot",
"Active call (%(roomName)s)": "Pågåande samtale (%(roomName)s)", "Active call (%(roomName)s)": "Pågåande samtale (%(roomName)s)",
"unknown caller": "ukjend ringar", "unknown caller": "ukjend ringar",
@ -248,12 +248,12 @@
"Decline": "Sei nei", "Decline": "Sei nei",
"Accept": "Sei ja", "Accept": "Sei ja",
"Error": "Noko gjekk gale", "Error": "Noko gjekk gale",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ei tekstmelding vart send til +%(msisdn)s. Ver venleg og skriv inn godkjenningskoden ho inneheld", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ei tekstmelding vart send til +%(msisdn)s. Ver venleg og skriv inn stadfestingskoden ho inneheld",
"Incorrect verification code": "Urett godkjenningskode", "Incorrect verification code": "Urett stadfestingskode",
"Enter Code": "Skriv inn Koden", "Enter Code": "Skriv inn Koden",
"Submit": "Send inn", "Submit": "Send inn",
"Phone": "Telefon", "Phone": "Telefon",
"Add phone number": "Legg til telefonnummer", "Add phone number": "Legg telefonnummer til",
"Add": "Legg til", "Add": "Legg til",
"Failed to upload profile picture!": "Fekk ikkje til å lasta opp profilbilete!", "Failed to upload profile picture!": "Fekk ikkje til å lasta opp profilbilete!",
"Upload new:": "Last opp ny:", "Upload new:": "Last opp ny:",
@ -262,11 +262,11 @@
"Passwords can't be empty": "Passordsfelta kan ikkje vera tomme", "Passwords can't be empty": "Passordsfelta kan ikkje vera tomme",
"Warning!": "Åtvaring!", "Warning!": "Åtvaring!",
"Continue": "Gå fram", "Continue": "Gå fram",
"Do you want to set an email address?": "Vil du setja ei emailadresse?", "Do you want to set an email address?": "Vil du setja ei epostadresse?",
"Current password": "Noverande passord", "Current password": "Noverande passord",
"Password": "Passord", "Password": "Passord",
"New Password": "Nytt Passord", "New Password": "Nytt Passord",
"Confirm password": "Godkjenn passord", "Confirm password": "Stadfest passord",
"Change Password": "Endra Passord", "Change Password": "Endra Passord",
"Your home server does not support device management.": "Heimtenaren din støttar ikkje einingshandsaming.", "Your home server does not support device management.": "Heimtenaren din støttar ikkje einingshandsaming.",
"Unable to load device list": "Klarte ikkje å lasta einingslista", "Unable to load device list": "Klarte ikkje å lasta einingslista",
@ -278,8 +278,8 @@
"Last seen": "Sist sedd", "Last seen": "Sist sedd",
"Select devices": "Vel einingar", "Select devices": "Vel einingar",
"Failed to set display name": "Fekk ikkje til å setja visingsnamn", "Failed to set display name": "Fekk ikkje til å setja visingsnamn",
"Error saving email notification preferences": "Klarte ikkje å lagra foretrukne emailvarselinnstillingar", "Error saving email notification preferences": "Klarte ikkje å lagra foretrukne epostvarselinnstillingar",
"An error occurred whilst saving your email notification preferences.": "Noko gjekk gale med lagringa av dine foretrukne emailvarselinstillingar.", "An error occurred whilst saving your email notification preferences.": "Noko gjekk gale med lagringa av dine foretrukne epostvarselinstillingar.",
"Keywords": "Nykelord", "Keywords": "Nykelord",
"Enter keywords separated by a comma:": "Skriv inn nykelord med komma imellom:", "Enter keywords separated by a comma:": "Skriv inn nykelord med komma imellom:",
"OK": "Greitt", "OK": "Greitt",
@ -291,15 +291,15 @@
"Notify me for anything else": "Varsl meg for kva som helst anna", "Notify me for anything else": "Varsl meg for kva som helst anna",
"Enable notifications for this account": "Skru varsel på for denne brukaren", "Enable notifications for this account": "Skru varsel på for denne brukaren",
"All notifications are currently disabled for all targets.": "Alle varsel er for augeblunket skrudd av for alle mål.", "All notifications are currently disabled for all targets.": "Alle varsel er for augeblunket skrudd av for alle mål.",
"Add an email address above to configure email notifications": "Legg til ein emailadresse i feltet over for å endra emailvarselinnstillingar", "Add an email address above to configure email notifications": "Legg til ein epostadresse i feltet over for å endra epostvarselinnstillingar",
"Enable email notifications": "Skru emailvarsel på", "Enable email notifications": "Skru epostvarsel på",
"Notifications on the following keywords follow rules which cant be displayed here:": "Varsel på følgjande nykelord følgjer reglar som ikkje kan visast her:", "Notifications on the following keywords follow rules which cant be displayed here:": "Varsel på fylgjande nykelord følgjer reglar som ikkje kan visast her:",
"Unable to fetch notification target list": "Klarte ikkje å henta varselmållista", "Unable to fetch notification target list": "Klarte ikkje å henta varselmållista",
"Notification targets": "Varselmål", "Notification targets": "Varselmål",
"Advanced notification settings": "Omfattande varselinnstillingar", "Advanced notification settings": "Omfattande varselinnstillingar",
"There are advanced notifications which are not shown here": "Det er omfattande varsel som ikkje er vist her", "There are advanced notifications which are not shown here": "Det er omfattande varsel som ikkje er vist her",
"Enable desktop notifications": "Skru skrivebordsvarsel på", "Enable desktop notifications": "Skru skrivebordsvarsel på",
"Show message in desktop notification": "Vis meldingen i eit skriverbordsvarsel", "Show message in desktop notification": "Vis meldinga i eit skriverbordsvarsel",
"Enable audible notifications in web client": "Skru høyrlege varsel i nettklienten på", "Enable audible notifications in web client": "Skru høyrlege varsel i nettklienten på",
"Off": "Av", "Off": "Av",
"On": "På", "On": "På",
@ -319,13 +319,13 @@
"Your key share request has been sent - please check your other devices for key share requests.": "Nykeldelingsforespurnaden din vart send - ver venleg og sjekk dei andre einingane dine for nykeldelingsforespurnadar.", "Your key share request has been sent - please check your other devices for key share requests.": "Nykeldelingsforespurnaden din vart send - ver venleg og sjekk dei andre einingane dine for nykeldelingsforespurnadar.",
"If your other devices do not have the key for this message you will not be able to decrypt them.": "Viss dei andre einingane dine ikkje har nykelen til denne meldinga kan du ikkje dekryptera ho.", "If your other devices do not have the key for this message you will not be able to decrypt them.": "Viss dei andre einingane dine ikkje har nykelen til denne meldinga kan du ikkje dekryptera ho.",
"Key request sent.": "Nykelforespurnad er send.", "Key request sent.": "Nykelforespurnad er send.",
"<requestLink>Re-request encryption keys</requestLink> from your other devices.": "<requestLink>Spør på nytt om enkrypteringsnyklar</requestLink> frå dei andre einingane dine.", "<requestLink>Re-request encryption keys</requestLink> from your other devices.": "<requestLink>Spør på nytt om krypteringsnyklar</requestLink> frå dei andre einingane dine.",
"Undecryptable": "Kan ikkje dekrypterast", "Undecryptable": "Kan ikkje dekrypterast",
"Encrypting": "Enkryptering er i gang", "Encrypting": "Krypteringa er i gang",
"Encrypted, not sent": "Enkryptert, men ikkje send", "Encrypted, not sent": "Kryptert, men ikkje sendt",
"Encrypted by a verified device": "Enkryptert av ei godkjent eining", "Encrypted by a verified device": "Kryptert av ei godkjent eining",
"Encrypted by an unverified device": "Enkryptert av ei ikkje-godkjent eining", "Encrypted by an unverified device": "Kryptert av ei ikkje-godkjent eining",
"Unencrypted message": "Ikkje-enkryptert melding", "Unencrypted message": "Ikkje-kryptert melding",
"Please select the destination room for this message": "Ver venleg og vel målrommet for denne meldinga", "Please select the destination room for this message": "Ver venleg og vel målrommet for denne meldinga",
"Blacklisted": "Svartelista", "Blacklisted": "Svartelista",
"Verified": "Godkjend", "Verified": "Godkjend",
@ -337,9 +337,9 @@
"Kick this user?": "Spark denne brukaren ut?", "Kick this user?": "Spark denne brukaren ut?",
"Failed to kick": "Fekk ikkje til å sparka ut", "Failed to kick": "Fekk ikkje til å sparka ut",
"Unban": "Slepp inn att", "Unban": "Slepp inn att",
"Ban": "Utesteng", "Ban": "Steng ute",
"Unban this user?": "Slepp denne brukaren inn att?", "Unban this user?": "Slepp denne brukaren inn att?",
"Ban this user?": "Utesteng denne brukaren?", "Ban this user?": "Steng denne brukaren ute?",
"Failed to ban user": "Fekk ikkje til å utestenga brukar", "Failed to ban user": "Fekk ikkje til å utestenga brukar",
"Demote yourself?": "Senk høgda di?", "Demote yourself?": "Senk høgda di?",
"You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Du kan ikkje gjera om på denne endringa sidan du senkar høgda di. Viss du er den siste opphøgda brukaren i rommet vert det umogeleg å få høgda att.", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Du kan ikkje gjera om på denne endringa sidan du senkar høgda di. Viss du er den siste opphøgda brukaren i rommet vert det umogeleg å få høgda att.",
@ -349,14 +349,14 @@
"Failed to change power level": "Fekk ikkje til å endra makthøgda", "Failed to change power level": "Fekk ikkje til å endra makthøgda",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du kjem ikkje til å kunna gjera om på denne endringa sidan du set brukaren si høgd opp til di eiga.", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du kjem ikkje til å kunna gjera om på denne endringa sidan du set brukaren si høgd opp til di eiga.",
"Are you sure?": "Er du sikker?", "Are you sure?": "Er du sikker?",
"No devices with registered encryption keys": "Inga einingar med oppskrivne enkrypteringsnykler", "No devices with registered encryption keys": "Ingen einingar med oppskrivne krypteringsnykler",
"Devices": "Einingar", "Devices": "Einingar",
"Unignore": "Slutt å oversjå", "Unignore": "Slutt å oversjå",
"Ignore": "Oversjå", "Ignore": "Oversjå",
"Mention": "Nemn", "Mention": "Nemn",
"Invite": "Byd inn", "Invite": "Byd inn",
"Enable inline URL previews by default": "Skru URL-førehandsvisingar i tekstfeltet på", "Enable inline URL previews by default": "Skru URL-førehandsvisingar i tekstfeltet på",
"Share Link to User": "Del Lenkje til Brukar", "Share Link to User": "Del Brukarlenkje",
"User Options": "Brukarinnstillingar", "User Options": "Brukarinnstillingar",
"Direct chats": "Direktesamtaler", "Direct chats": "Direktesamtaler",
"Unmute": "Fjern stilning", "Unmute": "Fjern stilning",
@ -378,18 +378,18 @@
"Attachment": "Vedlegg", "Attachment": "Vedlegg",
"At this time it is not possible to reply with a file so this will be sent without being a reply.": "Det er førebels ikkje mogeleg å svara med ei fil, so dette vil verta send utan å vera eit svar.", "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Det er førebels ikkje mogeleg å svara med ei fil, so dette vil verta send utan å vera eit svar.",
"Upload Files": "Last opp Filer", "Upload Files": "Last opp Filer",
"Are you sure you want to upload the following files?": "Er du sikker på at du vil lasta opp dei følgjande filene?", "Are you sure you want to upload the following files?": "Er du sikker på at du vil lasta opp dei fylgjande filene?",
"Encrypted room": "Enkryptert rom", "Encrypted room": "Kryptert rom",
"Unencrypted room": "Ikkje-enkrypert rom", "Unencrypted room": "Ikkje-enkrypert rom",
"Hangup": "Legg på", "Hangup": "Legg på",
"Voice call": "Røystesamtale", "Voice call": "Røystesamtale",
"Video call": "Videosamtale", "Video call": "Videosamtale",
"Upload file": "Last ei fil opp", "Upload file": "Last ei fil opp",
"Show Text Formatting Toolbar": "Vis Tekstformverktøylinje", "Show Text Formatting Toolbar": "Vis Tekstformverktøylinje",
"Send an encrypted reply…": "Send eit enkryptert svar…", "Send an encrypted reply…": "Send eit kryptert svar…",
"Send a reply (unencrypted)…": "Send eit svar (ikkje-enkryptert)…", "Send a reply (unencrypted)…": "Send eit svar (ikkje-kryptert)…",
"Send an encrypted message…": "Send ei enkryptert melding…", "Send an encrypted message…": "Send ei kryptert melding…",
"Send a message (unencrypted)…": "Send ei melding (ikkje-enkryptert)…", "Send a message (unencrypted)…": "Send ei melding (ikkje-kryptert)…",
"You do not have permission to post to this room": "Du har ikkje tillating til å sende meldingar i dette rommet", "You do not have permission to post to this room": "Du har ikkje tillating til å sende meldingar i dette rommet",
"Turn Markdown on": "Skru Mardown på", "Turn Markdown on": "Skru Mardown på",
"Turn Markdown off": "Skru Markdown av", "Turn Markdown off": "Skru Markdown av",
@ -411,13 +411,13 @@
"%(duration)sm": "%(duration)sm", "%(duration)sm": "%(duration)sm",
"%(duration)sh": "%(duration)st", "%(duration)sh": "%(duration)st",
"%(duration)sd": "%(duration)sd", "%(duration)sd": "%(duration)sd",
"Online for %(duration)s": "På nett i %(duration)s", "Online for %(duration)s": "tilkopla i %(duration)s",
"Idle for %(duration)s": "Fråverande i %(duration)s", "Idle for %(duration)s": "Fråverande i %(duration)s",
"Offline for %(duration)s": "Av nett i %(duration)s", "Offline for %(duration)s": "Fråkopla i %(duration)s",
"Unknown for %(duration)s": "Ukjend i %(duration)s", "Unknown for %(duration)s": "Ukjend i %(duration)s",
"Online": "På nett", "Online": "Tilkopla",
"Idle": "Fråverande", "Idle": "Fråverande",
"Offline": "Av nett", "Offline": "Fråkopla",
"Unknown": "Ukjend", "Unknown": "Ukjend",
"Seen by %(userName)s at %(dateTime)s": "%(userName)s såg dette %(dateTime)s", "Seen by %(userName)s at %(dateTime)s": "%(userName)s såg dette %(dateTime)s",
"Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s %(userName)s såg dette %(dateTime)s", "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s %(userName)s såg dette %(dateTime)s",
@ -426,7 +426,7 @@
"Unnamed room": "Rom utan namn", "Unnamed room": "Rom utan namn",
"Guests can join": "Gjester kan koma inn", "Guests can join": "Gjester kan koma inn",
"Failed to set avatar.": "Fekk ikkje til å setja avatar.", "Failed to set avatar.": "Fekk ikkje til å setja avatar.",
"Save": "Lagra", "Save": "Lagr",
"(~%(count)s results)|other": "(~%(count)s resultat)", "(~%(count)s results)|other": "(~%(count)s resultat)",
"(~%(count)s results)|one": "(~%(count)s resultat)", "(~%(count)s results)|one": "(~%(count)s resultat)",
"Join Room": "Far inn i Rom", "Join Room": "Far inn i Rom",
@ -451,8 +451,8 @@
"You have no historical rooms": "Du har inkje historiske rom", "You have no historical rooms": "Du har inkje historiske rom",
"Historical": "Historiske", "Historical": "Historiske",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Klarte ikkje å forsikra at adressa som denne innbydinga er send til samsvarar med den som er tilknytta brukaren din.", "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Klarte ikkje å forsikra at adressa som denne innbydinga er send til samsvarar med den som er tilknytta brukaren din.",
"This invitation was sent to an email address which is not associated with this account:": "Denne invitasjonen er send til ei emailadressa som ikkje er tilknytta denne brukaren:", "This invitation was sent to an email address which is not associated with this account:": "Denne invitasjonen er send til ei epostadressa som ikkje er tilknytta denne brukaren:",
"You may wish to login with a different account, or add this email to this account.": "Kanskje du ynskjer å logga inn med ein anna brukar, eller leggja til denne emailen til denne brukaren.", "You may wish to login with a different account, or add this email to this account.": "Kanskje du ynskjer å logga inn med ein annan brukar, eller leggja til denne eposten til denne brukaren.",
"You have been invited to join this room by %(inviterName)s": "Du vart boden inn i dette rommet av %(inviterName)s", "You have been invited to join this room by %(inviterName)s": "Du vart boden inn i dette rommet av %(inviterName)s",
"Would you like to <acceptText>accept</acceptText> or <declineText>decline</declineText> this invitation?": "Vil du seia <acceptText>ja</acceptText> eller <declineText>nei</declineText> til denne innbydinga?", "Would you like to <acceptText>accept</acceptText> or <declineText>decline</declineText> this invitation?": "Vil du seia <acceptText>ja</acceptText> eller <declineText>nei</declineText> til denne innbydinga?",
"Reason: %(reasonText)s": "Grunnlag: %(reasonText)s", "Reason: %(reasonText)s": "Grunnlag: %(reasonText)s",
@ -482,15 +482,15 @@
"The visibility of existing history will be unchanged": "Synlegheita på den noverande historia vert ikkje endra", "The visibility of existing history will be unchanged": "Synlegheita på den noverande historia vert ikkje endra",
"unknown error code": "ukjend errorkode", "unknown error code": "ukjend errorkode",
"Failed to forget room %(errCode)s": "Fekk ikkje til å gløyma rommet %(errCode)s", "Failed to forget room %(errCode)s": "Fekk ikkje til å gløyma rommet %(errCode)s",
"End-to-end encryption is in beta and may not be reliable": "Ende-til-ende-enkryptering vert betatesta og er kanskje ikkje påliteleg", "End-to-end encryption is in beta and may not be reliable": "Ende-til-ende-kryptering vert betatesta og er kanskje ikkje påliteleg",
"You should not yet trust it to secure data": "Du bør førebels ikkje stole på at ho kan sikra data", "You should not yet trust it to secure data": "Du bør førebels ikkje stole på at ho kan sikra data",
"Devices will not yet be able to decrypt history from before they joined the room": "Einingar kan førebels ikkje dekryptera historia frå før dei kom inn i rommet", "Devices will not yet be able to decrypt history from before they joined the room": "Einingar kan førebels ikkje dekryptera historia frå før dei kom inn i rommet",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Når enkryptering er skrudd på i eit rom kan ho (førebels) ikkje skruast av att", "Once encryption is enabled for a room it cannot be turned off again (for now)": "Når kryptering er skrudd på i eit rom kan ho (førebels) ikkje skruast av att",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "Enkrypterte meldingar visast ikkje hjå klientar som førebels ikkje implementerar enkryptering", "Encrypted messages will not be visible on clients that do not yet implement encryption": "Krypterte meldingar visast ikkje hjå klientar som førebels ikkje implementerer kryptering",
"Enable encryption": "Skru enkryptering på", "Enable encryption": "Skru kryptering på",
"(warning: cannot be disabled again!)": "(åtvaring: kan ikkje skruast av att!)", "(warning: cannot be disabled again!)": "(åtvaring: kan ikkje skruast av att!)",
"Encryption is enabled in this room": "Enkryptering er skrudd på i dette rommet", "Encryption is enabled in this room": "Kryptering er skrudd på i dette rommet",
"Encryption is not enabled in this room": "Enkryptering er ikkje skrudd på i dette rommet", "Encryption is not enabled in this room": "Kryptering er ikkje skrudd på i dette rommet",
"The default role for new room members is": "Rolla nye medlemer har i utgangspunktet er", "The default role for new room members is": "Rolla nye medlemer har i utgangspunktet er",
"To send messages, you must be a": "For å senda meldingar må du vera ein", "To send messages, you must be a": "For å senda meldingar må du vera ein",
"To invite users into the room, you must be a": "For å byda brukarar inn til rommet må du vera ein", "To invite users into the room, you must be a": "For å byda brukarar inn til rommet må du vera ein",
@ -500,7 +500,7 @@
"To remove other users' messages, you must be a": "For å fjerna andre brukarar sine meldingar må du vera ein", "To remove other users' messages, you must be a": "For å fjerna andre brukarar sine meldingar må du vera ein",
"To notify everyone in the room, you must be a": "For å varsla alle i rommet må du vera ein", "To notify everyone in the room, you must be a": "For å varsla alle i rommet må du vera ein",
"No users have specific privileges in this room": "Ingen brukarar har særeigne rettar i dette rommet", "No users have specific privileges in this room": "Ingen brukarar har særeigne rettar i dette rommet",
"%(user)s is a %(userRole)s": "%(user)s er ein %(userRole)s", "%(user)s is a %(userRole)s": "%(user)s er %(userRole)s",
"Privileged Users": "Brukarar med Særrett", "Privileged Users": "Brukarar med Særrett",
"Muted Users": "Stilna Brukarar", "Muted Users": "Stilna Brukarar",
"Banned users": "Utestengde Brukarar", "Banned users": "Utestengde Brukarar",
@ -512,8 +512,8 @@
"To send events of type <eventType/>, you must be a": "For å senda hendingar av sorten <evenType/> må du vera ein", "To send events of type <eventType/>, you must be a": "For å senda hendingar av sorten <evenType/> må du vera ein",
"Who can access this room?": "Kven har tilgang til rommet?", "Who can access this room?": "Kven har tilgang til rommet?",
"Only people who have been invited": "Berre dei som er bodne inn", "Only people who have been invited": "Berre dei som er bodne inn",
"Anyone who knows the room's link, apart from guests": "Nokon som kjenner lenkja til rommet, sett vekk frå gjester", "Anyone who knows the room's link, apart from guests": "Dei som kjenner lenkja til rommet, sett vekk frå gjester",
"Anyone who knows the room's link, including guests": "Nokon som kjenner lenkja til rommet, gjester òg", "Anyone who knows the room's link, including guests": "Dei som kjenner lenkja til rommet, gjester òg",
"Publish this room to the public in %(domain)s's room directory?": "Gjer dette rommet offentleg i %(domain)s sitt romutval?", "Publish this room to the public in %(domain)s's room directory?": "Gjer dette rommet offentleg i %(domain)s sitt romutval?",
"Who can read history?": "Kven kan lesa historia?", "Who can read history?": "Kven kan lesa historia?",
"Anyone": "Kven som helst", "Anyone": "Kven som helst",
@ -557,7 +557,7 @@
"You have <a>disabled</a> URL previews by default.": "Du har <a>skrudd URL-førehandsvisingar av</a> i utgangspunktet.", "You have <a>disabled</a> URL previews by default.": "Du har <a>skrudd URL-førehandsvisingar av</a> i utgangspunktet.",
"URL previews are enabled by default for participants in this room.": "URL-førehandsvisingar er skrudd på i utgangspunktet for dette rommet.", "URL previews are enabled by default for participants in this room.": "URL-førehandsvisingar er skrudd på i utgangspunktet for dette rommet.",
"URL previews are disabled by default for participants in this room.": "URL-førehandsvisingar er skrudd av i utgangspunktet for dette rommet.", "URL previews are disabled by default for participants in this room.": "URL-førehandsvisingar er skrudd av i utgangspunktet for dette rommet.",
"In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "I enkrypterte rom, slik som denne, er URL-førehandsvisingar skrudd av i utgangspunktet for å forsikra at heimtenaren din (der førehandsvisinger lagast) ikkje kan samla informasjon om lenkjer som du ser i dette rommet.", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "I krypterte rom, slik som denne, er URL-førehandsvisingar skrudd av i utgangspunktet for å forsikra at heimtenaren din (der førehandsvisinger lagast) ikkje kan samla informasjon om lenkjer som du ser i dette rommet.",
"URL Previews": "URL-førehandsvisingar", "URL Previews": "URL-førehandsvisingar",
"Sunday": "søndag", "Sunday": "søndag",
"Monday": "måndag", "Monday": "måndag",
@ -587,18 +587,18 @@
"This Home Server would like to make sure you are not a robot": "Denne heimtenaren ynskjer å forsikra seg om at du ikkje er ein robot", "This Home Server would like to make sure you are not a robot": "Denne heimtenaren ynskjer å forsikra seg om at du ikkje er ein robot",
"Sign in with CAS": "Logg inn med CAS", "Sign in with CAS": "Logg inn med CAS",
"This allows you to use this app with an existing Matrix account on a different home server.": "Dette tillèt deg å bruka denne æppen med ein Matrixbrukar som allereie finst på ein annan heimtenar.", "This allows you to use this app with an existing Matrix account on a different home server.": "Dette tillèt deg å bruka denne æppen med ein Matrixbrukar som allereie finst på ein annan heimtenar.",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kan i tillegg setja ein eigen identitetstenar, men dette hindrar som regel samhandling med brukarar som brukar emailadresse.", "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kan i tillegg setja ein eigen identitetstenar, men dette hindrar som regel samhandling med brukarar som brukar epostadresse.",
"Dismiss": "Avvis", "Dismiss": "Avvis",
"To continue, please enter your password.": "For å gå fram, ver venleg og skriv passordet ditt inn.", "To continue, please enter your password.": "For å gå fram, ver venleg og skriv passordet ditt inn.",
"Password:": "Passord:", "Password:": "Passord:",
"An email has been sent to %(emailAddress)s": "En email vart send til %(emailAddress)s", "An email has been sent to %(emailAddress)s": "En epost vart send til %(emailAddress)s",
"Please check your email to continue registration.": "Ver venleg og sjekk emailen din for å gå vidare med påmeldinga.", "Please check your email to continue registration.": "Ver venleg og sjekk eposten din for å gå vidare med påmeldinga.",
"A text message has been sent to %(msisdn)s": "Ei tekstmelding vart send til %(msisdn)s", "A text message has been sent to %(msisdn)s": "Ei tekstmelding vart send til %(msisdn)s",
"Please enter the code it contains:": "Ver venleg og skriv koden den inneheld inn:", "Please enter the code it contains:": "Ver venleg og skriv koden den inneheld inn:",
"Code": "Kode", "Code": "Kode",
"Start authentication": "Byrj godkjenning", "Start authentication": "Byrj godkjenning",
"powered by Matrix": "Matrixdriven", "powered by Matrix": "Matrixdriven",
"The email field must not be blank.": "Emailfeltet kan ikkje vera tomt.", "The email field must not be blank.": "Epostfeltet kan ikkje vera tomt.",
"The user name field must not be blank.": "Brukarnamnfeltet kan ikkje vera tomt.", "The user name field must not be blank.": "Brukarnamnfeltet kan ikkje vera tomt.",
"The phone number field must not be blank.": "Telefonnummerfeltet kan ikkje vera tomt.", "The phone number field must not be blank.": "Telefonnummerfeltet kan ikkje vera tomt.",
"The password field must not be blank.": "Passordfeltet kan ikkje vera tomt.", "The password field must not be blank.": "Passordfeltet kan ikkje vera tomt.",
@ -608,14 +608,14 @@
"Forgot your password?": "Gløymt passordet ditt?", "Forgot your password?": "Gløymt passordet ditt?",
"%(serverName)s Matrix ID": "%(serverName)s Matrix-ID", "%(serverName)s Matrix ID": "%(serverName)s Matrix-ID",
"Sign in with": "Logg inn med", "Sign in with": "Logg inn med",
"Email address": "Emailadresse", "Email address": "Epostadresse",
"Sign in": "Logg inn", "Sign in": "Logg inn",
"If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Viss du ikkje seier kva emailadresse du vil bruka vil du ikkje kunna attendestille passordet ditt. Er du sikker?", "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Viss du ikkje seier kva epostadresse du vil bruka vil du ikkje kunna attendestille passordet ditt. Er du sikker?",
"Email address (optional)": "Emailadresse (valfritt)", "Email address (optional)": "Epostadresse (valfritt)",
"You are registering with %(SelectedTeamName)s": "Du melder deg inn med %(SelectedTeamName)s", "You are registering with %(SelectedTeamName)s": "Du melder deg inn med %(SelectedTeamName)s",
"Mobile phone number (optional)": "Mobiltelefonnummer (valfritt)", "Mobile phone number (optional)": "Mobiltelefonnummer (valfritt)",
"Register": "Meld deg inn", "Register": "Meld deg inn",
"Default server": "Utgangspunkttenar", "Default server": "Vanleg tenar",
"Home server URL": "Heimtenar-URL", "Home server URL": "Heimtenar-URL",
"Identity server URL": "Identitetstenar-URL", "Identity server URL": "Identitetstenar-URL",
"What does this mean?": "Kva tyder dette?", "What does this mean?": "Kva tyder dette?",
@ -654,7 +654,7 @@
"Downloading update...": "Lastar oppdatering ned...", "Downloading update...": "Lastar oppdatering ned...",
"Warning": "Åtvaring", "Warning": "Åtvaring",
"Unknown Address": "Ukjend Adresse", "Unknown Address": "Ukjend Adresse",
"NOTE: Apps are not end-to-end encrypted": "MERK DEG: Æppar er ikkje ende-til-ende-enkrypterte", "NOTE: Apps are not end-to-end encrypted": "MERK DEG: Æppar er ikkje ende-til-ende-krypterte",
"Warning: This widget might use cookies.": "Åtvaring: Denne widgeten brukar kanskje datakaker.", "Warning: This widget might use cookies.": "Åtvaring: Denne widgeten brukar kanskje datakaker.",
"Do you want to load widget from URL:": "Vil du lasta widgeten frå URL:", "Do you want to load widget from URL:": "Vil du lasta widgeten frå URL:",
"Allow": "Tillat", "Allow": "Tillat",
@ -725,7 +725,7 @@
"%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s endra avatarane sine", "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s endra avatarane sine",
"%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s har endra avataren sin %(count)s gonger", "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s har endra avataren sin %(count)s gonger",
"%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s endra avataren sin", "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s endra avataren sin",
"%(items)s and %(count)s others|other": "%(items)s og %(count)s andre", "%(items)s and %(count)s others|other": "%(items)s og %(count)s til",
"%(items)s and %(count)s others|one": "%(items)s og ein til", "%(items)s and %(count)s others|one": "%(items)s og ein til",
"%(items)s and %(lastItem)s": "%(items)s og %(lastItem)s", "%(items)s and %(lastItem)s": "%(items)s og %(lastItem)s",
"collapse": "Slå saman", "collapse": "Slå saman",
@ -738,15 +738,15 @@
"Add User": "Legg Brukar til", "Add User": "Legg Brukar til",
"Matrix ID": "Matrix-ID", "Matrix ID": "Matrix-ID",
"Matrix Room ID": "Matrixrom-ID", "Matrix Room ID": "Matrixrom-ID",
"email address": "emailadresse", "email address": "epostadresse",
"You have entered an invalid address.": "Du har skrive ei ugangbar adresse inn.", "You have entered an invalid address.": "Du har skrive ei ugangbar adresse inn.",
"Try using one of the following valid address types: %(validTypesList)s.": "Prøv å bruka ein av dei følgjande gangbare adressesortane: %(validTypesList)s.", "Try using one of the following valid address types: %(validTypesList)s.": "Prøv å bruka ein av dei fylgjande gangbare adressesortane: %(validTypesList)s.",
"Preparing to send logs": "Førebur loggsending", "Preparing to send logs": "Førebur loggsending",
"Logs sent": "Loggar sende", "Logs sent": "Loggar sende",
"Thank you!": "Takk skal du ha!", "Thank you!": "Takk skal du ha!",
"Failed to send logs: ": "Fekk ikkje til å senda loggar: ", "Failed to send logs: ": "Fekk ikkje til å senda loggar: ",
"Submit debug logs": "Send debøgg-loggar inn", "Submit debug logs": "Send debøgg-loggar inn",
"Riot bugs are tracked on GitHub: <a>create a GitHub issue</a>.": "Riot-bøggar følgjast på GitHub: <a>lag eit GitHub-issue</a>.", "Riot bugs are tracked on GitHub: <a>create a GitHub issue</a>.": "Riot-bøggar fylgjast på GitHub: <a>lag eit GitHub-issue</a>.",
"GitHub issue link:": "lenkje til GitHub-issue:", "GitHub issue link:": "lenkje til GitHub-issue:",
"Notes:": "Saker å merka seg:", "Notes:": "Saker å merka seg:",
"Send logs": "Send loggar inn", "Send logs": "Send loggar inn",
@ -781,7 +781,7 @@
"This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. <b>This action is irreversible.</b>": "Dette gjer at brukaren din vert ubrukeleg til evig tid. Du kjem ikkje til å kunna logga inn, og ingen andre kjem til å kunna melde seg inn med den gamle brukar-IDen din. Brukaren din forlét òg alle rom han er i, og brukardetaljane dine vil verta fjerna frå identitetstenaren. <b>Denne handlinga kan ikkje gjerast om.</b>", "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. <b>This action is irreversible.</b>": "Dette gjer at brukaren din vert ubrukeleg til evig tid. Du kjem ikkje til å kunna logga inn, og ingen andre kjem til å kunna melde seg inn med den gamle brukar-IDen din. Brukaren din forlét òg alle rom han er i, og brukardetaljane dine vil verta fjerna frå identitetstenaren. <b>Denne handlinga kan ikkje gjerast om.</b>",
"Deactivate Account": "Avliv Brukaren", "Deactivate Account": "Avliv Brukaren",
"Deactivating your account <b>does not by default cause us to forget messages you have sent.</b> If you would like us to forget your messages, please tick the box below.": "Å avliva brukaren din <b>gjer i utgangspunktet ikkje at vi gløymer meldingane du har send.</b> Viss du vil at vi skal gløyma meldingane dine, ver venleg og kryss av i firkanten under.", "Deactivating your account <b>does not by default cause us to forget messages you have sent.</b> If you would like us to forget your messages, please tick the box below.": "Å avliva brukaren din <b>gjer i utgangspunktet ikkje at vi gløymer meldingane du har send.</b> Viss du vil at vi skal gløyma meldingane dine, ver venleg og kryss av i firkanten under.",
"Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Meldingssynlegheit på Matrix liknar på email. At vi gløymer meldingane dine tyder at meldingar du har send ikkje vil verta delt med nye, ikkje-innmeldte brukarar, men brukare som er meldt på som allereie har tilgang til desse meldingane vil fortsatt kunne sjå kopien deira.", "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Meldingssynlegheit på Matrix liknar på epost. At vi gløymer meldingane dine tyder at meldingar du har send ikkje vil verta delt med nye, ikkje-innmeldte brukarar, men brukare som er meldt på som allereie har tilgang til desse meldingane vil fortsatt kunne sjå kopien deira.",
"Please forget all messages I have sent when my account is deactivated (<b>Warning:</b> this will cause future users to see an incomplete view of conversations)": "Ver venleg og gløym alle meldingane eg har send når brukaren min vert avliven (<b>Åtvaring:</b> dette gjer at framtidige brukarar ikkje fær eit fullstendig oversyn av samtalene)", "Please forget all messages I have sent when my account is deactivated (<b>Warning:</b> this will cause future users to see an incomplete view of conversations)": "Ver venleg og gløym alle meldingane eg har send når brukaren min vert avliven (<b>Åtvaring:</b> dette gjer at framtidige brukarar ikkje fær eit fullstendig oversyn av samtalene)",
"To continue, please enter your password:": "For å gå fram, ver venleg og skriv passordet ditt inn:", "To continue, please enter your password:": "For å gå fram, ver venleg og skriv passordet ditt inn:",
"password": "passord", "password": "passord",
@ -790,7 +790,7 @@
"Device key": "Einingsnykel", "Device key": "Einingsnykel",
"In future this verification process will be more sophisticated.": "I framtida kjem denne godkjenningsprosessen til å vera betre utvikla.", "In future this verification process will be more sophisticated.": "I framtida kjem denne godkjenningsprosessen til å vera betre utvikla.",
"Verify device": "Godkjenn eining", "Verify device": "Godkjenn eining",
"I verify that the keys match": "Eg godkjenner at nyklane samsvarar", "I verify that the keys match": "Eg stadfestar at nyklane samsvarar",
"Back": "Attende", "Back": "Attende",
"Event sent!": "Hending send!", "Event sent!": "Hending send!",
"Event Type": "Hendingsort", "Event Type": "Hendingsort",
@ -801,28 +801,28 @@
"Toolbox": "Verktøykasse", "Toolbox": "Verktøykasse",
"Developer Tools": "Utviklarverktøy", "Developer Tools": "Utviklarverktøy",
"An error has occurred.": "Noko gjekk gale.", "An error has occurred.": "Noko gjekk gale.",
"You added a new device '%(displayName)s', which is requesting encryption keys.": "Du la til den nye eininga '%(displayName)s', som spør om enkrypteringsnyklar.", "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du la til den nye eininga '%(displayName)s', som spør om krypteringsnyklar.",
"Your unverified device '%(displayName)s' is requesting encryption keys.": "Den ikkje-godkjende eininga di '%(displayName)s' spør om enkrypteringsnyklar.", "Your unverified device '%(displayName)s' is requesting encryption keys.": "Den ikkje-godkjende eininga di '%(displayName)s' spør om krypteringsnyklar.",
"Start verification": "Byrj godkjenning", "Start verification": "Byrj godkjenning",
"Share without verifying": "Del utan å godkjenna", "Share without verifying": "Del utan å godkjenna",
"Ignore request": "Oversjå førespurnad", "Ignore request": "Oversjå førespurnad",
"Loading device info...": "Lastar einingsinfo inn...", "Loading device info...": "Lastar einingsinfo inn...",
"Encryption key request": "Enkrypteringsnykel-førespurnad", "Encryption key request": "Krypteringsnykel-førespurnad",
"Sign out": "Logg ut", "Sign out": "Logg ut",
"Log out and remove encryption keys?": "Logg ut og fjern enkrypteringsnyklar?", "Log out and remove encryption keys?": "Logg ut og fjern krypteringsnyklar?",
"Clear Storage and Sign Out": "Tøm Lager og Logg Ut", "Clear Storage and Sign Out": "Tøm Lager og Logg Ut",
"Send Logs": "Send Loggar", "Send Logs": "Send Loggar",
"Refresh": "Hent fram på nytt", "Refresh": "Hent fram på nytt",
"Unable to restore session": "Kunne ikkje henta økta fram att", "Unable to restore session": "Kunne ikkje henta øykta fram att",
"We encountered an error trying to restore your previous session.": "Noko gjekk gale med framhentinga av den førre økta di.", "We encountered an error trying to restore your previous session.": "Noko gjekk gale med framhentinga av den førre øykta di.",
"If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Viss du har bruka ei nyare utgåve av Riot før, kan det henda at økta di ikkje passar inn i denne utgåva. Lukk dette vindauget og gå attende til den nyare utgåva.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Viss du har bruka ei nyare utgåve av Riot før, kan det henda at øykta di ikkje passar inn i denne utgåva. Lukk dette vindauget og gå attende til den nyare utgåva.",
"Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Det kan henda at å tømma nettlesarlageret rettar opp i det, men det loggar deg ut og kan gjera den enkrypterte pratehistoria uleseleg.", "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Det kan henda at å tømma nettlesarlageret rettar opp i det, men det loggar deg ut og kan gjera den krypterte pratehistoria uleseleg.",
"Invalid Email Address": "Ugangbar Emailadresse", "Invalid Email Address": "Ugangbar Epostadresse",
"This doesn't appear to be a valid email address": "Det ser ikkje ut til at emailadressa er gangbar", "This doesn't appear to be a valid email address": "Det ser ikkje ut til at epostadressa er gangbar",
"Verification Pending": "Ventar på Godkjenning", "Verification Pending": "Ventar på Godkjenning",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Ver venleg og sjekk emailen din og klikk på lenkja du har fått. Når det er gjort, klikk gå fram.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Ver venleg og sjekk eposten din og klikk på lenkja du har fått. Når det er gjort, klikk gå fram.",
"Unable to add email address": "Klarte ikkje å leggja emailadressa til", "Unable to add email address": "Klarte ikkje å leggja epostadressa til",
"Unable to verify email address.": "Klarte ikkje å godkjenne emailadressa.", "Unable to verify email address.": "Klarte ikkje å stadfesta epostadressa.",
"This will allow you to reset your password and receive notifications.": "Dette tillèt deg å attendestilla passordet ditt og å få varsel.", "This will allow you to reset your password and receive notifications.": "Dette tillèt deg å attendestilla passordet ditt og å få varsel.",
"Skip": "Hopp over", "Skip": "Hopp over",
"User names may only contain letters, numbers, dots, hyphens and underscores.": "Brukarnamn kan berre innehalda bokstavar, tal, prikkar, bindestrek og understrek.", "User names may only contain letters, numbers, dots, hyphens and underscores.": "Brukarnamn kan berre innehalda bokstavar, tal, prikkar, bindestrek og understrek.",
@ -834,9 +834,9 @@
"This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.": "Dette vert brukarnamnet ditt på <span></span> heimtenaren, elles so kan du velja ein <a>annan tenar</a>.", "This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.": "Dette vert brukarnamnet ditt på <span></span> heimtenaren, elles so kan du velja ein <a>annan tenar</a>.",
"If you already have a Matrix account you can <a>log in</a> instead.": "Viss du har ein Matrixbrukar allereie kan du <a>logga på</a> i staden.", "If you already have a Matrix account you can <a>log in</a> instead.": "Viss du har ein Matrixbrukar allereie kan du <a>logga på</a> i staden.",
"You have successfully set a password!": "Du sette passordet ditt!", "You have successfully set a password!": "Du sette passordet ditt!",
"You have successfully set a password and an email address!": "Du sette passordet og emailadressa di!", "You have successfully set a password and an email address!": "Du sette passordet og epostadressa di!",
"You can now return to your account after signing out, and sign in on other devices.": "Du kan no gå attende til brukaren din etter å ha logga ut, og logga inn på andre einingar.", "You can now return to your account after signing out, and sign in on other devices.": "Du kan no gå attende til brukaren din etter å ha logga ut, og logga inn på andre einingar.",
"Remember, you can always set an email address in user settings if you change your mind.": "Hugs at du alltid kan setja ei emailadresse i brukarinnstillingar viss du skiftar meining.", "Remember, you can always set an email address in user settings if you change your mind.": "Hugs at du alltid kan setja ei epostadresse i brukarinnstillingar viss du skiftar meining.",
"Failed to change password. Is your password correct?": "Fekk ikkje til å skifta passord. Er passordet rett?", "Failed to change password. Is your password correct?": "Fekk ikkje til å skifta passord. Er passordet rett?",
"(HTTP status %(httpStatus)s)": "(HTTP-tilstand %(httpStatus)s)", "(HTTP status %(httpStatus)s)": "(HTTP-tilstand %(httpStatus)s)",
"Please set a password!": "Ver venleg og set eit passord!", "Please set a password!": "Ver venleg og set eit passord!",
@ -862,7 +862,7 @@
"Reject": "Sei nei", "Reject": "Sei nei",
"You cannot delete this message. (%(code)s)": "Du kan ikkje sletta meldinga. (%(code)s)", "You cannot delete this message. (%(code)s)": "Du kan ikkje sletta meldinga. (%(code)s)",
"Resend": "Send på nytt", "Resend": "Send på nytt",
"Cancel Sending": "Avbryt Sending", "Cancel Sending": "Bryt Sending av",
"Forward Message": "Vidaresend Melding", "Forward Message": "Vidaresend Melding",
"Reply": "Svar", "Reply": "Svar",
"Pin Message": "Fest Meldinga", "Pin Message": "Fest Meldinga",
@ -876,7 +876,7 @@
"All messages (noisy)": "Alle meldingar (bråket)", "All messages (noisy)": "Alle meldingar (bråket)",
"All messages": "Alle meldingar", "All messages": "Alle meldingar",
"Mentions only": "Berre når eg vert nemnd", "Mentions only": "Berre når eg vert nemnd",
"Leave": "Far ut", "Leave": "Far frå",
"Forget": "Gløym", "Forget": "Gløym",
"Low Priority": "Lågrett", "Low Priority": "Lågrett",
"Direct Chat": "Direktesamtale", "Direct Chat": "Direktesamtale",
@ -885,13 +885,13 @@
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot brukar mange omfattande nettlesarfunksjonar, og nokre av dei er ikkje tilgjengelege eller i utprøving i nettlesaren din.", "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot brukar mange omfattande nettlesarfunksjonar, og nokre av dei er ikkje tilgjengelege eller i utprøving i nettlesaren din.",
"Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Ver venleg og legg <chromeLink>Chrome</chromeLink> eller <firefoxLink>Firefox</firefoxLink> inn på datamaskina for den beste opplevinga.", "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Ver venleg og legg <chromeLink>Chrome</chromeLink> eller <firefoxLink>Firefox</firefoxLink> inn på datamaskina for den beste opplevinga.",
"<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> og <operaLink>Opera</operaLink> verkar òg.", "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> og <operaLink>Opera</operaLink> verkar òg.",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Med denne nettlesaren, er det mogleg at synet og kjensla av applikasjonen er fullstendig gale, og nokre eller alle funksjonar verkar kanskje ikkje. Viss du vil prøva same kva kan du gå fram, men då du må sjølv handtera alle vanskar du møter på!", "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Med denne nettlesaren, er det mogleg at synet og kjensla av applikasjonen er fullstendig gale, og nokre eller alle funksjonar verkar kanskje ikkje. Viss du vil prøva likevel kan du gå fram, men då du må sjølv handtera alle vanskar du møter på!",
"I understand the risks and wish to continue": "Eg forstår farane og vil gå fram", "I understand the risks and wish to continue": "Eg forstår farane og vil gå fram",
"Name": "Namn", "Name": "Namn",
"Topic": "Emne", "Topic": "Emne",
"Make this room private": "Gjer dette rommet privat", "Make this room private": "Gjer dette rommet privat",
"Share message history with new users": "Del meldingshistoria med nye brukarar", "Share message history with new users": "Del meldingshistoria med nye brukarar",
"Encrypt room": "Enkrypter rommet", "Encrypt room": "Krypter rommet",
"You must <a>register</a> to use this functionality": "Du må <a>melda deg inn</a> for å bruka denne funksjonen", "You must <a>register</a> to use this functionality": "Du må <a>melda deg inn</a> for å bruka denne funksjonen",
"You must join the room to see its files": "Du må fare inn i rommet for å sjå filene dets", "You must join the room to see its files": "Du må fare inn i rommet for å sjå filene dets",
"There are no visible files in this room": "Det er ingen synlege filer i dette rommet", "There are no visible files in this room": "Det er ingen synlege filer i dette rommet",
@ -899,13 +899,13 @@
"Add rooms to the community summary": "Legg rom til i samfunnsoppsamanfattinga", "Add rooms to the community summary": "Legg rom til i samfunnsoppsamanfattinga",
"Which rooms would you like to add to this summary?": "Kva rom ynskjer du å leggja til i samanfattinga?", "Which rooms would you like to add to this summary?": "Kva rom ynskjer du å leggja til i samanfattinga?",
"Add to summary": "Legg til i samanfattinga", "Add to summary": "Legg til i samanfattinga",
"Failed to add the following rooms to the summary of %(groupId)s:": "Fekk ikkje til å leggja dei følgjande romma til i samanfattinga av %(groupId)s:", "Failed to add the following rooms to the summary of %(groupId)s:": "Fekk ikkje til å leggja dei fylgjande romma til i samanfattinga av %(groupId)s:",
"Add a Room": "Legg eit Rom til", "Add a Room": "Legg eit Rom til",
"Failed to remove the room from the summary of %(groupId)s": "Fekk ikkje til å fjerna rommet frå samanfattinga av %(groupId)s", "Failed to remove the room from the summary of %(groupId)s": "Fekk ikkje til å fjerna rommet frå samanfattinga av %(groupId)s",
"The room '%(roomName)s' could not be removed from the summary.": "Rommet '%(roomName)s' lét seg ikkje fjerna frå samanfattinga.", "The room '%(roomName)s' could not be removed from the summary.": "Rommet '%(roomName)s' lét seg ikkje fjerna frå samanfattinga.",
"Add users to the community summary": "Legg brukarar til i samfunnsamanfattinga", "Add users to the community summary": "Legg brukarar til i samfunnsamanfattinga",
"Who would you like to add to this summary?": "Kven vil du leggja til i samanfattinga?", "Who would you like to add to this summary?": "Kven vil du leggja til i samanfattinga?",
"Failed to add the following users to the summary of %(groupId)s:": "Fekk ikkje til å leggja følgjande brukarar til i samanfattinga av %(groupId)s:", "Failed to add the following users to the summary of %(groupId)s:": "Fekk ikkje til å leggja fylgjande brukarar til i samanfattinga av %(groupId)s:",
"Add a User": "Legg ein Brukar til", "Add a User": "Legg ein Brukar til",
"Failed to remove a user from the summary of %(groupId)s": "Fekk ikkje til å fjerna brukaren frå samanfattinga av %(groupId)s", "Failed to remove a user from the summary of %(groupId)s": "Fekk ikkje til å fjerna brukaren frå samanfattinga av %(groupId)s",
"The user '%(displayName)s' could not be removed from the summary.": "Brukaren '%(displayName)s' lét seg ikkje fjerna frå samanfattinga.", "The user '%(displayName)s' could not be removed from the summary.": "Brukaren '%(displayName)s' lét seg ikkje fjerna frå samanfattinga.",
@ -944,13 +944,13 @@
"Can't leave Server Notices room": "Kan ikkje fara frå Tenarvarsel-rommet", "Can't leave Server Notices room": "Kan ikkje fara frå Tenarvarsel-rommet",
"This room is used for important messages from the Homeserver, so you cannot leave it.": "Dette rommet er for viktige meldingar frå Heimtenaren, so du kan ikkje fara frå det.", "This room is used for important messages from the Homeserver, so you cannot leave it.": "Dette rommet er for viktige meldingar frå Heimtenaren, so du kan ikkje fara frå det.",
"Signed Out": "Logga Ut", "Signed Out": "Logga Ut",
"For security, this session has been signed out. Please sign in again.": "Av sikkerheitsgrunnar har denne økta vorte logga ut. Ver venleg og logg inn att.", "For security, this session has been signed out. Please sign in again.": "Av sikkerheitsgrunnar har denne øykta vorte logga ut. Ver venleg og logg inn att.",
"Terms and Conditions": "Vilkår og Føresetnader", "Terms and Conditions": "Vilkår og Føresetnader",
"To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "For å framleis bruka %(homeserverDomain)s sin heimtenar må du sjå over og seia deg einig i våre Vilkår og Føresetnader.", "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "For å framleis bruka %(homeserverDomain)s sin heimtenar må du sjå over og seia deg einig i våre Vilkår og Føresetnader.",
"Review terms and conditions": "Sjå over Vilkår og Føresetnader", "Review terms and conditions": "Sjå over Vilkår og Føresetnader",
"Old cryptography data detected": "Gamal kryptografidata vart oppdagen", "Old cryptography data detected": "Gamal kryptografidata vart oppdagen",
"Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data frå ei eldre utgåve av Riot vart oppdagen. I den eldre utgåva hadde dette gjort at ende-til-ende-kryptografi ikkje verkar som det skal. Ende-til-ende-enkrypterte meldingar som vert utveksla nyleg med den gamle utgåva er det kanskje ikkje mogeleg å dekryptera i denne utgåva. Dette fører kanskje òg til at meldingar som vart utveksla med denne utgåva ikkje verkar. Viss du opplever vansker, logg ut og inn att. For å spara på meldingshistoria, hent nyklane dine ut og inn at.", "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data frå ei eldre utgåve av Riot vart oppdagen. I den eldre utgåva hadde dette gjort at ende-til-ende-kryptografi ikkje verkar som det skal. Ende-til-ende-krypterte meldingar som vert utveksla nyleg med den gamle utgåva er det kanskje ikkje mogeleg å dekryptera i denne utgåva. Dette fører kanskje òg til at meldingar som vart utveksla med denne utgåva ikkje verkar. Viss du opplever vansker, logg ut og inn att. For å spara på meldingshistoria, hent nyklane dine ut og inn at.",
"Logout": "Utlogging", "Logout": "Loggar ut",
"Your Communities": "Dine Samfunn", "Your Communities": "Dine Samfunn",
"Error whilst fetching joined communities": "Noko gjekk gale med innhentinga av samfunna du er i", "Error whilst fetching joined communities": "Noko gjekk gale med innhentinga av samfunna du er i",
"Create a new community": "Lag eit nytt samfunn", "Create a new community": "Lag eit nytt samfunn",
@ -981,12 +981,12 @@
"#example": "#døme", "#example": "#døme",
"Scroll to bottom of page": "Blad til botnen", "Scroll to bottom of page": "Blad til botnen",
"Message not sent due to unknown devices being present": "Meldinga vart ikkje send fordi ukjende einingar er til stades", "Message not sent due to unknown devices being present": "Meldinga vart ikkje send fordi ukjende einingar er til stades",
"<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.": "<showDevicesText>Vis einingar</showDevicesText>, <sendAnywayText>Send same kva</sendAnywayText> eller <cancelText>Avbryt</cancelText>.", "<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.": "<showDevicesText>Vis einingar</showDevicesText>, <sendAnywayText>Send likevel</sendAnywayText> eller <cancelText>Bryt av</cancelText>.",
"You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.": "Du kan ikkje senda meldingar før du ser over og seier deg einig i våre <consentLink>Vilkår og Føresetnader</consentLink>.", "You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.": "Du kan ikkje senda meldingar før du ser over og seier deg einig i våre <consentLink>Vilkår og Føresetnader</consentLink>.",
"%(count)s of your messages have not been sent.|other": "Nokre av meldingane dine vart ikkje sende.", "%(count)s of your messages have not been sent.|other": "Nokre av meldingane dine vart ikkje sende.",
"%(count)s of your messages have not been sent.|one": "Meldinga di vart ikkje send.", "%(count)s of your messages have not been sent.|one": "Meldinga di vart ikkje send.",
"%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.|other": "<resendText>Send alle på nytt</resendText> eller <cancelText>avbryt alle</cancelText>. Du kan ogso velja enkelte meldingar til sending på nytt eller avbryting.", "%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.|other": "<resendText>Send alle på nytt</resendText> eller <cancelText>avbryt alle</cancelText>. Du kan ogso velja enkelte meldingar til sending på nytt eller avbryting.",
"%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.|one": "<resendText>Send melding på nytt</resendText> eller <cancelText>avbryt</cancelText>.", "%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.|one": "<resendText>Send melding på nytt</resendText> eller <cancelText>bryt av</cancelText>.",
"Connectivity to the server has been lost.": "Tilkoplinga til tenaren vart tapt.", "Connectivity to the server has been lost.": "Tilkoplinga til tenaren vart tapt.",
"Sent messages will be stored until your connection has returned.": "Sende meldingar lagrast ikkje før tilkoplinga di er attende.", "Sent messages will be stored until your connection has returned.": "Sende meldingar lagrast ikkje før tilkoplinga di er attende.",
"%(count)s new messages|other": "%(count)s nye meldingar", "%(count)s new messages|other": "%(count)s nye meldingar",
@ -1012,9 +1012,9 @@
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Freista å lasta eit gjeve punkt i rommet si tidslinje, men du har ikkje lov til å sjå den sistnemnde meldinga.", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Freista å lasta eit gjeve punkt i rommet si tidslinje, men du har ikkje lov til å sjå den sistnemnde meldinga.",
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Freista å lasta eit gjeve punkt i rommet si tidslinje, men klarte ikkje å finna det.", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Freista å lasta eit gjeve punkt i rommet si tidslinje, men klarte ikkje å finna det.",
"Failed to load timeline position": "Fekk ikkje til å lasta tidslinjestillinga", "Failed to load timeline position": "Fekk ikkje til å lasta tidslinjestillinga",
"Uploading %(filename)s and %(count)s others|other": "Lastar %(filename)s og %(count)s andre opp", "Uploading %(filename)s and %(count)s others|other": "Lastar %(filename)s og %(count)s til opp",
"Uploading %(filename)s and %(count)s others|zero": "Lastar %(filename)s opp", "Uploading %(filename)s and %(count)s others|zero": "Lastar %(filename)s opp",
"Uploading %(filename)s and %(count)s others|one": "Lastar %(filename)s og %(count)s andre opp", "Uploading %(filename)s and %(count)s others|one": "Lastar %(filename)s og %(count)s til opp",
"Light theme": "Ljost preg", "Light theme": "Ljost preg",
"Dark theme": "Dimt preg", "Dark theme": "Dimt preg",
"Status.im theme": "Status.im-preg", "Status.im theme": "Status.im-preg",
@ -1026,16 +1026,16 @@
"Remove %(threePid)s?": "Fjern %(threePid)s?", "Remove %(threePid)s?": "Fjern %(threePid)s?",
"Unable to remove contact information": "Klarte ikkje å fjerna kontaktinfo", "Unable to remove contact information": "Klarte ikkje å fjerna kontaktinfo",
"Refer a friend to Riot:": "Vis ein ven til Riot:", "Refer a friend to Riot:": "Vis ein ven til Riot:",
"Interface Language": "Grensesnitt-mål", "Interface Language": "Grensesnitts-mål",
"User Interface": "Brukargrensesnitt", "User Interface": "Brukargrensesnitt",
"<not supported>": "<ikkje støtta>", "<not supported>": "<ikkje støtta>",
"Import E2E room keys": "Hent E2E-romnyklar", "Import E2E room keys": "Hent E2E-romnyklar inn",
"Cryptography": "Kryptografi", "Cryptography": "Kryptografi",
"Device ID:": "Einings-ID:", "Device ID:": "Einings-ID:",
"Device key:": "Einingsnykel:", "Device key:": "Einingsnykel:",
"Ignored Users": "Oversedde Brukarar", "Ignored Users": "Oversedde Brukarar",
"Debug Logs Submission": "Innsending av Debøgg-loggar", "Debug Logs Submission": "Innsending av Debøgg-loggar",
"If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Viss du har send inn ein bøgg gjennom GitHub, kan debøgg-loggar hjelpa oss med å finna problemet. Debøgg-loggar inneheld data om æpp-bruk, b.a. Brukarnamnet ditt, IDane eller aliasa på romma eller gruppene du har vitja og brukarnamna til andre brukarar. Dei inneheld ikkje meldingar.", "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Viss du har sendt inn ein bøgg gjennom GitHub, kan debøgg-loggar hjelpa oss med å finna problemet. Debøgg-loggar inneheld data om æpp-bruk, b.a. Brukarnamnet ditt, IDane eller aliasa på romma eller gruppene du har vitja og brukarnamna til andre brukarar. Dei inneheld ikkje meldingar.",
"Riot collects anonymous analytics to allow us to improve the application.": "Riot samlar anonym statistikk inn slik at vi kan forbetre æppen.", "Riot collects anonymous analytics to allow us to improve the application.": "Riot samlar anonym statistikk inn slik at vi kan forbetre æppen.",
"Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Personvern er viktig for oss, so vi samlar ikkje på personleg eller attkjenneleg data for statistikken vår.", "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Personvern er viktig for oss, so vi samlar ikkje på personleg eller attkjenneleg data for statistikken vår.",
"Learn more about how we use analytics.": "Finn ut meir om korleis vi brukar statistikk.", "Learn more about how we use analytics.": "Finn ut meir om korleis vi brukar statistikk.",
@ -1059,8 +1059,8 @@
"Microphone": "Ljodopptaking", "Microphone": "Ljodopptaking",
"Camera": "Kamera", "Camera": "Kamera",
"VoIP": "VoIP", "VoIP": "VoIP",
"Email": "Email", "Email": "Epost",
"Add email address": "Legg emailadresse til", "Add email address": "Legg epostadresse til",
"Display name": "Visingsnamn", "Display name": "Visingsnamn",
"Account": "Brukar", "Account": "Brukar",
"To return to your account in future you need to set a password": "For å kunna koma attende til brukaren din i framtida må du setja eit passord", "To return to your account in future you need to set a password": "For å kunna koma attende til brukaren din i framtida må du setja eit passord",
@ -1071,21 +1071,21 @@
"matrix-react-sdk version:": "matrix-react-sdk-utgåve:", "matrix-react-sdk version:": "matrix-react-sdk-utgåve:",
"riot-web version:": "riot-web-utgåve:", "riot-web version:": "riot-web-utgåve:",
"olm version:": "olm-utgåve:", "olm version:": "olm-utgåve:",
"Failed to send email": "Fekk ikkje til å senda emailen", "Failed to send email": "Fekk ikkje til å senda eposten",
"The email address linked to your account must be entered.": "Du må skriva emailadressa som er tilknytta brukaren din inn.", "The email address linked to your account must be entered.": "Du må skriva epostadressa som er tilknytta brukaren din inn.",
"A new password must be entered.": "Du må skriva eit nytt passord inn.", "A new password must be entered.": "Du må skriva eit nytt passord inn.",
"New passwords must match each other.": "Dei nye passorda må vera like.", "New passwords must match each other.": "Dei nye passorda må vera like.",
"An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Ein email vert send til %(emailAddress)s. Når du har far følgd lenkja i den, klikk under.", "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Ein epost vart send til %(emailAddress)s. Når du har far fylgd lenkja i den, klikk under.",
"I have verified my email address": "Eg har godkjend emailadressa mi", "I have verified my email address": "Eg har godkjend epostadressa mi",
"Your password has been reset": "Passordet ditt vart attendesett", "Your password has been reset": "Passordet ditt vart attendesett",
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Du vart logga av alle einingar og får ikkje lenger pushvarsel. For å skru varsel på att, logg inn igjen på kvar eining", "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Du vart logga av alle einingar og får ikkje lenger pushvarsel. For å skru varsel på att, logg inn igjen på kvar eining",
"Return to login screen": "Gå attende til innlogging", "Return to login screen": "Gå attende til innlogging",
"To reset your password, enter the email address linked to your account": "For å attendestilla passordet ditt, skriv emailadressa som er lenkja til brukaren din inn", "To reset your password, enter the email address linked to your account": "For å attendestilla passordet ditt, skriv epostadressa som er lenkja til brukaren din inn",
"New password": "Nytt passord", "New password": "Nytt passord",
"Confirm your new password": "Godkjenn det nye passordet ditt", "Confirm your new password": "Stadfest det nye passordet ditt",
"Send Reset Email": "Send attendestillingsemail", "Send Reset Email": "Send attendestillingsepost",
"Create an account": "Lag ein brukar", "Create an account": "Lag ein brukar",
"This Home Server does not support login using email address.": "Denne Heimtenaren støttar ikkje innlogging med email.", "This Home Server does not support login using email address.": "Denne Heimtenaren støttar ikkje innlogging med epost.",
"Please contact your service administrator to continue using this service.": "Ver venleg og kontakt din tenesteadministrator for å halda fram med å bruka tenesten.", "Please contact your service administrator to continue using this service.": "Ver venleg og kontakt din tenesteadministrator for å halda fram med å bruka tenesten.",
"Incorrect username and/or password.": "Urett brukarnamn og/eller passord.", "Incorrect username and/or password.": "Urett brukarnamn og/eller passord.",
"Please note you are logging into the %(hs)s server, not matrix.org.": "Merk deg at du loggar inn på %(hs)s-tenaren, ikkje matrix.org.", "Please note you are logging into the %(hs)s server, not matrix.org.": "Merk deg at du loggar inn på %(hs)s-tenaren, ikkje matrix.org.",
@ -1099,11 +1099,11 @@
"Failed to fetch avatar URL": "Klarte ikkje å henta avatar-URLen", "Failed to fetch avatar URL": "Klarte ikkje å henta avatar-URLen",
"Set a display name:": "Set eit visingsnamn:", "Set a display name:": "Set eit visingsnamn:",
"Upload an avatar:": "Last ein avatar opp:", "Upload an avatar:": "Last ein avatar opp:",
"This server does not support authentication with a phone number.": "Denne tenaren støttar ikkje godkjenning gjennom telefonnummer.", "This server does not support authentication with a phone number.": "Denne tenaren støttar ikkje stadfesting gjennom telefonnummer.",
"Missing password.": "Vantande passord.", "Missing password.": "Vantande passord.",
"Passwords don't match.": "Passorda er ikkje like.", "Passwords don't match.": "Passorda er ikkje like.",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Passordet er for kort (i det minste %(MIN_PASSWORD_LENGTH)s).", "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Passordet er for kort (i det minste %(MIN_PASSWORD_LENGTH)s).",
"This doesn't look like a valid email address.": "Dette ser ikkje ut som ei gangbar emailadresse.", "This doesn't look like a valid email address.": "Dette ser ikkje ut som ei gangbar epostadresse.",
"This doesn't look like a valid phone number.": "Dette ser ikkje ut som eit gangbart telefonnummer.", "This doesn't look like a valid phone number.": "Dette ser ikkje ut som eit gangbart telefonnummer.",
"You need to enter a user name.": "Du må skriva eit brukarnamn inn.", "You need to enter a user name.": "Du må skriva eit brukarnamn inn.",
"An unknown error occurred.": "Noko ukjend gjekk gale.", "An unknown error occurred.": "Noko ukjend gjekk gale.",
@ -1123,24 +1123,24 @@
"Curve25519 identity key": "Curve25519-identitetsnykel", "Curve25519 identity key": "Curve25519-identitetsnykel",
"none": "ingen", "none": "ingen",
"Algorithm": "Algoritme", "Algorithm": "Algoritme",
"unencrypted": "ikkje-enkryptert", "unencrypted": "ikkje-kryptert",
"Decryption error": "Noko gjekk gale med dekrypteringa", "Decryption error": "Noko gjekk gale med dekrypteringa",
"Session ID": "Økt-ID", "Session ID": "Økt-ID",
"End-to-end encryption information": "Ende-til-ende-enkrypteringsinfo", "End-to-end encryption information": "Ende-til-ende-krypteringsinfo",
"Event information": "Hendingsinfo", "Event information": "Hendingsinfo",
"Sender device information": "Info om avsendareininga", "Sender device information": "Info om avsendareininga",
"Passphrases must match": "Passetningane må vera like", "Passphrases must match": "Passetningane må vera like",
"Passphrase must not be empty": "Passetningsfeltet kan ikkje vera tomt", "Passphrase must not be empty": "Passetningsfeltet kan ikkje vera tomt",
"Enter passphrase": "Skriv passetning inn", "Enter passphrase": "Skriv passetning inn",
"Confirm passphrase": "Godkjenn passetning", "Confirm passphrase": "Stadfest passetning",
"You must specify an event type!": "Du må oppgje ein handlingssort!", "You must specify an event type!": "Du må oppgje ein handlingssort!",
"Call Timeout": "Tidsavbrot i Samtala", "Call Timeout": "Tidsavbrot i Samtala",
"Enable automatic language detection for syntax highlighting": "Skru automatisk måloppdaging på for syntax-understreking", "Enable automatic language detection for syntax highlighting": "Skru automatisk måloppdaging på for syntax-understreking",
"Show empty room list headings": "Vis overskrift på tomme romlister", "Show empty room list headings": "Vis overskrift på tomme romlister",
"Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å endra passordet ditt attendestiller førebelst alle ende-til-ende-enkrypteringsnyklar på alle einingar, slik at enkryptert pratehistorie vert uleseleg, med mindre du fyrst hentar romnyklane dine ut og hentar dei inn att etterpå. I framtida vil denne prosessen vera betre.", "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å endra passordet ditt attendestiller førebelst alle ende-til-ende-krypteringsnyklar på alle einingar, slik at kryptert pratehistorie vert uleseleg, med mindre du fyrst hentar romnyklane dine ut og hentar dei inn att etterpå. I framtida vil denne prosessen vera betre.",
"Export E2E room keys": "Hent E2E-romnyklar ut", "Export E2E room keys": "Hent E2E-romnyklar ut",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Det kan henda at du stilte dei inn på ein annan klient enn Riot. Du kan ikkje stilla på dei i Riot men dei gjeld framleis", "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Det kan henda at du stilte dei inn på ein annan klient enn Riot. Du kan ikkje stilla på dei i Riot men dei gjeld framleis",
"Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Nykeldelingsførespurnader vert sende til dei andre einingane dine av seg sjølv. Viss du sa nei til eller avviste førespurnadene på dei andre einingane, klikk her for å beda om nyklane for denne økta på nytt.", "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Nykeldelingsførespurnader vert sende til dei andre einingane dine av seg sjølv. Viss du sa nei til eller avviste førespurnadene på dei andre einingane, klikk her for å beda om nyklane for denne øykta på nytt.",
"Jump to read receipt": "Hopp til lest-lappen", "Jump to read receipt": "Hopp til lest-lappen",
"Filter room members": "Filtrer rommedlemer", "Filter room members": "Filtrer rommedlemer",
"inline-code": "kode-i-tekst", "inline-code": "kode-i-tekst",
@ -1154,8 +1154,8 @@
"Filter community members": "Filtrer samfunnsmedlemer", "Filter community members": "Filtrer samfunnsmedlemer",
"Custom Server Options": "Eigentenar-innstillingar", "Custom Server Options": "Eigentenar-innstillingar",
"Filter community rooms": "Filtrer samfunnsrom", "Filter community rooms": "Filtrer samfunnsrom",
"Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie (please see our <PolicyLink>Cookie Policy</PolicyLink>).": "Ver venleg og hjelp oss å forbetra Riot.im med å senda <UsageDataLink>anonym brukardata</UsageDataLink>. Dette brukar ei datakake (ver venleg og sjå på <PolicyLink>Datakakeretningslinene våre</PolicyLink>).", "Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie (please see our <PolicyLink>Cookie Policy</PolicyLink>).": "Ver venleg og hjelp oss å forbetra Riot.im ved å senda <UsageDataLink>anonym brukardata</UsageDataLink>. Dette brukar ei datakake (ver venleg og sjå på <PolicyLink>Datakakeretningslinene våre</PolicyLink>).",
"Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie.": "Ver venleg og hjelp oss å forbetra Riot.im med å senda <UsageDataLink>anonym brukardata</UsageDataLink>. Dette brukar ei datakake.", "Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. This will use a cookie.": "Ver venleg og hjelp oss å forbetra Riot.im ved å senda <UsageDataLink>anonym brukardata</UsageDataLink>. Dette brukar ei datakake.",
"Whether or not you're using the Richtext mode of the Rich Text Editor": "Om du brukar Riktekst-innstillinga på Riktekstfeltet", "Whether or not you're using the Richtext mode of the Rich Text Editor": "Om du brukar Riktekst-innstillinga på Riktekstfeltet",
"WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ÅTVARING: NOKO GJEKK GALT MED NYKELGODKJENNINGA! Signeringsnykelen til %(userId)s og eininga %(deviceId)s er \"%(fprint)s\", som ikkje er lik den gjevne nykelen \"%(fingerprint)s\". Dette kan tyda at nokon tjuvlyttar på kommuniseringa!", "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ÅTVARING: NOKO GJEKK GALT MED NYKELGODKJENNINGA! Signeringsnykelen til %(userId)s og eininga %(deviceId)s er \"%(fprint)s\", som ikkje er lik den gjevne nykelen \"%(fingerprint)s\". Dette kan tyda at nokon tjuvlyttar på kommuniseringa!",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Signeringsnykelen du oppgav er lik signeringsnykelen du fekk frå %(userId)s si eining %(deviceId)s. Eininga merkast som godkjend.", "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Signeringsnykelen du oppgav er lik signeringsnykelen du fekk frå %(userId)s si eining %(deviceId)s. Eininga merkast som godkjend.",
@ -1182,8 +1182,8 @@
"Custom": "Sjølvsett", "Custom": "Sjølvsett",
"Failed to set Direct Message status of room": "Fekk ikkje til å setja Direktemelding-tilstanden til rommet", "Failed to set Direct Message status of room": "Fekk ikkje til å setja Direktemelding-tilstanden til rommet",
"Did you know: you can use communities to filter your Riot.im experience!": "Visste du at: du kan bruka samfunn for å filtrera Riot.im-opplevinga di!", "Did you know: you can use communities to filter your Riot.im experience!": "Visste du at: du kan bruka samfunn for å filtrera Riot.im-opplevinga di!",
"To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "For å setja opp eit filter, drag ein samfunnsavatar bort til filterpanelet til venstre på skjermen. Du kan klikka på ein avatar i filterpanelet når som helst for å berre sjå romma og folka tilknytta det samfunnet.", "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "For å setja opp eit filter, drag ein samfunnsavatar bort til filterpanelet til venstre på skjermen. Du kan klikka på ein avatar i filterpanelet når som helst for å sjå berre romma og folka tilknytta det samfunnet.",
"Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Lag eit samfunn for å føra saman brukarar og rom! Bygg din eiga heimeside for å kreva din del av Matrix-verda.", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Lag eit samfunn for å føra saman brukarar og rom! Bygg di eiga heimeside for å kreva din del av Matrix-verda.",
"Hide panel": "Gøym panel", "Hide panel": "Gøym panel",
"Unable to look up room ID from server": "Klarte ikkje å henta rom-ID frå tenaren", "Unable to look up room ID from server": "Klarte ikkje å henta rom-ID frå tenaren",
"Your message wasnt sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Meldinga di vart ikkje send fordi heimtenaren har truffe si Månadlege Grense for Aktive Brukarar. Ver venleg og tak kontakt med tenesteadministratoren din for å halda frama med å bruka tenesten.", "Your message wasnt sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Meldinga di vart ikkje send fordi heimtenaren har truffe si Månadlege Grense for Aktive Brukarar. Ver venleg og tak kontakt med tenesteadministratoren din for å halda frama med å bruka tenesten.",
@ -1197,7 +1197,7 @@
"Clear Cache and Reload": "Tøm Buffar og Last inn att", "Clear Cache and Reload": "Tøm Buffar og Last inn att",
"Profile": "Brukar", "Profile": "Brukar",
"Access Token:": "Tilgangs-Teikn:", "Access Token:": "Tilgangs-Teikn:",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å attendestilla passordet vil førebels attendestilla alle ende-til-ende-enkrypteringsnyklar på alle einingar, slik at enkrypterte samtaler vert uleselege, med mindre du fyrst hentar romnyklane ut og hentar dei inn att etterpå. Dette vil forbetrast i framtida.", "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å attendestilla passordet vil førebels attendestilla alle ende-til-ende-krypteringsnyklar på alle einingar, slik at krypterte samtaler vert uleselege, med mindre du fyrst hentar romnyklane ut og hentar dei inn att etterpå. Dette vil forbetrast i framtida.",
"This homeserver has hit its Monthly Active User limit": "Heimtenaren har truffe den Månadlege Grensa si for Aktive Brukarar", "This homeserver has hit its Monthly Active User limit": "Heimtenaren har truffe den Månadlege Grensa si for Aktive Brukarar",
"This homeserver doesn't offer any login flows which are supported by this client.": "Heimtenaren tilbyd ingen nye innloggingsstraumar som støttast av denne klienten.", "This homeserver doesn't offer any login flows which are supported by this client.": "Heimtenaren tilbyd ingen nye innloggingsstraumar som støttast av denne klienten.",
"Claimed Ed25519 fingerprint key": "Gjorde krav på Ed25519-fingeravtrykksnykel", "Claimed Ed25519 fingerprint key": "Gjorde krav på Ed25519-fingeravtrykksnykel",
@ -1211,13 +1211,19 @@
"Failed to remove tag %(tagName)s from room": "Fekk ikkje til å fjerna merket %(tagName)s frå rommet", "Failed to remove tag %(tagName)s from room": "Fekk ikkje til å fjerna merket %(tagName)s frå rommet",
"Failed to add tag %(tagName)s to room": "Fekk ikkje til å leggja merket %(tagName)s til i rommet", "Failed to add tag %(tagName)s to room": "Fekk ikkje til å leggja merket %(tagName)s til i rommet",
"Hide read receipts": "Gøym lest-lappar", "Hide read receipts": "Gøym lest-lappar",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Av sikkerheitsmessige grunnar vil det å logga ut sletta alle ende-til-ende-enkrypteringsnyklar frå nettlesaren. Viss du vil kunna dekryptera samtalehistoria di på framtidige Riot-økter, ver venleg og hent ut romnyklande dine og tak vare på dei.", "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Av sikkerheitsmessige grunnar vil det å logga ut sletta alle ende-til-ende-krypteringsnyklar frå nettlesaren. Viss du vil kunna dekryptera samtalehistoria di på framtidige Riot-øykter, ver venleg og hent ut romnyklande dine og tak vare på dei.",
"This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dette tillèt deg å henta nyklane for meldingar du har sendt i enkrypterte rom ut til ei lokal fil. Då kan du henta fila inn til ein annan Matrix-klient i framtida, slik at den klienten òg kan dekryptera meldingane.", "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dette tillèt deg å henta nyklane for meldingar du har sendt i krypterte rom ut til ei lokal fil. Då kan du henta fila inn til ein annan Matrix-klient i framtida, slik at den klienten òg kan dekryptera meldingane.",
"The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Å henta filen ut tillèt kven som helst som kan lesa ho å dekryptera alle enkrypterte meldingar du kan sjå, so du bør passa på å halda ho trygg. For å hjelpa til med dette bør du skriva ei passetning inn i feltet under, som vil brukast til å enkryptere den uthenta dataen. Det vil berre vera mogeleg å henta dataen inn med den same passetninga.", "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Å henta filen ut tillèt kven som helst som kan lesa ho å dekryptera alle krypterte meldingar du kan sjå, so du bør passa på å halda ho trygg. For å hjelpa til med dette bør du skriva ei passetning inn i feltet under, som vil brukast til å kryptere den uthenta dataen. Det vil berre vera mogeleg å henta dataen inn med den same passetninga.",
"This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dette tillèt deg å henta enkrypteringsnyklar som du tidlegare henta ut frå ein annan Matrix-klient inn. Du vil so kunna dekryptera alle meldingane som den andre klienten kunne dekryptera.", "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dette tillèt deg å henta krypteringsnyklar som du tidlegare henta ut frå ein annan Matrix-klient inn. Du vil so kunna dekryptera alle meldingane som den andre klienten kunne dekryptera.",
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Uthentingsfila vil verta verna med ei passetning. Du bør skriva passetninga inn her for å dekryptera fila.", "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Uthentingsfila vil verta verna med ei passetning. Du bør skriva passetninga inn her for å dekryptera fila.",
"Internal room ID: ": "Indre rom-ID: ", "Internal room ID: ": "Indre rom-ID: ",
"Room version number: ": "Romutgåvenummer: ", "Room version number: ": "Romutgåvenummer: ",
"This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar. Ver venleg og <a>tak kontakt med tenesteadministratoren din</a> for å halda fram med å bruka tenesten.", "This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar. Ver venleg og <a>tak kontakt med tenesteadministratoren din</a> for å halda fram med å bruka tenesten.",
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar, so nokre brukarar vil ikkje kunna logga inn. Ver venleg og <a> tak kontakt med tenesteadministratoren din </a> for å auka grensa." "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar, so nokre brukarar vil ikkje kunna logga inn. Ver venleg og <a> tak kontakt med tenesteadministratoren din </a> for å auka grensa.",
"There is a known vulnerability affecting this room.": "Ein kjend sårbarheit påverkar dette rommet.",
"This room version is vulnerable to malicious modification of room state.": "Denne romutgåva er sårbar til vondsinna endring på romtilstanden.",
"Only room administrators will see this warning": "Berre romadministratorar vil sjå denne åtvaringa",
"Please <a>contact your service administrator</a> to continue using the service.": "Ver venleg og <a>tak kontakt med tenesteadministratoren</a> for å halda fram med å bruka tenesten.",
"This homeserver has hit its Monthly Active User limit.": "Heimtenaren har truffe den Månadlege Grensa si for Aktive Brukarar.",
"This homeserver has exceeded one of its resource limits.": "Heimtenaren har gått over ei av ressursgrensene sine."
} }

View File

@ -861,7 +861,7 @@
"An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Сообщение отправлено на %(emailAddress)s. После перехода по ссылке в отправленном вам письме, щелкните ниже.", "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Сообщение отправлено на %(emailAddress)s. После перехода по ссылке в отправленном вам письме, щелкните ниже.",
"Room Notification": "Уведомления комнаты", "Room Notification": "Уведомления комнаты",
"Drop here to tag direct chat": "Перетащите сюда, чтобы пометить как личный чат", "Drop here to tag direct chat": "Перетащите сюда, чтобы пометить как личный чат",
"Drop here to restore": "Перетащиет сюда, чтобы вернуть", "Drop here to restore": "Перетащите сюда, чтобы вернуть",
"Drop here to demote": "Перетащите сюда, чтобы понизить", "Drop here to demote": "Перетащите сюда, чтобы понизить",
"Community Invites": "Приглашения в сообщества", "Community Invites": "Приглашения в сообщества",
"Notify the whole room": "Уведомить всю комнату", "Notify the whole room": "Уведомить всю комнату",
@ -1218,5 +1218,21 @@
"An error ocurred whilst trying to remove the widget from the room": "Произошла ошибка при удалении виджета из комнаты", "An error ocurred whilst trying to remove the widget from the room": "Произошла ошибка при удалении виджета из комнаты",
"System Alerts": "Системные оповещения", "System Alerts": "Системные оповещения",
"Please contact your service administrator to continue using this service.": "Для продолжения использования этого сервиса обратитесь к администратору.", "Please contact your service administrator to continue using this service.": "Для продолжения использования этого сервиса обратитесь к администратору.",
"Room version number: ": "Номер версии комнаты: " "Room version number: ": "Номер версии комнаты: ",
"Internal room ID: ": "Внутренний ID комнаты: ",
"There is a known vulnerability affecting this room.": "В этой комнате есть известная уязвимость.",
"This room version is vulnerable to malicious modification of room state.": "Эта версия комнаты уязвима для злонамеренной модификации состояния.",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "Нажмите здесь, чтобы перейти к последней версии комнаты и обеспечить ее целостность.",
"Only room administrators will see this warning": "Только администраторы комнат увидят это предупреждение",
"Please <a>contact your service administrator</a> to continue using the service.": "Пожалуйста, <a>обратитесь к вашему администратору</a>, чтобы продолжить использование сервиса.",
"Please <a>contact your service administrator</a> to get this limit increased.": "Пожалуйста, <a>обратитесь к вашему администратору</a>, чтобы увеличить этот лимит.",
"Upgrade Room Version": "Обновление версии комнаты",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Обновление этой комнаты требует закрытия текущей комнаты и создания новой. Чтобы предоставить участникам комнаты наилучший опыт, мы:",
"Create a new room with the same name, description and avatar": "Создадим новую комнату с тем же именем, описанием и аватаром",
"Update any local room aliases to point to the new room": "Обновим локальные псевдонимы комнат",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Остановим общение пользователей в старой версии комнаты и опубликуем сообщение, в котором пользователям рекомендуется перейти в новую комнату",
"Put a link back to the old room at the start of the new room so people can see old messages": "Разместим ссылку на старую комнату, чтобы люди могли видеть старые сообщения",
"Please <a>contact your service administrator</a> to continue using this service.": "Пожалуйста, <a>обратитесь к вашему администратору</a>, чтобы продолжить использовать этот сервис.",
"Increase performance by only loading room members on first view": "Увеличьте производительность, загрузив только список участников комнаты",
"Lazy loading members not supported": "Задержка загрузки элементов не поддерживается"
} }

View File

@ -1222,5 +1222,40 @@
"numbered-list": "Číselný zoznam", "numbered-list": "Číselný zoznam",
"Failed to remove widget": "Nepodarilo sa odstrániť widget", "Failed to remove widget": "Nepodarilo sa odstrániť widget",
"An error ocurred whilst trying to remove the widget from the room": "Pri odstraňovaní widgetu z miestnosti sa vyskytla chyba", "An error ocurred whilst trying to remove the widget from the room": "Pri odstraňovaní widgetu z miestnosti sa vyskytla chyba",
"You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.": "Nemôžete posielať žiadne správy, kým si neprečítate a neodsúhlasíte <consentLink>naše zmluvné podmienky</consentLink>." "You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.": "Nemôžete posielať žiadne správy, kým si neprečítate a neodsúhlasíte <consentLink>naše zmluvné podmienky</consentLink>.",
"Sorry, your homeserver is too old to participate in this room.": "Prepáčte, nie je možné prijímať a odosielať do tejto miestnosti, pretože váš domovský server je zastaralý.",
"Please contact your homeserver administrator.": "Prosím, kontaktujte správcu domovského servera.",
"Increase performance by only loading room members on first view": "Zvýšiť výkon načítaním zoznamu členov pri prvom zobrazení",
"System Alerts": "Systémové upozornenia",
"Internal room ID: ": "Interné ID miestnosti: ",
"Room version number: ": "Číslo verzie miestnosti: ",
"Please <a>contact your service administrator</a> to continue using the service.": "Prosím, <a>kontaktujte správcu služieb</a> aby ste službu mohli naďalej používať.",
"This homeserver has hit its Monthly Active User limit.": "Bol dosiahnutý mesačný limit počtu aktívnych používateľov tohoto domovského servera.",
"This homeserver has exceeded one of its resource limits.": "Bol prekročený limit využitia prostriedkov pre tento domovský server.",
"Please <a>contact your service administrator</a> to get this limit increased.": "Prosím, <a>kontaktujte správcu služieb</a> a pokúste sa tento limit navýšiť.",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "Bol dosiahnutý mesačný limit počtu aktívnych používateľov a <b>niektorí používatelia sa nebudú môcť prihlásiť</b>.",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "Bol prekročený limit využitia prostriedkov pre tento domovský server a <b>niektorí používatelia sa nebudú môcť prihlásiť</b>.",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "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, <a>kontaktujte správcu služieb</a> aby ste službu mohli naďalej používať.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "Vaša správa nebola odoslaná, pretože bol prekročený limit prostriedkov tohoto domovského servera. Prosím, <a>kontaktujte správcu služieb</a> aby ste službu mohli naďalej používať.",
"Lazy loading members not supported": "Načítanie zoznamu členov pri prvom zobrazení nie je podporované",
"Lazy loading is not supported by your current homeserver.": "Oneskorené načítanie nepodporuje váš domovský server.",
"Please <a>contact your service administrator</a> to continue using this service.": "Prosím, <a>kontaktujte správcu služieb</a> aby ste mohli službu ďalej používať.",
"This room has been replaced and is no longer active.": "Táto miestnosť bola nahradená a nie je viac aktívna.",
"The conversation continues here.": "Konverzácia pokračuje tu.",
"Upgrade room to version %(ver)s": "Aktualizácia miestnosti na verziu %(ver)s",
"There is a known vulnerability affecting this room.": "Existuje známa zraniteľnosť, ktorú je možné zneužiť v tejto miestnosti.",
"This room version is vulnerable to malicious modification of room state.": "Táto verzia miestnosti je zraniteľná proti zlomyseľným zmenám jej stavu.",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "Kliknutím sem aktualizujete miestnosť na najnovšiu verziu a uistíte sa, že jej integrita je bezpečne zachovaná.",
"Only room administrators will see this warning": "Toto upozornenie sa zobrazuje len správcom miestnosti",
"This room is a continuation of another conversation.": "Táto miestnosť je pokračovaním staršej konverzácii.",
"Click here to see older messages.": "Kliknutím sem zobrazíte staršie správy.",
"Failed to upgrade room": "Nepodarilo sa aktualizovať miestnosť",
"The room upgrade could not be completed": "Nie je možné dokončiť aktualizáciu miestnosti na jej najnovšiu verziu",
"Upgrade this room to version %(version)s": "Aktualizácia tejto miestnosti na verziu %(version)s",
"Upgrade Room Version": "Aktualizovať verziu miestnosti",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Aktualizácia verzii tejto miestnosti si vyžaduje jej uzatvorenie a vytvorenie novej miestnosti na jej pôvodnom mieste. Aby bol prechod pre členov miestnosti čo najplynulejší, nasledovné kroky sa vykonajú automaticky:",
"Create a new room with the same name, description and avatar": "Vznikne nová miestnosť s rovnakým názvom, témou a obrázkom",
"Update any local room aliases to point to the new room": "Všetky lokálne aliasy pôvodnej miestnosti sa aktualizujú tak, aby ukazovali na novú miestnosť",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "V pôvodnej miestnosti bude zverejnené odporúčanie prejsť do novej miestnosti a posielanie do pôvodnej miestnosti bude zakázané pre všetkých používateľov",
"Put a link back to the old room at the start of the new room so people can see old messages": "História novej miestnosti sa začne odkazom do pôvodnej miestnosti, aby si členovia vedeli zobraziť staršie správy"
} }

View File

@ -1003,8 +1003,8 @@
"%(oneUser)schanged their name %(count)s times|one": "%(oneUser)sbytte namn", "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)sbytte namn",
"%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)sändrade sin avatar %(count)s gånger", "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)sändrade sin avatar %(count)s gånger",
"%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)sändrade sin avatar", "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)sändrade sin avatar",
"%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)ssändrade sin avatar %(count)s gånger", "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)sändrade sin avatar %(count)s gånger",
"%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)ssändrade sin avatar", "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)sändrade sin avatar",
"%(items)s and %(count)s others|other": "%(items)s och %(count)s andra", "%(items)s and %(count)s others|other": "%(items)s och %(count)s andra",
"%(items)s and %(count)s others|one": "%(items)s och en annan", "%(items)s and %(count)s others|one": "%(items)s och en annan",
"collapse": "fäll ihop", "collapse": "fäll ihop",
@ -1227,5 +1227,40 @@
"This homeserver has hit its Monthly Active User limit": "Hemservern har nått sin månatliga gräns för användaraktivitet", "This homeserver has hit its Monthly Active User limit": "Hemservern har nått sin månatliga gräns för användaraktivitet",
"Please contact your service administrator to continue using this service.": "Kontakta din serviceadministratör för att fortsätta använda servicen.", "Please contact your service administrator to continue using this service.": "Kontakta din serviceadministratör för att fortsätta använda servicen.",
"Show empty room list headings": "Visa tomma rumsrubriker", "Show empty room list headings": "Visa tomma rumsrubriker",
"System Alerts": "Systemvarningar" "System Alerts": "Systemvarningar",
"Sorry, your homeserver is too old to participate in this room.": "Tyvärr, din hemserver är för gammal för att delta i detta rum.",
"Please contact your homeserver administrator.": "Vänligen kontakta din hemserver-administratör.",
"Increase performance by only loading room members on first view": "Öka prestanda genom att bara ladda rumsdeltagare vid första visning",
"Internal room ID: ": "Internt rums-ID: ",
"Room version number: ": "Rumsversionsnummer: ",
"Please <a>contact your service administrator</a> to continue using the service.": "<a>Kontakta din serviceadministratör</a> för att fortsätta använda tjänsten.",
"This homeserver has hit its Monthly Active User limit.": "Hemservern har nått sin månatliga gräns för användaraktivitet.",
"This homeserver has exceeded one of its resource limits.": "Hemservern har överskridit en av sina resursgränser.",
"Please <a>contact your service administrator</a> to get this limit increased.": "<a>Kontakta din serviceadministratör</a> för att få denna gräns ökad.",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "Hemservern har nått sin månatliga gräns för användaraktivitet så <b>vissa användare kommer inte kunna logga in</b>.",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "Hemservern har överskridit en av sina resursgränser så <b>vissa användare kommer inte kunna logga in</b>.",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "Ditt meddelande skickades inte för hemservern har nått sin månatliga gräns för användaraktivitet. <a>Kontakta din serviceadministratör</a> för att fortsätta använda servicen.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "Ditt meddelande skickades inte för hemservern har överskridit en av sina resursgränser. <a>Kontakta din serviceadministratör</a> för att fortsätta använda servicen.",
"Lazy loading members not supported": "Behovsladdning av medlemmar stöds inte",
"Lazy loading is not supported by your current homeserver.": "Behovsladdning stöds inte av din nuvarande hemserver.",
"Legal": "Juridiskt",
"Please <a>contact your service administrator</a> to continue using this service.": "<a>Kontakta din serviceadministratör</a> för att fortsätta använda servicen.",
"This room has been replaced and is no longer active.": "Detta rum har ersatts och är inte längre aktivt.",
"The conversation continues here.": "Konversationen fortsätter här.",
"Upgrade room to version %(ver)s": "Uppgradera rummet till version %(ver)s",
"There is a known vulnerability affecting this room.": "Det finns en känd sårbarhet som påverkar detta rum.",
"This room version is vulnerable to malicious modification of room state.": "Denna rumsversion är sårbar för skadlig modifiering av rumstillstånd.",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "Klicka här för att uppgradera till senaste rumsversionen och se till att rumsintegriteten är skyddad.",
"Only room administrators will see this warning": "Endast rumsadministratörer kommer att se denna varning",
"This room is a continuation of another conversation.": "Detta rum är en fortsättning på en annan konversation.",
"Click here to see older messages.": "Klicka här för att se äldre meddelanden.",
"Failed to upgrade room": "Det gick inte att uppgradera rum",
"The room upgrade could not be completed": "Rumsuppgraderingen kunde inte slutföras",
"Upgrade this room to version %(version)s": "Uppgradera detta rum till version %(version)s",
"Upgrade Room Version": "Uppgradera rumsversion",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Uppgradering av detta rum kräver att nuvarande rumsinstans stängs och ersätts av ett nytt rum. För att ge rumsmedlemmarna bästa möjliga upplevelse, kommer vi att:",
"Create a new room with the same name, description and avatar": "Skapa ett nytt rum med samma namn, beskrivning och avatar",
"Update any local room aliases to point to the new room": "Uppdatera lokala rumsalias att peka på det nya rummet",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Hindra användare från att prata i den gamla rumsversionen och posta ett meddelande som rekommenderar användare att flytta till det nya rummet",
"Put a link back to the old room at the start of the new room so people can see old messages": "Sätta en länk tillbaka till det gamla rummet i början av det nya rummet så att folk kan se gamla meddelanden"
} }

View File

@ -574,11 +574,11 @@
"Add User": "Kullanıcı Ekle", "Add User": "Kullanıcı Ekle",
"This Home Server would like to make sure you are not a robot": "Bu Ana Sunucu robot olmadığınızdan emin olmak istiyor", "This Home Server would like to make sure you are not a robot": "Bu Ana Sunucu robot olmadığınızdan emin olmak istiyor",
"Sign in with CAS": "CAS ile oturum açın", "Sign in with CAS": "CAS ile oturum açın",
"Custom Server Options": "Özel Sunucu Seçenekleri", "Custom Server Options": "Özelleştirilebilir Sunucu Seçenekleri",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Özel Sunucu Seçeneklerini diğer Matrix sunucularına giriş yapmak için farklı bir Ana Sunucu URL'si belirleyerek kullanabilirsiniz.", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Özel Sunucu Seçeneklerini diğer Matrix sunucularına giriş yapmak için farklı bir Ana Sunucu URL'si belirleyerek kullanabilirsiniz.",
"This allows you to use this app with an existing Matrix account on a different home server.": "Bu, sizin bu uygulamayı varolan Matrix hesabınızla farklı Ana Sunucularda kullanmanıza izin verir.", "This allows you to use this app with an existing Matrix account on a different home server.": "Bu, sizin bu uygulamayı varolan Matrix hesabınızla farklı Ana Sunucularda kullanmanıza izin verir.",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Ayrıca özel bir kimlik sunucusu da ayarlayabilirsiniz ancak bu e-posta adresine dayalı olarak kullanıcılarla olan etkileşimi engeller.", "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Ayrıca özel bir kimlik sunucusu da ayarlayabilirsiniz ancak bu e-posta adresine dayalı olarak kullanıcılarla olan etkileşimi engeller.",
"Dismiss": "Uzaklaştır", "Dismiss": "Kapat",
"Please check your email to continue registration.": "Kayıt işlemine devam etmek için lütfen e-postanızı kontrol edin.", "Please check your email to continue registration.": "Kayıt işlemine devam etmek için lütfen e-postanızı kontrol edin.",
"Token incorrect": "Belirteç(Token) hatalı", "Token incorrect": "Belirteç(Token) hatalı",
"Please enter the code it contains:": "Lütfen içerdiği kodu girin:", "Please enter the code it contains:": "Lütfen içerdiği kodu girin:",
@ -751,5 +751,10 @@
"View Source": "Kaynağı Görüntüle", "View Source": "Kaynağı Görüntüle",
"Collapse panel": "Katlanır panel", "Collapse panel": "Katlanır panel",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Geçerli tarayıcınız ile birlikte , uygulamanın görünüş ve kullanım hissi tamamen hatalı olabilir ve bazı ya da tüm özellikler çalışmayabilir. Yine de denemek isterseniz devam edebilirsiniz ancak karşılaşabileceğiniz sorunlar karşısında kendi başınasınız !", "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Geçerli tarayıcınız ile birlikte , uygulamanın görünüş ve kullanım hissi tamamen hatalı olabilir ve bazı ya da tüm özellikler çalışmayabilir. Yine de denemek isterseniz devam edebilirsiniz ancak karşılaşabileceğiniz sorunlar karşısında kendi başınasınız !",
"There are advanced notifications which are not shown here": "Burada gösterilmeyen gelişmiş bildirimler var" "There are advanced notifications which are not shown here": "Burada gösterilmeyen gelişmiş bildirimler var",
"The platform you're on": "Bulunduğun platform",
"The version of Riot.im": "Riot.im'in sürümü",
"Whether or not you're logged in (we don't record your user name)": "Ne olursa olsun giriş yaptın (kullanıcı adınızı kaydetmeyiz)",
"Your language of choice": "Seçtiginiz diliniz",
"Which officially provided instance you are using, if any": ""
} }

View File

@ -1231,5 +1231,44 @@
"Internal room ID: ": "內部聊天室 ID ", "Internal room ID: ": "內部聊天室 ID ",
"Room version number: ": "聊天室版本號: ", "Room version number: ": "聊天室版本號: ",
"This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "這個家伺服器已經達到了其每月活躍使用者限制。請<a>聯絡您的服務管理員</a>以繼續使用服務。", "This homeserver has hit its Monthly Active User limit. Please <a>contact your service administrator</a> to continue using the service.": "這個家伺服器已經達到了其每月活躍使用者限制。請<a>聯絡您的服務管理員</a>以繼續使用服務。",
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "此家伺服器已達到其每月活躍使用者限制,所以其部份使用者將會無法登入。請<a>聯絡您的服務管理員</a>以讓此限制增加。" "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please <a>contact your service administrator</a> to get this limit increased.": "此家伺服器已達到其每月活躍使用者限制,所以其部份使用者將會無法登入。請<a>聯絡您的服務管理員</a>以讓此限制增加。",
"There is a known vulnerability affecting this room.": "有一個已知的安全性漏洞影響此聊天室。",
"This room version is vulnerable to malicious modification of room state.": "此聊天室版本易受惡意修改聊天室狀態的影響。",
"Click here to upgrade to the latest room version and ensure room integrity is protected.": "點選這裡以升級到最新的聊天室版本並確保聊天室的完整性已被保護。",
"Only room administrators will see this warning": "僅聊天室管理員會看到此警告",
"Please <a>contact your service administrator</a> to continue using the service.": "請<a>聯絡您的服務管理員</a>以繼續使用服務。",
"This homeserver has hit its Monthly Active User limit.": "這個家伺服器已經到達其每月活躍使用者限制。",
"This homeserver has exceeded one of its resource limits.": "此家伺服器已經超過其中一項資源限制。",
"Please <a>contact your service administrator</a> to get this limit increased.": "請<a>聯絡您的服務管理員</a>以讓此限制增加。",
"This homeserver has hit its Monthly Active User limit so <b>some users will not be able to log in</b>.": "此家伺服器已經達到其每月活躍使用者限制所以<b>某些使用者將會無法登入</b>。",
"This homeserver has exceeded one of its resource limits so <b>some users will not be able to log in</b>.": "此家伺服器已超過其中一項資源限制所以<b>某些使用者可能會無法登入</b>。",
"Upgrade Room Version": "更新聊天室版本",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "更新此聊天室需要關閉目前的聊天室實體並建立一個新的聊天室。為了給予聊天室成員最佳的體驗,我們將會:",
"Create a new room with the same name, description and avatar": "使用同樣的名稱、描述與大頭貼建立新聊天室",
"Update any local room aliases to point to the new room": "更新任何本地聊天室別名以指向新的聊天室",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "讓使用者在舊版聊天室停止發言,並張貼訊息建議使用者移動到新的聊天室",
"Put a link back to the old room at the start of the new room so people can see old messages": "在新聊天室的開始處放置連回舊聊天室的連結,這樣夥伴們就可以看到舊的訊息",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please <a>contact your service administrator</a> to continue using the service.": "您的訊息未被傳送,因為其家伺服器已經達到了其每月活躍使用者限制。請<a>聯絡您的服務管理員</a>以繼續使用服務。",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please <a>contact your service administrator</a> to continue using the service.": "您的訊息未傳送,因為其家伺服器已超過一項資源限制。請<a>聯絡您的服務管理員</a>以繼序使用服務。",
"Please <a>contact your service administrator</a> to continue using this service.": "請<a>聯絡您的服務管理員</a>以繼續使用此服務。",
"Increase performance by only loading room members on first view": "透過僅在第一次檢視時載入聊天室成員來增加效能",
"Lazy loading members not supported": "不支援延遲載入成員",
"Lazy loading is not supported by your current homeserver.": "您目前的家伺服器不支援延遲載入。",
"Sorry, your homeserver is too old to participate in this room.": "抱歉,您的家伺服器太舊了,所以無法參與此聊天室。",
"Please contact your homeserver administrator.": "請聯絡您的家伺服器的管理員。",
"Legal": "法律",
"This room has been replaced and is no longer active.": "此已被取代的聊天室已不再活躍。",
"The conversation continues here.": "對話在此繼續。",
"Upgrade room to version %(ver)s": "將聊天室升級為版本 %(ver)s",
"This room is a continuation of another conversation.": "此聊天室是另一個對話的延續。",
"Click here to see older messages.": "點選這裡以檢視較舊的訊息。",
"Failed to upgrade room": "升級聊天室失敗",
"The room upgrade could not be completed": "聊天室升級可能不完整",
"Upgrade this room to version %(version)s": "升級此聊天室到版本 %(version)s",
"Forces the current outbound group session in an encrypted room to be discarded": "強制目前在已加密的聊天室中的外發群組工作階段丟棄",
"Error Discarding Session": "丟棄工作階段錯誤",
"Registration Required": "需要註冊",
"You need to register to do this. Would you like to register now?": "您必須註冊以繼續。您想要現在註冊嗎?",
"Unable to query for supported registration methods": "無法查詢支援的註冊方式",
"Unable to connect to Homeserver. Retrying...": "無法連線到家伺服器。正在重試……"
} }

View File

@ -120,8 +120,7 @@ class RoomListStore extends Store {
this._generateRoomLists(); this._generateRoomLists();
} }
break; break;
case 'MatrixActions.RoomMember.membership': { case 'MatrixActions.Room.selfMembership': {
if (!this._matrixClient || payload.member.userId !== this._matrixClient.credentials.userId) break;
this._generateRoomLists(); this._generateRoomLists();
} }
break; break;

View File

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import MatrixClientPeg from '../MatrixClientPeg'; import MatrixClientPeg from '../MatrixClientPeg';
import _uniq from 'lodash/uniq';
/** /**
* Class that takes a Matrix Client and flips the m.direct map * Class that takes a Matrix Client and flips the m.direct map
@ -27,6 +28,8 @@ export default class DMRoomMap {
constructor(matrixClient) { constructor(matrixClient) {
this.matrixClient = matrixClient; this.matrixClient = matrixClient;
this.roomToUser = null; this.roomToUser = null;
// see _onAccountData
this._hasSentOutPatchDirectAccountDataPatch = false;
// XXX: Force-bind the event handler method because it // XXX: Force-bind the event handler method because it
// doesn't call it with our object as the 'this' // doesn't call it with our object as the 'this'
@ -34,11 +37,8 @@ export default class DMRoomMap {
this._onAccountData = this._onAccountData.bind(this); this._onAccountData = this._onAccountData.bind(this);
const mDirectEvent = matrixClient.getAccountData('m.direct'); const mDirectEvent = matrixClient.getAccountData('m.direct');
if (!mDirectEvent) { this.mDirectEvent = mDirectEvent ? mDirectEvent.getContent() : {};
this.userToRooms = {}; this.userToRooms = null;
} else {
this.userToRooms = mDirectEvent.getContent();
}
} }
/** /**
@ -70,15 +70,56 @@ export default class DMRoomMap {
_onAccountData(ev) { _onAccountData(ev) {
if (ev.getType() == 'm.direct') { if (ev.getType() == 'm.direct') {
this.userToRooms = this.matrixClient.getAccountData('m.direct').getContent(); this.mDirectEvent = this.matrixClient.getAccountData('m.direct').getContent() || {};
this._populateRoomToUser(); this.userToRooms = null;
this.roomToUser = null;
}
}
/**
* some client bug somewhere is causing some DMs to be marked
* with ourself, not the other user. Fix it by guessing the other user and
* modifying userToRooms
*/
_patchUpSelfDMs(userToRooms) {
const myUserId = this.matrixClient.getUserId();
const selfRoomIds = userToRooms[myUserId];
if (selfRoomIds) {
// any self-chats that should not be self-chats?
const guessedUserIdsThatChanged = selfRoomIds.map((roomId) => {
const room = this.matrixClient.getRoom(roomId);
if (room) {
const userId = room.guessDMUserId();
if (userId && userId !== myUserId) {
return {userId, roomId};
}
}
}).filter((ids) => !!ids); //filter out
// these are actually all legit self-chats
// bail out
if (!guessedUserIdsThatChanged.length) {
return false;
}
userToRooms[myUserId] = selfRoomIds.filter((roomId) => {
return !guessedUserIdsThatChanged
.some((ids) => ids.roomId === roomId);
});
guessedUserIdsThatChanged.forEach(({userId, roomId}) => {
let roomIds = userToRooms[userId];
if (!roomIds) {
userToRooms[userId] = [roomId];
} else {
roomIds.push(roomId);
userToRooms[userId] = _uniq(roomIds);
}
});
return true;
} }
} }
getDMRoomsForUserId(userId) { getDMRoomsForUserId(userId) {
// Here, we return the empty list if there are no rooms, // Here, we return the empty list if there are no rooms,
// since the number of conversations you have with this user is zero. // since the number of conversations you have with this user is zero.
return this.userToRooms[userId] || []; return this._getUserToRooms()[userId] || [];
} }
getUserIdForRoomId(roomId) { getUserIdForRoomId(roomId) {
@ -103,9 +144,31 @@ export default class DMRoomMap {
return this.roomToUser[roomId]; return this.roomToUser[roomId];
} }
_getUserToRooms() {
if (!this.userToRooms) {
const userToRooms = this.mDirectEvent;
const myUserId = this.matrixClient.getUserId();
const selfDMs = userToRooms[myUserId];
if (selfDMs && selfDMs.length) {
const neededPatching = this._patchUpSelfDMs(userToRooms);
// to avoid multiple devices fighting to correct
// the account data, only try to send the corrected
// version once.
console.warn(`Invalid m.direct account data detected ` +
`(self-chats that shouldn't be), patching it up.`);
if (neededPatching && !this._hasSentOutPatchDirectAccountDataPatch) {
this._hasSentOutPatchDirectAccountDataPatch = true;
this.matrixClient.setAccountData('m.direct', userToRooms);
}
}
this.userToRooms = userToRooms;
}
return this.userToRooms;
}
_populateRoomToUser() { _populateRoomToUser() {
this.roomToUser = {}; this.roomToUser = {};
for (const user of Object.keys(this.userToRooms)) { for (const user of Object.keys(this._getUserToRooms())) {
for (const roomId of this.userToRooms[user]) { for (const roomId of this.userToRooms[user]) {
this.roomToUser[roomId] = user; this.roomToUser[roomId] = user;
} }

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import { _t } from '../languageHandler'; import { _t, _td } from '../languageHandler';
/** /**
* Produce a translated error message for a * Produce a translated error message for a
@ -48,3 +48,31 @@ export function messageForResourceLimitError(limitType, adminContact, strings, e
return _t(errString, {}, extraTranslations); return _t(errString, {}, extraTranslations);
} }
} }
export function messageForSyncError(err) {
if (err.errcode === 'M_RESOURCE_LIMIT_EXCEEDED') {
const limitError = messageForResourceLimitError(
err.data.limit_type,
err.data.admin_contact,
{
'monthly_active_user': _td("This homeserver has hit its Monthly Active User limit."),
'': _td("This homeserver has exceeded one of its resource limits."),
},
);
const adminContact = messageForResourceLimitError(
err.data.limit_type,
err.data.admin_contact,
{
'': _td("Please <a>contact your service administrator</a> to continue using the service."),
},
);
return <div>
<div>{limitError}</div>
<div>{adminContact}</div>
</div>;
} else {
return <div>
{_t("Unable to connect to Homeserver. Retrying...")}
</div>;
}
}

View File

@ -37,6 +37,11 @@ function doInputEmail(inputEmail, onTeamSelected) {
<RegistrationForm <RegistrationForm
teamsConfig={TEAM_CONFIG} teamsConfig={TEAM_CONFIG}
onTeamSelected={onTeamSelected} onTeamSelected={onTeamSelected}
flows={[
{
stages: ['m.login.dummy'],
},
]}
/>, />,
); );

View File

@ -257,6 +257,7 @@ export function mkStubRoom(roomId = null) {
getAccountData: () => null, getAccountData: () => null,
hasMembershipState: () => null, hasMembershipState: () => null,
getVersion: () => '1', getVersion: () => '1',
shouldUpgradeToVersion: () => null,
getMyMembership: () => "join", getMyMembership: () => "join",
currentState: { currentState: {
getStateEvents: sinon.stub(), getStateEvents: sinon.stub(),