Merge branch 'release-v0.13.4'
commit
60e55594dd
37
CHANGELOG.md
37
CHANGELOG.md
|
@ -1,3 +1,40 @@
|
|||
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)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "matrix-react-sdk",
|
||||
"version": "0.13.3",
|
||||
"version": "0.13.4",
|
||||
"description": "SDK for matrix.org using React",
|
||||
"author": "matrix.org",
|
||||
"repository": {
|
||||
|
@ -73,7 +73,7 @@
|
|||
"linkifyjs": "^2.1.6",
|
||||
"lodash": "^4.13.1",
|
||||
"lolex": "2.3.2",
|
||||
"matrix-js-sdk": "0.10.9",
|
||||
"matrix-js-sdk": "0.11.0",
|
||||
"optimist": "^0.6.1",
|
||||
"pako": "^1.0.5",
|
||||
"prop-types": "^15.5.8",
|
||||
|
|
|
@ -56,6 +56,18 @@ limitations under the License.
|
|||
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 {
|
||||
order: 1;
|
||||
|
||||
|
|
|
@ -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!");
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
Copyright 2015, 2016 OpenMarket Ltd
|
||||
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.
|
||||
|
@ -470,6 +471,19 @@ export const CommandMap = {
|
|||
description: _td('Displays action'),
|
||||
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 */
|
||||
|
||||
|
@ -477,6 +491,7 @@ export const CommandMap = {
|
|||
// helpful aliases
|
||||
const aliases = {
|
||||
j: "join",
|
||||
newballsplease: "discardsession",
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -480,7 +480,7 @@ export default React.createClass({
|
|||
group_id: groupId,
|
||||
},
|
||||
});
|
||||
dis.dispatch({action: 'view_set_mxid'});
|
||||
dis.dispatch({action: 'require_registration'});
|
||||
willDoOnboarding = true;
|
||||
}
|
||||
this.setState({
|
||||
|
@ -723,6 +723,11 @@ export default React.createClass({
|
|||
},
|
||||
|
||||
_onJoinClick: async function() {
|
||||
if (this._matrixClient.isGuest()) {
|
||||
dis.dispatch({action: 'require_registration'});
|
||||
return;
|
||||
}
|
||||
|
||||
this.setState({membershipBusy: true});
|
||||
|
||||
// Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the
|
||||
|
|
|
@ -45,6 +45,8 @@ import createRoom from "../../createRoom";
|
|||
import KeyRequestHandler from '../../KeyRequestHandler';
|
||||
import { _t, getCurrentLanguage } from '../../languageHandler';
|
||||
import SettingsStore, {SettingLevel} from "../../settings/SettingsStore";
|
||||
import { startAnyRegistrationFlow } from "../../Registration.js";
|
||||
import { messageForSyncError } from '../../utils/ErrorUtils';
|
||||
|
||||
/** constants for MatrixChat.state.view */
|
||||
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
|
||||
// and disable it when there are no dialogs
|
||||
hideToSRUsers: false,
|
||||
|
||||
syncError: null, // If the current syncing status is ERROR, the error object, otherwise null.
|
||||
};
|
||||
return s;
|
||||
},
|
||||
|
@ -471,7 +475,7 @@ export default React.createClass({
|
|||
action: 'do_after_sync_prepared',
|
||||
deferred_action: payload,
|
||||
});
|
||||
dis.dispatch({action: 'view_set_mxid'});
|
||||
dis.dispatch({action: 'require_registration'});
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -479,7 +483,11 @@ export default React.createClass({
|
|||
case 'logout':
|
||||
Lifecycle.logout();
|
||||
break;
|
||||
case 'require_registration':
|
||||
startAnyRegistrationFlow(payload);
|
||||
break;
|
||||
case 'start_registration':
|
||||
// This starts the full registration flow
|
||||
this._startRegistration(payload.params || {});
|
||||
break;
|
||||
case 'start_login':
|
||||
|
@ -945,7 +953,7 @@ export default React.createClass({
|
|||
});
|
||||
}
|
||||
dis.dispatch({
|
||||
action: 'view_set_mxid',
|
||||
action: 'require_registration',
|
||||
// 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
|
||||
// reset so that they can revisit /user/.. // (and trigger
|
||||
|
@ -1132,7 +1140,7 @@ export default React.createClass({
|
|||
*
|
||||
* @param {string} teamToken
|
||||
*/
|
||||
_onLoggedIn: function(teamToken) {
|
||||
_onLoggedIn: async function(teamToken) {
|
||||
this.setState({
|
||||
view: VIEWS.LOGGED_IN,
|
||||
});
|
||||
|
@ -1145,12 +1153,17 @@ export default React.createClass({
|
|||
this._is_registered = false;
|
||||
|
||||
if (this.props.config.welcomeUserId && getCurrentLanguage().startsWith("en")) {
|
||||
createRoom({
|
||||
const roomId = await createRoom({
|
||||
dmUserId: this.props.config.welcomeUserId,
|
||||
// Only view the welcome user if we're NOT looking at a room
|
||||
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
|
||||
dis.dispatch({action: 'view_home_page'});
|
||||
|
@ -1232,13 +1245,20 @@ export default React.createClass({
|
|||
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
|
||||
// events because flux only allows store state changes during flux dispatches.
|
||||
// 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
|
||||
// its own dispatch).
|
||||
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);
|
||||
if (state === "SYNCING" && prevState === "SYNCING") {
|
||||
return;
|
||||
|
@ -1418,7 +1438,7 @@ export default React.createClass({
|
|||
} else if (screen == 'start') {
|
||||
this.showScreen('home');
|
||||
dis.dispatch({
|
||||
action: 'view_set_mxid',
|
||||
action: 'require_registration',
|
||||
});
|
||||
} else if (screen == 'directory') {
|
||||
dis.dispatch({
|
||||
|
@ -1734,8 +1754,15 @@ export default React.createClass({
|
|||
} else {
|
||||
// we think we are logged in, but are still waiting for the /sync to complete
|
||||
const Spinner = sdk.getComponent('elements.Spinner');
|
||||
let errorBox;
|
||||
if (this.state.syncError) {
|
||||
errorBox = <div className="mx_MatrixChat_syncError">
|
||||
{messageForSyncError(this.state.syncError)}
|
||||
</div>;
|
||||
}
|
||||
return (
|
||||
<div className="mx_MatrixChat_splash">
|
||||
{errorBox}
|
||||
<Spinner />
|
||||
<a href="#" className="mx_MatrixChat_splashButtons" onClick={this.onLogoutClick}>
|
||||
{ _t('Logout') }
|
||||
|
|
|
@ -160,7 +160,7 @@ module.exports = React.createClass({
|
|||
|
||||
onInviteButtonClick: function() {
|
||||
if (this.context.matrixClient.isGuest()) {
|
||||
dis.dispatch({action: 'view_set_mxid'});
|
||||
dis.dispatch({action: 'require_registration'});
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -354,7 +354,7 @@ module.exports = React.createClass({
|
|||
// to the directory.
|
||||
if (MatrixClientPeg.get().isGuest()) {
|
||||
if (!room.world_readable && !room.guest_can_join) {
|
||||
dis.dispatch({action: 'view_set_mxid'});
|
||||
dis.dispatch({action: 'require_registration'});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -915,7 +915,7 @@ module.exports = React.createClass({
|
|||
dis.dispatch({action: 'focus_composer'});
|
||||
|
||||
if (MatrixClientPeg.get().isGuest()) {
|
||||
dis.dispatch({action: 'view_set_mxid'});
|
||||
dis.dispatch({action: 'require_registration'});
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -946,7 +946,7 @@ module.exports = React.createClass({
|
|||
|
||||
injectSticker: function(url, info, text) {
|
||||
if (MatrixClientPeg.get().isGuest()) {
|
||||
dis.dispatch({action: 'view_set_mxid'});
|
||||
dis.dispatch({action: 'require_registration'});
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ const TagPanel = React.createClass({
|
|||
|
||||
_onClientSync(syncState, prevState) {
|
||||
// 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;
|
||||
if (reconnected) {
|
||||
// Load joined groups
|
||||
|
|
|
@ -1146,10 +1146,11 @@ var TimelinePanel = React.createClass({
|
|||
// of paginating our way through the entire history of the room.
|
||||
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.
|
||||
const forwardPaginating = (
|
||||
this.state.forwardPaginating || this.state.clientSyncState == 'PREPARED'
|
||||
this.state.forwardPaginating ||
|
||||
['PREPARED', 'CATCHUP'].includes(this.state.clientSyncState)
|
||||
);
|
||||
return (
|
||||
<MessagePanel ref="messagePanel"
|
||||
|
|
|
@ -93,6 +93,7 @@ module.exports = React.createClass({
|
|||
doingUIAuth: Boolean(this.props.sessionId),
|
||||
hsUrl: this.props.customHsUrl,
|
||||
isUrl: this.props.customIsUrl,
|
||||
flows: null,
|
||||
};
|
||||
},
|
||||
|
||||
|
@ -145,11 +146,27 @@ module.exports = React.createClass({
|
|||
});
|
||||
},
|
||||
|
||||
_replaceClient: function() {
|
||||
_replaceClient: async function() {
|
||||
this._matrixClient = Matrix.createClient({
|
||||
baseUrl: this.state.hsUrl,
|
||||
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) {
|
||||
|
@ -378,7 +395,7 @@ module.exports = React.createClass({
|
|||
poll={true}
|
||||
/>
|
||||
);
|
||||
} else if (this.state.busy || this.state.teamServerBusy) {
|
||||
} else if (this.state.busy || this.state.teamServerBusy || !this.state.flows) {
|
||||
registerBody = <Spinner />;
|
||||
} else {
|
||||
let serverConfigSection;
|
||||
|
@ -408,6 +425,7 @@ module.exports = React.createClass({
|
|||
onError={this.onFormValidationFailed}
|
||||
onRegisterClick={this.onFormSubmit}
|
||||
onTeamSelected={this.onTeamSelected}
|
||||
flows={this.state.flows}
|
||||
/>
|
||||
{ serverConfigSection }
|
||||
</div>
|
||||
|
|
|
@ -87,7 +87,7 @@ module.exports = React.createClass({
|
|||
if (this.unmounted) return;
|
||||
|
||||
// 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;
|
||||
if (reconnected &&
|
||||
// Did we fall back?
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
Copyright 2015, 2016 OpenMarket Ltd
|
||||
Copyright 2017 Vector Creations Ltd
|
||||
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.
|
||||
|
@ -49,7 +50,7 @@ module.exports = React.createClass({
|
|||
teamsConfig: PropTypes.shape({
|
||||
// Email address to request new teams
|
||||
supportEmail: PropTypes.string,
|
||||
teams: PropTypes.arrayOf(React.PropTypes.shape({
|
||||
teams: PropTypes.arrayOf(PropTypes.shape({
|
||||
// The displayed name of the team
|
||||
"name": PropTypes.string,
|
||||
// The domain of team email addresses
|
||||
|
@ -60,6 +61,7 @@ module.exports = React.createClass({
|
|||
minPasswordLength: PropTypes.number,
|
||||
onError: PropTypes.func,
|
||||
onRegisterClick: PropTypes.func.isRequired, // onRegisterClick(Object) => ?Promise
|
||||
flows: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
},
|
||||
|
||||
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() {
|
||||
const self = this;
|
||||
|
||||
const theme = SettingsStore.getValue("theme");
|
||||
// FIXME: remove hardcoded Status team tweaks at some point
|
||||
const emailPlaceholder = theme === 'status' ? _t("Email address") : _t("Email address (optional)");
|
||||
const emailPlaceholder = this._authStepIsRequired('m.login.email.identity') ? _t("Email address") : _t("Email address (optional)");
|
||||
|
||||
const emailSection = (
|
||||
<div>
|
||||
|
@ -315,6 +323,7 @@ module.exports = React.createClass({
|
|||
const CountryDropdown = sdk.getComponent('views.login.CountryDropdown');
|
||||
let phoneSection;
|
||||
if (!SdkConfig.get().disable_3pid_login) {
|
||||
const phonePlaceholder = this._authStepIsRequired('m.login.msisdn') ? _t("Mobile phone number") : _t("Mobile phone number (optional)");
|
||||
phoneSection = (
|
||||
<div className="mx_Login_phoneSection">
|
||||
<CountryDropdown ref="phone_country" onOptionChange={this._onPhoneCountryChange}
|
||||
|
@ -324,7 +333,7 @@ module.exports = React.createClass({
|
|||
showPrefix={true}
|
||||
/>
|
||||
<input type="text" ref="phoneNumber"
|
||||
placeholder={_t("Mobile phone number (optional)")}
|
||||
placeholder={phonePlaceholder}
|
||||
defaultValue={this.props.defaultPhoneNumber}
|
||||
className={this._classForField(
|
||||
FIELD_PHONE_NUMBER,
|
||||
|
|
|
@ -76,7 +76,7 @@ export default class MImageBody extends React.Component {
|
|||
onClientSync(syncState, prevState) {
|
||||
if (this.unmounted) return;
|
||||
// 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;
|
||||
if (reconnected && this.state.imgError) {
|
||||
// Load the image again
|
||||
|
|
|
@ -90,7 +90,7 @@ module.exports = React.createClass({
|
|||
secondary_color: this.state.secondary_color,
|
||||
}).catch(function(err) {
|
||||
if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {
|
||||
dis.dispatch({action: 'view_set_mxid'});
|
||||
dis.dispatch({action: 'require_registration'});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -429,7 +429,7 @@ module.exports = withMatrixClient(React.createClass({
|
|||
console.log("Mod toggle success");
|
||||
}, function(err) {
|
||||
if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {
|
||||
dis.dispatch({action: 'view_set_mxid'});
|
||||
dis.dispatch({action: 'require_registration'});
|
||||
} else {
|
||||
console.error("Toggle moderator error:" + err);
|
||||
Modal.createTrackedDialog('Failed to toggle moderator status', '', ErrorDialog, {
|
||||
|
|
|
@ -33,19 +33,13 @@ module.exports = React.createClass({
|
|||
|
||||
getInitialState: function() {
|
||||
this.memberDict = this.getMemberDict();
|
||||
const members = this.roomMembers();
|
||||
|
||||
return {
|
||||
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: "",
|
||||
};
|
||||
const cli = MatrixClientPeg.get();
|
||||
if (cli.hasLazyLoadMembersEnabled()) {
|
||||
return {loading: true};
|
||||
} else {
|
||||
return this._getMembersState();
|
||||
}
|
||||
},
|
||||
|
||||
componentWillMount: function() {
|
||||
|
@ -69,6 +63,14 @@ module.exports = React.createClass({
|
|||
}
|
||||
},
|
||||
|
||||
componentDidMount: async function() {
|
||||
const cli = MatrixClientPeg.get();
|
||||
if (cli.hasLazyLoadMembersEnabled()) {
|
||||
await this._waitForMembersToLoad();
|
||||
this.setState(this._getMembersState());
|
||||
}
|
||||
},
|
||||
|
||||
componentWillUnmount: function() {
|
||||
const cli = MatrixClientPeg.get();
|
||||
if (cli) {
|
||||
|
@ -84,6 +86,33 @@ module.exports = React.createClass({
|
|||
this._updateList.cancelPendingCall();
|
||||
},
|
||||
|
||||
_waitForMembersToLoad: async function() {
|
||||
if (!this.props.roomId) return {};
|
||||
const cli = MatrixClientPeg.get();
|
||||
const room = cli.getRoom(this.props.roomId);
|
||||
if (room) {
|
||||
await room.loadMembersIfNeeded();
|
||||
}
|
||||
},
|
||||
|
||||
_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) {
|
||||
// ignore anything but real-time updates at the end of the room:
|
||||
|
@ -393,6 +422,11 @@ module.exports = React.createClass({
|
|||
},
|
||||
|
||||
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 GeminiScrollbarWrapper = sdk.getComponent("elements.GeminiScrollbarWrapper");
|
||||
|
||||
|
|
|
@ -131,7 +131,7 @@ export default class MessageComposer extends React.Component {
|
|||
|
||||
onUploadClick(ev) {
|
||||
if (MatrixClientPeg.get().isGuest()) {
|
||||
dis.dispatch({action: 'view_set_mxid'});
|
||||
dis.dispatch({action: 'require_registration'});
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -309,8 +309,8 @@ export default class MessageComposer extends React.Component {
|
|||
</div>;
|
||||
}
|
||||
|
||||
const canSendMessages = !this.state.tombstone && this.props.room.currentState.maySendMessage(
|
||||
MatrixClientPeg.get().credentials.userId);
|
||||
const canSendMessages = !this.state.tombstone &&
|
||||
this.props.room.maySendMessage();
|
||||
|
||||
if (canSendMessages) {
|
||||
// This also currently includes the call buttons. Really we should
|
||||
|
|
|
@ -336,7 +336,7 @@ export default class MessageComposerInput extends React.Component {
|
|||
}
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
componentWillMount() {
|
||||
this.dispatcherRef = dis.register(this.onAction);
|
||||
this.historyManager = new ComposerHistoryManager(this.props.room.roomId, 'mx_slate_composer_history_');
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ function createRoom(opts) {
|
|||
|
||||
const client = MatrixClientPeg.get();
|
||||
if (client.isGuest()) {
|
||||
dis.dispatch({action: 'view_set_mxid'});
|
||||
dis.dispatch({action: 'require_registration'});
|
||||
return Promise.resolve(null);
|
||||
}
|
||||
|
||||
|
|
|
@ -1264,5 +1264,7 @@
|
|||
"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"
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -87,6 +87,9 @@
|
|||
"Unable to enable Notifications": "Unable to enable Notifications",
|
||||
"This email address was not found": "This email address was not found",
|
||||
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.",
|
||||
"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",
|
||||
"Restricted": "Restricted",
|
||||
"Moderator": "Moderator",
|
||||
|
@ -145,6 +148,7 @@
|
|||
"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.",
|
||||
"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:",
|
||||
"Reason": "Reason",
|
||||
"%(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": "Send",
|
||||
"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",
|
||||
"Not a valid Riot keyfile": "Not a valid Riot keyfile",
|
||||
"Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?",
|
||||
|
@ -396,8 +404,6 @@
|
|||
"At this time it is not possible to reply with a file so this will be sent without being a reply.": "At this time it is not possible to reply with a file so this will be sent without being a reply.",
|
||||
"Upload Files": "Upload Files",
|
||||
"Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?",
|
||||
"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.",
|
||||
"Encrypted room": "Encrypted room",
|
||||
"Unencrypted room": "Unencrypted room",
|
||||
"Hangup": "Hangup",
|
||||
|
@ -409,6 +415,8 @@
|
|||
"Send a reply (unencrypted)…": "Send a reply (unencrypted)…",
|
||||
"Send an encrypted message…": "Send an encrypted message…",
|
||||
"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",
|
||||
"Turn Markdown on": "Turn Markdown on",
|
||||
"Turn Markdown off": "Turn Markdown off",
|
||||
|
@ -652,7 +660,6 @@
|
|||
"Email address (optional)": "Email address (optional)",
|
||||
"You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s",
|
||||
"Mobile phone number (optional)": "Mobile phone number (optional)",
|
||||
"Register": "Register",
|
||||
"Default server": "Default server",
|
||||
"Custom server": "Custom server",
|
||||
"Home server URL": "Home server URL",
|
||||
|
@ -691,9 +698,6 @@
|
|||
"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>",
|
||||
"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.",
|
||||
"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>.",
|
||||
|
@ -1199,6 +1203,7 @@
|
|||
"Failed to fetch avatar URL": "Failed to fetch avatar URL",
|
||||
"Set a display name:": "Set a display name:",
|
||||
"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.",
|
||||
"Missing password.": "Missing password.",
|
||||
"Passwords don't match.": "Passwords don't match.",
|
||||
|
|
|
@ -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",
|
||||
"%(targetName)s accepted an invitation.": "%(targetName)s ha aceptado una invitación.",
|
||||
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s ha aceptado la invitación para %(displayName)s.",
|
||||
"%(targetName)s accepted an invitation.": "%(targetName)s aceptó una invitación.",
|
||||
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceptó la invitación para %(displayName)s.",
|
||||
"Account": "Cuenta",
|
||||
"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",
|
||||
"Admin": "Administrador",
|
||||
"Advanced": "Avanzado",
|
||||
|
@ -15,8 +15,8 @@
|
|||
"and %(count)s others...|other": "y %(count)s otros...",
|
||||
"and %(count)s others...|one": "y otro...",
|
||||
"%(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.",
|
||||
"%(senderName)s answered the call.": "%(senderName)s atendió la llamada.",
|
||||
"A new password must be entered.": "Debes ingresar una nueva contraseña.",
|
||||
"%(senderName)s answered the call.": "%(senderName)s contestó la llamada.",
|
||||
"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, 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?",
|
||||
"Attachment": "Adjunto",
|
||||
"Autoplay GIFs and videos": "Reproducir automáticamente GIFs y videos",
|
||||
"%(senderName)s banned %(targetName)s.": "%(senderName)s ha bloqueado a %(targetName)s.",
|
||||
"Ban": "Bloquear",
|
||||
"Banned users": "Usuarios bloqueados",
|
||||
"Bans user with given id": "Bloquear usuario por ID",
|
||||
"%(senderName)s banned %(targetName)s.": "%(senderName)s vetó a %(targetName)s.",
|
||||
"Ban": "Vetar",
|
||||
"Banned users": "Usuarios vetados",
|
||||
"Bans user with given id": "Veta al usuario con la ID dada",
|
||||
"Blacklisted": "En lista negra",
|
||||
"Bulk Options": "Opciones masivas",
|
||||
"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 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 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 topic to \"%(topic)s\".": "%(senderDisplayName)s ha cambiado el tema de la sala a \"%(topic)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 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 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.",
|
||||
"Claimed Ed25519 fingerprint key": "Clave Ed25519 es necesaria",
|
||||
"Clear Cache and Reload": "Borrar caché y recargar",
|
||||
"Clear Cache": "Borrar caché",
|
||||
"Clear Cache and Reload": "Borrar Caché y Recargar",
|
||||
"Clear Cache": "Borrar Caché",
|
||||
"Click here to fix": "Haz clic aquí para arreglar",
|
||||
"Click to mute audio": "Haz clic para silenciar audio",
|
||||
"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 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",
|
||||
"Confirm password": "Confirmar clave",
|
||||
"Confirm your new password": "Confirma tu nueva clave",
|
||||
"Confirm password": "Confirmar contraseña",
|
||||
"Confirm your new password": "Confirma tu contraseña nueva",
|
||||
"Continue": "Continuar",
|
||||
"Could not connect to the integration server": "No se pudo conectar al servidor de integración",
|
||||
"Create an account": "Crear una cuenta",
|
||||
|
@ -75,7 +75,7 @@
|
|||
"Default": "Por defecto",
|
||||
"Device ID": "ID del dispositivo",
|
||||
"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",
|
||||
"Disinvite": "Deshacer invitación",
|
||||
"Display name": "Nombre para mostrar",
|
||||
|
@ -88,12 +88,12 @@
|
|||
"Email address": "Dirección de correo electrónico",
|
||||
"Email, name or matrix ID": "Correo electrónico, nombre o Matrix ID",
|
||||
"Emoji": "Emoticones",
|
||||
"Enable encryption": "Habilitar encriptación",
|
||||
"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",
|
||||
"Enable encryption": "Habilitar cifrado",
|
||||
"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",
|
||||
"%(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 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",
|
||||
"Error": "Error",
|
||||
"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 power level": "Falló al cambiar de nivel de acceso",
|
||||
"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 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 mute user": "Falló al silenciar el usuario",
|
||||
"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 unban": "Falló al desbloquear",
|
||||
"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",
|
||||
"Favourite": "Favorito",
|
||||
"Favourites": "Favoritos",
|
||||
|
@ -137,36 +137,36 @@
|
|||
"Hide Text Formatting Toolbar": "Ocultar barra de herramientas de formato de texto",
|
||||
"Historical": "Histórico",
|
||||
"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",
|
||||
"Import E2E room keys": "Importar claves E2E de la sala",
|
||||
"Incorrect verification code": "Verificación de código incorrecta",
|
||||
"Interface Language": "Idioma de la interfaz",
|
||||
"Invalid alias format": "Formato de alias inválido",
|
||||
"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",
|
||||
"%(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",
|
||||
"Invites": "Invitar",
|
||||
"Invites": "Invitaciones",
|
||||
"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 alias": "'%(alias)s' no es un formato válido para un alias",
|
||||
"%(displayName)s is typing": "%(displayName)s está escribiendo",
|
||||
"Sign in with": "Quiero iniciar sesión con",
|
||||
"Join Room": "Unirte a la sala",
|
||||
"%(targetName)s joined the room.": "%(targetName)s se ha unido a la sala.",
|
||||
"Join Room": "Unirse 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",
|
||||
"%(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",
|
||||
"Kicks user with given id": "Expulsar usuario con ID dado",
|
||||
"Labs": "Laboratorios",
|
||||
"Leave room": "Dejar sala",
|
||||
"%(targetName)s left the room.": "%(targetName)s ha dejado la sala.",
|
||||
"Leave room": "Salir de la sala",
|
||||
"%(targetName)s left the room.": "%(targetName)s salió de la sala.",
|
||||
"Local addresses for this room:": "Direcciones locales para esta sala:",
|
||||
"Logged in as:": "Sesión iniciada como:",
|
||||
"Logout": "Cerrar Sesión",
|
||||
"Low priority": "Baja prioridad",
|
||||
"Low priority": "Prioridad baja",
|
||||
"Accept": "Aceptar",
|
||||
"Add": "Añadir",
|
||||
"Admin Tools": "Herramientas de administración",
|
||||
|
@ -176,10 +176,10 @@
|
|||
"Default Device": "Dispositivo por defecto",
|
||||
"Microphone": "Micrófono",
|
||||
"Camera": "Cámara",
|
||||
"Hide removed messages": "Ocultar mensajes borrados",
|
||||
"Hide removed messages": "Ocultar mensajes eliminados",
|
||||
"Alias (optional)": "Alias (opcional)",
|
||||
"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",
|
||||
"%(count)s new messages|one": "%(count)s mensaje nuevo",
|
||||
"%(count)s new messages|other": "%(count)s mensajes nuevos",
|
||||
|
@ -190,13 +190,13 @@
|
|||
"Device already verified!": "¡El dispositivo ya ha sido verificado!",
|
||||
"Device ID:": "ID del dispositivo:",
|
||||
"device id: ": "id del dispositvo: ",
|
||||
"Disable Notifications": "Desactivar notificaciones",
|
||||
"Email address (optional)": "Dirección e-mail (opcional)",
|
||||
"Disable Notifications": "Deshabilitar Notificaciones",
|
||||
"Email address (optional)": "Dirección de correo electrónico (opcional)",
|
||||
"Enable Notifications": "Activar notificaciones",
|
||||
"Encrypted by a verified device": "Cifrado por un dispositivo verificado",
|
||||
"Encrypted by an unverified device": "Cifrado por un dispositivo sin verificar",
|
||||
"Encryption is enabled in this room": "Cifrado activo en esta sala",
|
||||
"Encryption is not enabled in this room": "Cifrado desactivado en esta sala",
|
||||
"Encryption is enabled in this room": "El cifrado está habilitado en esta sala",
|
||||
"Encryption is not enabled in this room": "El cifrado no está habilitado en esta sala",
|
||||
"Enter passphrase": "Introduzca contraseña",
|
||||
"Error: Problem communicating with the given homeserver.": "Error: No es posible comunicar con el servidor indicado.",
|
||||
"Export": "Exportar",
|
||||
|
@ -204,24 +204,24 @@
|
|||
"Failed to upload profile picture!": "¡Fallo al enviar la foto de perfil!",
|
||||
"Home": "Inicio",
|
||||
"Import": "Importar",
|
||||
"Incoming call from %(name)s": "Llamada de %(name)s",
|
||||
"Incoming video call from %(name)s": "Video-llamada de %(name)s",
|
||||
"Incoming voice call from %(name)s": "Llamada telefónica de %(name)s",
|
||||
"Incorrect username and/or password.": "Usuario o contraseña incorrectos.",
|
||||
"Incoming call from %(name)s": "Llamada entrante de %(name)s",
|
||||
"Incoming video call from %(name)s": "Llamada de vídeo entrante de %(name)s",
|
||||
"Incoming voice call from %(name)s": "Llamada de voz entrante de %(name)s",
|
||||
"Incorrect username and/or password.": "Nombre de usuario y/o contraseña incorrectos.",
|
||||
"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",
|
||||
"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 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.": "%(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 anyone.": "%(senderName)s ha configurado el historial de la sala visible para nadie.",
|
||||
"%(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 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 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 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 hizo visible el historial futuro de la sala para cualquier persona.",
|
||||
"%(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!",
|
||||
"Please select the destination room for this message": "Por favor, seleccione la sala destino para este mensaje",
|
||||
"Create new room": "Crear nueva sala",
|
||||
"Start chat": "Comenzar chat",
|
||||
"New Password": "Nueva contraseña",
|
||||
"New Password": "Nueva Contraseña",
|
||||
"Analytics": "Analíticas",
|
||||
"Options": "Opciones",
|
||||
"Passphrases must match": "Las contraseñas deben coincidir",
|
||||
|
@ -232,7 +232,7 @@
|
|||
"File to import": "Fichero a importar",
|
||||
"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",
|
||||
"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 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:",
|
||||
|
@ -255,13 +255,13 @@
|
|||
"Save": "Guardar",
|
||||
"Scroll to bottom of page": "Bajar al final de la página",
|
||||
"Scroll to unread messages": "Ir al primer mensaje sin leer",
|
||||
"Search": "Búsqueda",
|
||||
"Search": "Buscar",
|
||||
"Search failed": "Falló la búsqueda",
|
||||
"Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s el %(dateTime)s",
|
||||
"Send anyway": "Enviar igualmente",
|
||||
"Sender device information": "Información del dispositivo del remitente",
|
||||
"Send Invites": "Enviar invitaciones",
|
||||
"Send Reset Email": "Enviar e-mail de reinicio",
|
||||
"Send anyway": "Enviar de todos modos",
|
||||
"Sender device information": "Información del dispositivo emisor",
|
||||
"Send Invites": "Enviar Invitaciones",
|
||||
"Send Reset Email": "Enviar Correo Electrónico de Restauración",
|
||||
"%(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.",
|
||||
"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.",
|
||||
"Session ID": "ID de sesión",
|
||||
"%(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.",
|
||||
"Settings": "Configuración",
|
||||
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s estableció %(displayName)s como su nombre público.",
|
||||
"Settings": "Ajustes",
|
||||
"Show panel": "Mostrar panel",
|
||||
"Show Text Formatting Toolbar": "Mostrar la barra de formato de texto",
|
||||
"Signed Out": "Desconectado",
|
||||
"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.",
|
||||
"Someone": "Alguien",
|
||||
"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 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.",
|
||||
"%(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:",
|
||||
"Drop File Here": "Deje el fichero aquí",
|
||||
"Guest access is disabled on this Home Server.": "El acceso de invitados está desactivado en este servidor.",
|
||||
"Join as <voiceText>voice</voiceText> or <videoText>video</videoText>.": "Conecte con <voiceText>voz</voiceText> o <videoText>vídeo</videoText>.",
|
||||
"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>.": "Unirse con <voiceText>voz</voiceText> o <videoText>vídeo</videoText>.",
|
||||
"Manage Integrations": "Gestionar integraciones",
|
||||
"Markdown is disabled": "Markdown está desactivado",
|
||||
"Markdown is disabled": "Markdown está deshabilitado",
|
||||
"Markdown is enabled": "Markdown está activado",
|
||||
"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",
|
||||
"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",
|
||||
"Mobile phone number": "Número de teléfono móvil",
|
||||
"Mobile phone number (optional)": "Número de teléfono móvil (opcional)",
|
||||
"Mobile phone number": "Número telefónico de móvil",
|
||||
"Mobile phone number (optional)": "Número telefónico de móvil (opcional)",
|
||||
"Moderator": "Moderador",
|
||||
"Mute": "Silenciar",
|
||||
"%(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 display name": "Sin nombre para mostrar",
|
||||
"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",
|
||||
"OK": "Correcto",
|
||||
"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)",
|
||||
"Only people who have been invited": "Sólo usuarios que han sido invitados",
|
||||
"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": "Solo personas que han sido invitadas",
|
||||
"Operation failed": "Falló la operación",
|
||||
"Password": "Contraseña",
|
||||
"Password:": "Contraseña:",
|
||||
"Passwords can't be empty": "Las contraseñas no pueden estar en blanco",
|
||||
"People": "Gente",
|
||||
"People": "Personas",
|
||||
"Permissions": "Permisos",
|
||||
"Phone": "Teléfono",
|
||||
"%(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.",
|
||||
"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",
|
||||
"Privileged Users": "Usuarios con privilegios",
|
||||
"Profile": "Perfil",
|
||||
|
@ -356,20 +356,20 @@
|
|||
"Reason: %(reasonText)s": "Razón: %(reasonText)s",
|
||||
"Revoke Moderator": "Eliminar Moderador",
|
||||
"Refer a friend to Riot:": "Informar a un amigo sobre Riot:",
|
||||
"Register": "Registro",
|
||||
"%(targetName)s rejected the invitation.": "%(targetName)s ha rechazado la invitación.",
|
||||
"Register": "Registrar",
|
||||
"%(targetName)s rejected the invitation.": "%(targetName)s rechazó la invitación.",
|
||||
"Reject invitation": "Rechazar invitación",
|
||||
"Rejoin": "Volver a unirse",
|
||||
"Remote addresses for this room:": "Dirección remota de esta sala:",
|
||||
"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.",
|
||||
"Remove": "Eliminar",
|
||||
"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.",
|
||||
"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 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:",
|
||||
|
@ -378,26 +378,26 @@
|
|||
"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)",
|
||||
"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ó",
|
||||
"The email address linked to your account must be entered.": "Debe introducir el e-mail asociado a su 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 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 doméstico",
|
||||
"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",
|
||||
"This Home Server does not support login using email address.": "Este servidor 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:",
|
||||
"The remote side failed to pick up": "El lado remoto no contestó",
|
||||
"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:": "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 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",
|
||||
"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 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 room": "Esta sala",
|
||||
"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",
|
||||
"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",
|
||||
"Dismiss": "Omitir",
|
||||
"powered by Matrix": "con el poder de Matrix",
|
||||
|
@ -405,7 +405,7 @@
|
|||
"Custom Server Options": "Opciones de Servidor Personalizado",
|
||||
"unknown error code": "Código de error desconocido",
|
||||
"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",
|
||||
"Share without verifying": "Compartir sin verificar",
|
||||
"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.",
|
||||
"Turn Markdown off": "Desactivar 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).",
|
||||
"Unable to add email address": "No se ha podido añadir la dirección de correo electrónico",
|
||||
"%(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 es posible añadir la dirección de correo electrónico",
|
||||
"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 verify email address.": "No se ha podido verificar la dirección de correo electrónico.",
|
||||
"Unban": "Revocar bloqueo",
|
||||
"Unbans user with given id": "Revoca el bloqueo del usuario con la identificación dada",
|
||||
"Unable to verify email address.": "No es posible verificar la dirección de correo electrónico.",
|
||||
"Unban": "Quitar Veto",
|
||||
"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 capture screen": "No se ha podido capturar la pantalla",
|
||||
"Unable to enable Notifications": "No se ha podido activar las notificaciones",
|
||||
|
@ -470,67 +470,67 @@
|
|||
"Verified key": "Clave verificada",
|
||||
"Video call": "Llamada de vídeo",
|
||||
"Voice call": "Llamada de voz",
|
||||
"VoIP conference finished.": "Conferencia VoIP terminada.",
|
||||
"VoIP conference started.": "Conferencia de VoIP iniciada.",
|
||||
"VoIP conference finished.": "conferencia de vozIP finalizada.",
|
||||
"VoIP conference started.": "conferencia de vozIP iniciada.",
|
||||
"VoIP is unsupported": "No hay soporte para VoIP",
|
||||
"(could not connect media)": "(no se ha podido conectar medio)",
|
||||
"(no answer)": "(sin respuesta)",
|
||||
"(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: 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 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 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?",
|
||||
"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 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'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.",
|
||||
"Cannot add any more widgets": "no es posible agregar mas widgets",
|
||||
"Do you want to load widget from URL:": "desea cargar widget desde URL:",
|
||||
"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",
|
||||
"PM": "PM",
|
||||
"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",
|
||||
"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.",
|
||||
"%(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",
|
||||
"Unmute": "desactivar el silencio",
|
||||
"Unrecognised command:": "comando no reconocido:",
|
||||
"Unrecognised room alias:": "alias de sala no reconocido:",
|
||||
"%(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 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 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 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>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 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 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 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 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",
|
||||
"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 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.",
|
||||
"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",
|
||||
"Mon": "Lun",
|
||||
"Tue": "Mar",
|
||||
|
@ -559,7 +559,7 @@
|
|||
"Dec": "Dic",
|
||||
"Warning": "Advertencia",
|
||||
"Unpin Message": "Desmarcar Mensaje",
|
||||
"Online": "Conectado",
|
||||
"Online": "En línea",
|
||||
"Submit debug logs": "Enviar registros de depuración",
|
||||
"The platform you're on": "La plataforma en la que te encuentras",
|
||||
"The version of Riot.im": "La versión de Riot.im",
|
||||
|
@ -571,7 +571,7 @@
|
|||
"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",
|
||||
"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",
|
||||
"Name or matrix ID": "Nombre o ID de matrix",
|
||||
"Invite to Community": "Invitar a la comunidad",
|
||||
|
@ -604,9 +604,9 @@
|
|||
"Leave": "Salir",
|
||||
"Uploaded on %(date)s by %(user)s": "Subido el %(date)s por %(user)s",
|
||||
"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: ",
|
||||
"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>",
|
||||
"Forget": "Olvidar",
|
||||
"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)",
|
||||
"Cancel Sending": "Cancelar envío",
|
||||
"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",
|
||||
"Room not found": "Sala no encontrada",
|
||||
"Messages containing my display name": "Mensajes que contienen mi nombre",
|
||||
|
@ -623,7 +623,7 @@
|
|||
"View Decrypted Source": "Ver Fuente Descifrada",
|
||||
"Failed to update keywords": "Error al actualizar las palabras clave",
|
||||
"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 can’t 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.",
|
||||
"Please set a password!": "¡Por favor establece una contraseña!",
|
||||
|
@ -636,7 +636,7 @@
|
|||
"Members": "Miembros",
|
||||
"No update available.": "No hay actualizaciones disponibles.",
|
||||
"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",
|
||||
"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.",
|
||||
|
@ -644,21 +644,21 @@
|
|||
"Enable notifications for this account": "Habilitar notificaciones para esta cuenta",
|
||||
"Directory": "Directorio",
|
||||
"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>",
|
||||
"Error saving email notification preferences": "Error al guardar las preferencias de notificación por email",
|
||||
"Tuesday": "Martes",
|
||||
"Enter keywords separated by a comma:": "Introduzca palabras clave separadas por una coma:",
|
||||
"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!",
|
||||
"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.",
|
||||
"Event sent!": "Evento enviado!",
|
||||
"Preparing to send logs": "Preparando para enviar registros",
|
||||
"Enable desktop notifications": "Habilitar notificaciones de escritorio",
|
||||
"Unnamed room": "Sala sin nombre",
|
||||
"Explore Account Data": "Explorar Datos de la Cuenta",
|
||||
"Remove from Directory": "Retirar del Directorio",
|
||||
"Remove from Directory": "Eliminar del Directorio",
|
||||
"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.",
|
||||
"Direct Chat": "Conversación directa",
|
||||
|
@ -693,10 +693,10 @@
|
|||
"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",
|
||||
"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)",
|
||||
"Thursday": "Jueves",
|
||||
"Forward Message": "Reenviar mensaje",
|
||||
"Forward Message": "Reenviar Mensaje",
|
||||
"Logs sent": "Registros enviados",
|
||||
"Back": "Atrás",
|
||||
"Reply": "Responder",
|
||||
|
@ -710,7 +710,7 @@
|
|||
"Yesterday": "Ayer",
|
||||
"Error encountered (%(errorDetail)s).": "Error encontrado (%(errorDetail)s).",
|
||||
"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",
|
||||
"Set Password": "Establecer contraseña",
|
||||
"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.",
|
||||
"Enable email notifications": "Habilitar notificaciones por email",
|
||||
"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",
|
||||
"Pin Message": "Marcar Mensaje",
|
||||
"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",
|
||||
"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",
|
||||
"%(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.",
|
||||
"%(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",
|
||||
|
@ -784,43 +784,43 @@
|
|||
"Not a valid Riot keyfile": "No es un archivo de claves de Riot válido",
|
||||
"Message Pinning": "Mensajes con chincheta",
|
||||
"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 display name changes": "Ocultar cambios del nombre visible",
|
||||
"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",
|
||||
"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",
|
||||
"Mirror local video feed": "Clonar transmisión de video local",
|
||||
"Disable Community Filter Panel": "Desactivar Panel de Filtro de la Comunidad",
|
||||
"Disable Peer-to-Peer for 1:1 calls": "Desactivar pares para llamadas 1:1",
|
||||
"Disable Community Filter Panel": "Deshabilitar Panel de Filtro de la Comunidad",
|
||||
"Disable Peer-to-Peer for 1:1 calls": "Deshabilitar pares para llamadas 1:1",
|
||||
"Send analytics data": "Enviar información de estadísticas",
|
||||
"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 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",
|
||||
"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|one": "Borrar dispositivo",
|
||||
"Delete %(count)s devices|other": "Eliminar %(count)s dispositivos",
|
||||
"Delete %(count)s devices|one": "Eliminar dispositivo",
|
||||
"Select devices": "Seleccionar dispositivos",
|
||||
"Drop file here to upload": "Soltar aquí el fichero a subir",
|
||||
" (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",
|
||||
"%(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",
|
||||
"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.",
|
||||
"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.",
|
||||
"<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",
|
||||
"Encrypted, not sent": "Cifrado, no enviado",
|
||||
"Disinvite this user?": "¿Dejar de invitar a este usuario?",
|
||||
"Kick this user?": "¿Echar 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?",
|
||||
"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",
|
||||
|
@ -834,7 +834,7 @@
|
|||
"Make Moderator": "Convertir en Moderador",
|
||||
"bold": "negrita",
|
||||
"italic": "cursiva",
|
||||
"deleted": "borrado",
|
||||
"deleted": "eliminado",
|
||||
"underlined": "subrayado",
|
||||
"inline-code": "código en línea",
|
||||
"block-quote": "cita extensa",
|
||||
|
@ -855,7 +855,7 @@
|
|||
"%(duration)sm": "%(duration)sm",
|
||||
"%(duration)sh": "%(duration)sh",
|
||||
"%(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",
|
||||
"Offline for %(duration)s": "Desconectado 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 restore": "Soltar aquí para restaurar",
|
||||
"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 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 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",
|
||||
|
@ -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 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",
|
||||
"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 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",
|
||||
|
@ -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 they were invited)": "Sólo miembros (desde que fueron invitados)",
|
||||
"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",
|
||||
"Add a stickerpack": "Añadir un lote de pegatinas",
|
||||
"Stickerpack": "Lote de pegatinas",
|
||||
"Hide Stickers": "Ocultar pegatinas",
|
||||
"Show Stickers": "Mostrar pegatinas",
|
||||
"You don't currently have any stickerpacks enabled": "Actualmente no tienes ningún paquete de pegatinas habilitado",
|
||||
"Add a stickerpack": "Añadir un paquete de pegatinas",
|
||||
"Stickerpack": "Paquete de pegatinas",
|
||||
"Hide Stickers": "Ocultar Pegatinas",
|
||||
"Show Stickers": "Mostrar Pegatinas",
|
||||
"Addresses": "Direcciones",
|
||||
"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",
|
||||
|
@ -928,13 +928,13 @@
|
|||
"Message removed by %(userId)s": "Mensaje eliminado por %(userId)s",
|
||||
"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>",
|
||||
"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",
|
||||
"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.",
|
||||
"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.",
|
||||
"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 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.",
|
||||
"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",
|
||||
"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:",
|
||||
|
@ -948,8 +948,8 @@
|
|||
"You are registering with %(SelectedTeamName)s": "Está registrándose con %(SelectedTeamName)s",
|
||||
"Default server": "Servidor por defecto",
|
||||
"Custom server": "Servidor personalizado",
|
||||
"Home server URL": "URL del Home server",
|
||||
"Identity server URL": "URL del servidor de Identidad",
|
||||
"Home server URL": "URL del servidor doméstico",
|
||||
"Identity server URL": "URL del servidor de identidad",
|
||||
"What does this mean?": "¿Qué significa esto?",
|
||||
"Remove from community": "Eliminar 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",
|
||||
"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á",
|
||||
"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.",
|
||||
"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",
|
||||
|
@ -976,7 +976,7 @@
|
|||
"Yes, I want to help!": "¡Sí, quiero ayudar!",
|
||||
"Unknown Address": "Dirección desconocida",
|
||||
"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?",
|
||||
"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",
|
||||
|
@ -997,7 +997,7 @@
|
|||
"%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s se fueron %(count)s veces",
|
||||
"%(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|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|one": "%(severalUsers)s se unieron y fueron",
|
||||
"%(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|one": "fue invitado",
|
||||
"were banned %(count)s times|other": "fue proscrito %(count)s veces",
|
||||
"were banned %(count)s times|one": "fueron proscritos",
|
||||
"was banned %(count)s times|other": "fue proscrito %(count)s veces",
|
||||
"was banned %(count)s times|one": "fue proscrito",
|
||||
"were unbanned %(count)s times|other": "fueron proscritos %(count)s veces",
|
||||
"were unbanned %(count)s times|one": "dejaron de ser proscritos",
|
||||
"was unbanned %(count)s times|other": "dejaron de ser proscritos %(count)s veces",
|
||||
"was unbanned %(count)s times|one": "dejó de ser proscrito",
|
||||
"were banned %(count)s times|one": "fueron vetados",
|
||||
"was banned %(count)s times|other": "fue vetado %(count)s veces",
|
||||
"was banned %(count)s times|one": "fue vetado",
|
||||
"were unbanned %(count)s times|other": "les quitaron el veto %(count)s veces",
|
||||
"were unbanned %(count)s times|one": "les quitaron el veto",
|
||||
"was unbanned %(count)s times|other": "se le quitó el veto %(count)s veces",
|
||||
"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|one": "fueron echados",
|
||||
"was kicked %(count)s times|other": "fue echado %(count)s veces",
|
||||
|
@ -1070,7 +1070,7 @@
|
|||
"Create": "Crear",
|
||||
"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",
|
||||
"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",
|
||||
"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.",
|
||||
|
@ -1084,14 +1084,14 @@
|
|||
"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...",
|
||||
"Encryption key request": "Solicitud de clave de cifrado",
|
||||
"Log out and remove encryption keys?": "¿Salir y eliminar claves de cifrado?",
|
||||
"Clear Storage and Sign Out": "Limpiar Almacenamiento y Desconectar",
|
||||
"Log out and remove encryption keys?": "¿Cerrar sesión y eliminar claves de cifrado?",
|
||||
"Clear Storage and Sign Out": "Borrar Almacenamiento y Cerrar Sesión",
|
||||
"Send Logs": "Enviar Registros",
|
||||
"Refresh": "Refrescar",
|
||||
"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.",
|
||||
"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",
|
||||
"An error occurred: %(error_string)s": "Ocurrió un error: %(error_string)s",
|
||||
"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.",
|
||||
"Unknown devices": "Dispositivos desconocidos",
|
||||
"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",
|
||||
"Topic": "Tema",
|
||||
"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",
|
||||
"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:",
|
||||
"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",
|
||||
"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",
|
||||
"Unable to accept invite": "No se pudo aceptar la invitación",
|
||||
"Unable to join community": "No se pudo unir a comunidad",
|
||||
"Leave Community": "Abandonar Comunidad",
|
||||
"Leave %(groupName)s?": "¿Abandonar %(groupName)s?",
|
||||
"Leave Community": "Salir de la Comunidad",
|
||||
"Leave %(groupName)s?": "¿Salir de %(groupName)s?",
|
||||
"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.",
|
||||
"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 Users:": "Usuarios Destacados:",
|
||||
"%(inviter)s has invited you to join this community": "%(inviter)s le ha invitado a unirse a esta comunidad",
|
||||
"Featured Rooms:": "Salas destacadas:",
|
||||
"Featured Users:": "Usuarios destacados:",
|
||||
"%(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",
|
||||
"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 a member of this community": "Usted es un miembro de 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)",
|
||||
"Description": "Descripción",
|
||||
"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",
|
||||
"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",
|
||||
|
@ -1169,18 +1169,18 @@
|
|||
"Error whilst fetching joined communities": "Se produjo un error al recuperar las comunidades suscritas",
|
||||
"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.",
|
||||
"<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>.",
|
||||
"%(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.|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.",
|
||||
"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",
|
||||
"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",
|
||||
"Clear filter": "Limpiar filtro",
|
||||
"Light theme": "Tema ligero",
|
||||
"Clear filter": "Borrar filtro",
|
||||
"Light theme": "Tema claro",
|
||||
"Dark theme": "Tema oscuro",
|
||||
"Status.im theme": "Tema Status.im",
|
||||
"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",
|
||||
"No Audio Outputs detected": "No se detectaron Salidas 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.",
|
||||
"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",
|
||||
|
@ -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.",
|
||||
"Missing password.": "Falta la contraseña.",
|
||||
"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).",
|
||||
"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 phone number.": "Éste no parece un número de teléfono válido.",
|
||||
"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.": "Esto no parece ser una dirección de correo electrónico válida.",
|
||||
"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.",
|
||||
"I already have an account": "Ya tengo una cuenta",
|
||||
"Notify the whole room": "Notificar a toda la sala",
|
||||
|
@ -1239,7 +1239,20 @@
|
|||
"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": "La carga lenta de los miembros no está soportada",
|
||||
"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"
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -1264,5 +1264,7 @@
|
|||
"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."
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -1264,5 +1264,10 @@
|
|||
"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"
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -1264,5 +1264,10 @@
|
|||
"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"
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -151,7 +151,7 @@
|
|||
"Access Token:": "Token Akses:",
|
||||
"Active call (%(roomName)s)": "Panggilan aktif (%(roomName)s)",
|
||||
"Admin": "Admin",
|
||||
"Admin Tools": "Alat admin",
|
||||
"Admin Tools": "Peralatan Admin",
|
||||
"VoIP": "VoIP",
|
||||
"Missing Media Permissions, click here to request.": "Tidak ada Izin Media, klik disini untuk meminta.",
|
||||
"No Webcams detected": "Tidak ada Webcam terdeteksi",
|
||||
|
|
|
@ -1255,5 +1255,15 @@
|
|||
"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"
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -671,5 +671,116 @@
|
|||
"Offline": "Atsijungęs",
|
||||
"Failed to set avatar.": "Nepavyko nustatyti avataro.",
|
||||
"Forget room": "Pamiršti kambarį",
|
||||
"Share room": "Bendrinti 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"
|
||||
}
|
||||
|
|
|
@ -69,15 +69,15 @@
|
|||
"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",
|
||||
"Unable to enable Notifications": "Klarte ikkje å skru på Varsel",
|
||||
"This email address was not found": "Denne emailadressa var ikkje funne",
|
||||
"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.",
|
||||
"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.": "Epostadressa di ser ikkje ut til å vera tilknytta ein Matrix-ID på denne heimtenaren.",
|
||||
"Default": "Utgangspunktinnstilling",
|
||||
"Restricted": "Avgrensa",
|
||||
"Moderator": "Moderator",
|
||||
"Admin": "Administrator",
|
||||
"Start a chat": "Start ei samtale",
|
||||
"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",
|
||||
"Invite new room members": "Byd nye rommedlemer inn",
|
||||
"Who would you like to add to this room?": "Kven vil du leggja til i rommet?",
|
||||
|
@ -120,9 +120,9 @@
|
|||
"Unignored user": "Avoversedd brukar",
|
||||
"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",
|
||||
"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å",
|
||||
"Failed to verify email address: make sure you clicked the link in the email": "Fekk ikkje til å stadfesta 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",
|
||||
"Every page you use in the app": "Alle sider du brukar i æppen",
|
||||
"e.g. <CurrentPageURL>": "t.d. <CurrentPageURL>",
|
||||
|
@ -262,7 +262,7 @@
|
|||
"Passwords can't be empty": "Passordsfelta kan ikkje vera tomme",
|
||||
"Warning!": "Åtvaring!",
|
||||
"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",
|
||||
"Password": "Passord",
|
||||
"New Password": "Nytt Passord",
|
||||
|
@ -278,8 +278,8 @@
|
|||
"Last seen": "Sist sedd",
|
||||
"Select devices": "Vel einingar",
|
||||
"Failed to set display name": "Fekk ikkje til å setja visingsnamn",
|
||||
"Error saving email notification preferences": "Klarte ikkje å lagra foretrukne emailvarselinnstillingar",
|
||||
"An error occurred whilst saving your email notification preferences.": "Noko gjekk gale med lagringa av dine foretrukne emailvarselinstillingar.",
|
||||
"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 epostvarselinstillingar.",
|
||||
"Keywords": "Nykelord",
|
||||
"Enter keywords separated by a comma:": "Skriv inn nykelord med komma imellom:",
|
||||
"OK": "Greitt",
|
||||
|
@ -291,8 +291,8 @@
|
|||
"Notify me for anything else": "Varsl meg for kva som helst anna",
|
||||
"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.",
|
||||
"Add an email address above to configure email notifications": "Legg til ein emailadresse i feltet over for å endra emailvarselinnstillingar",
|
||||
"Enable email notifications": "Skru emailvarsel på",
|
||||
"Add an email address above to configure email notifications": "Legg til ein epostadresse i feltet over for å endra epostvarselinnstillingar",
|
||||
"Enable email notifications": "Skru epostvarsel på",
|
||||
"Notifications on the following keywords follow rules which can’t 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",
|
||||
"Notification targets": "Varselmål",
|
||||
|
@ -451,8 +451,8 @@
|
|||
"You have no historical rooms": "Du har inkje historiske rom",
|
||||
"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.",
|
||||
"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:",
|
||||
"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.",
|
||||
"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 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",
|
||||
"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",
|
||||
|
@ -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",
|
||||
"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.",
|
||||
"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",
|
||||
"To continue, please enter your password.": "For å gå fram, ver venleg og skriv passordet ditt inn.",
|
||||
"Password:": "Passord:",
|
||||
"An email has been sent to %(emailAddress)s": "En email vart send til %(emailAddress)s",
|
||||
"Please check your email to continue registration.": "Ver venleg og sjekk emailen din for å gå vidare med påmeldinga.",
|
||||
"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 eposten din for å gå vidare med påmeldinga.",
|
||||
"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:",
|
||||
"Code": "Kode",
|
||||
"Start authentication": "Byrj godkjenning",
|
||||
"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 phone number field must not be blank.": "Telefonnummerfeltet kan ikkje vera tomt.",
|
||||
"The password field must not be blank.": "Passordfeltet kan ikkje vera tomt.",
|
||||
|
@ -608,10 +608,10 @@
|
|||
"Forgot your password?": "Gløymt passordet ditt?",
|
||||
"%(serverName)s Matrix ID": "%(serverName)s Matrix-ID",
|
||||
"Sign in with": "Logg inn med",
|
||||
"Email address": "Emailadresse",
|
||||
"Email address": "Epostadresse",
|
||||
"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?",
|
||||
"Email address (optional)": "Emailadresse (valfritt)",
|
||||
"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)": "Epostadresse (valfritt)",
|
||||
"You are registering with %(SelectedTeamName)s": "Du melder deg inn med %(SelectedTeamName)s",
|
||||
"Mobile phone number (optional)": "Mobiltelefonnummer (valfritt)",
|
||||
"Register": "Meld deg inn",
|
||||
|
@ -738,7 +738,7 @@
|
|||
"Add User": "Legg Brukar til",
|
||||
"Matrix ID": "Matrix-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.",
|
||||
"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",
|
||||
|
@ -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>",
|
||||
"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.",
|
||||
"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)",
|
||||
"To continue, please enter your password:": "For å gå fram, ver venleg og skriv passordet ditt inn:",
|
||||
"password": "passord",
|
||||
|
@ -817,12 +817,12 @@
|
|||
"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 ø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 krypterte pratehistoria uleseleg.",
|
||||
"Invalid Email Address": "Ugangbar Emailadresse",
|
||||
"This doesn't appear to be a valid email address": "Det ser ikkje ut til at emailadressa er gangbar",
|
||||
"Invalid Email Address": "Ugangbar Epostadresse",
|
||||
"This doesn't appear to be a valid email address": "Det ser ikkje ut til at epostadressa er gangbar",
|
||||
"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.",
|
||||
"Unable to add email address": "Klarte ikkje å leggja emailadressa til",
|
||||
"Unable to verify email address.": "Klarte ikkje å stadfesta emailadressa.",
|
||||
"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 epostadressa til",
|
||||
"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.",
|
||||
"Skip": "Hopp over",
|
||||
"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>.",
|
||||
"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 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.",
|
||||
"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?",
|
||||
"(HTTP status %(httpStatus)s)": "(HTTP-tilstand %(httpStatus)s)",
|
||||
"Please set a password!": "Ver venleg og set eit passord!",
|
||||
|
@ -1059,8 +1059,8 @@
|
|||
"Microphone": "Ljodopptaking",
|
||||
"Camera": "Kamera",
|
||||
"VoIP": "VoIP",
|
||||
"Email": "Email",
|
||||
"Add email address": "Legg emailadresse til",
|
||||
"Email": "Epost",
|
||||
"Add email address": "Legg epostadresse til",
|
||||
"Display name": "Visingsnamn",
|
||||
"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",
|
||||
|
@ -1071,21 +1071,21 @@
|
|||
"matrix-react-sdk version:": "matrix-react-sdk-utgåve:",
|
||||
"riot-web version:": "riot-web-utgåve:",
|
||||
"olm version:": "olm-utgåve:",
|
||||
"Failed to send email": "Fekk ikkje til å senda emailen",
|
||||
"The email address linked to your account must be entered.": "Du må skriva emailadressa som er tilknytta brukaren din inn.",
|
||||
"Failed to send email": "Fekk ikkje til å senda eposten",
|
||||
"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.",
|
||||
"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 fylgd lenkja i den, klikk under.",
|
||||
"I have verified my email address": "Eg har godkjend emailadressa mi",
|
||||
"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 epostadressa mi",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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.",
|
||||
"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.",
|
||||
|
@ -1103,7 +1103,7 @@
|
|||
"Missing password.": "Vantande passord.",
|
||||
"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).",
|
||||
"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.",
|
||||
"You need to enter a user name.": "Du må skriva eit brukarnamn inn.",
|
||||
"An unknown error occurred.": "Noko ukjend gjekk gale.",
|
||||
|
|
|
@ -1251,5 +1251,11 @@
|
|||
"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 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"
|
||||
}
|
||||
|
|
|
@ -1003,8 +1003,8 @@
|
|||
"%(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|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|one": "%(oneUser)ssändrade sin avatar",
|
||||
"%(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)sändrade sin avatar",
|
||||
"%(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",
|
||||
"collapse": "fäll ihop",
|
||||
|
|
|
@ -1264,5 +1264,11 @@
|
|||
"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"
|
||||
"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...": "無法連線到家伺服器。正在重試……"
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import MatrixClientPeg from '../MatrixClientPeg';
|
||||
import _uniq from 'lodash/uniq';
|
||||
|
||||
/**
|
||||
* Class that takes a Matrix Client and flips the m.direct map
|
||||
|
@ -36,11 +37,8 @@ export default class DMRoomMap {
|
|||
this._onAccountData = this._onAccountData.bind(this);
|
||||
|
||||
const mDirectEvent = matrixClient.getAccountData('m.direct');
|
||||
if (!mDirectEvent) {
|
||||
this.userToRooms = {};
|
||||
} else {
|
||||
this.userToRooms = mDirectEvent.getContent();
|
||||
}
|
||||
this.mDirectEvent = mDirectEvent ? mDirectEvent.getContent() : {};
|
||||
this.userToRooms = null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -72,21 +70,9 @@ export default class DMRoomMap {
|
|||
|
||||
_onAccountData(ev) {
|
||||
if (ev.getType() == 'm.direct') {
|
||||
const userToRooms = this.matrixClient.getAccountData('m.direct').getContent() || {};
|
||||
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.
|
||||
if (neededPatching && !this._hasSentOutPatchDirectAccountDataPatch) {
|
||||
this._hasSentOutPatchDirectAccountDataPatch = true;
|
||||
this.matrixClient.setAccountData('m.direct', userToRooms);
|
||||
}
|
||||
}
|
||||
this.userToRooms = userToRooms;
|
||||
this._populateRoomToUser();
|
||||
this.mDirectEvent = this.matrixClient.getAccountData('m.direct').getContent() || {};
|
||||
this.userToRooms = null;
|
||||
this.roomToUser = null;
|
||||
}
|
||||
}
|
||||
/**
|
||||
|
@ -114,22 +100,17 @@ export default class DMRoomMap {
|
|||
return false;
|
||||
}
|
||||
userToRooms[myUserId] = selfRoomIds.filter((roomId) => {
|
||||
return guessedUserIdsThatChanged
|
||||
return !guessedUserIdsThatChanged
|
||||
.some((ids) => ids.roomId === roomId);
|
||||
});
|
||||
|
||||
guessedUserIdsThatChanged.forEach(({userId, roomId}) => {
|
||||
if (!userId) {
|
||||
// if not able to guess the other user (unlikely)
|
||||
// still put it in the map so the room stays marked
|
||||
// as a DM, we just wont be able to show an avatar.
|
||||
userId = "";
|
||||
}
|
||||
let roomIds = userToRooms[userId];
|
||||
if (!roomIds) {
|
||||
roomIds = userToRooms[userId] = [];
|
||||
userToRooms[userId] = [roomId];
|
||||
} else {
|
||||
roomIds.push(roomId);
|
||||
userToRooms[userId] = _uniq(roomIds);
|
||||
}
|
||||
roomIds.push(roomId);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
@ -138,7 +119,7 @@ export default class DMRoomMap {
|
|||
getDMRoomsForUserId(userId) {
|
||||
// Here, we return the empty list if there are no rooms,
|
||||
// since the number of conversations you have with this user is zero.
|
||||
return this.userToRooms[userId] || [];
|
||||
return this._getUserToRooms()[userId] || [];
|
||||
}
|
||||
|
||||
getUserIdForRoomId(roomId) {
|
||||
|
@ -163,9 +144,31 @@ export default class DMRoomMap {
|
|||
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() {
|
||||
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]) {
|
||||
this.roomToUser[roomId] = user;
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { _t } from '../languageHandler';
|
||||
import { _t, _td } from '../languageHandler';
|
||||
|
||||
/**
|
||||
* Produce a translated error message for a
|
||||
|
@ -48,3 +48,31 @@ export function messageForResourceLimitError(limitType, adminContact, strings, e
|
|||
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>;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,6 +37,11 @@ function doInputEmail(inputEmail, onTeamSelected) {
|
|||
<RegistrationForm
|
||||
teamsConfig={TEAM_CONFIG}
|
||||
onTeamSelected={onTeamSelected}
|
||||
flows={[
|
||||
{
|
||||
stages: ['m.login.dummy'],
|
||||
},
|
||||
]}
|
||||
/>,
|
||||
);
|
||||
|
||||
|
|
Loading…
Reference in New Issue