- {_t('Autocomplete Delay (ms):')}
+ { _t('Autocomplete Delay (ms):') }
{ _t("Disable inline URL previews by default") }
@@ -712,13 +759,13 @@ module.exports = React.createClass({
if (setting.fn) setting.fn(e.target.checked);
};
- return
-
+
-
+
{ _t(setting.label) }
;
@@ -729,6 +776,7 @@ module.exports = React.createClass({
// to rebind the onChange each time we render
const onChange = (e) => {
if (e.target.checked) {
+ this._syncedSettings[setting.id] = setting.value;
UserSettingsStore.setSyncedSetting(setting.id, setting.value);
}
dis.dispatch({
@@ -736,16 +784,16 @@ module.exports = React.createClass({
value: setting.value,
});
};
- return
-
+
-
- { setting.label }
+
+ { _t(setting.label) }
;
},
@@ -781,10 +829,10 @@ module.exports = React.createClass({
{ _t("Cryptography") }
- {_t("Device ID:")}
- {deviceId}
- {_t("Device key:")}
- {identityKey}
+ { _t("Device ID:") }
+ { deviceId }
+ { _t("Device key:") }
+ { identityKey }
{ importExportButtons }
@@ -795,6 +843,26 @@ module.exports = React.createClass({
);
},
+ _renderIgnoredUsers: function() {
+ if (this.state.ignoredUsers.length > 0) {
+ const updateHandler = this._refreshIgnoredUsers;
+ return (
+
+
{ _t("Ignored Users") }
+
+
+ { this.state.ignoredUsers.map(function(userId) {
+ return ( );
+ }) }
+
+
+
+ );
+ } else return (
);
+ },
+
_renderLocalSetting: function(setting) {
// TODO: this ought to be a separate component so that we don't need
// to rebind the onChange each time we render
@@ -803,13 +871,13 @@ module.exports = React.createClass({
if (setting.fn) setting.fn(e.target.checked);
};
- return
-
+
-
+
{ _t(setting.label) }
;
@@ -819,8 +887,8 @@ module.exports = React.createClass({
const DevicesPanel = sdk.getComponent('settings.DevicesPanel');
return (
-
{_t("Devices")}
-
+ { _t("Devices") }
+
);
},
@@ -835,7 +903,7 @@ module.exports = React.createClass({
{ _t("Found a bug?") }
{_t('Report it')}
+ onClick={this._onBugReportClicked}>{ _t('Report it') }
@@ -843,13 +911,13 @@ module.exports = React.createClass({
},
_renderAnalyticsControl: function() {
- if (!SdkConfig.get().piwik) return
;
+ if (!SdkConfig.get().piwik) return
;
return
{ _t('Analytics') }
- {_t('Riot collects anonymous analytics to allow us to improve the application.')}
- {ANALYTICS_SETTINGS_LABELS.map( this._renderLocalSetting )}
+ { _t('Riot collects anonymous analytics to allow us to improve the application.') }
+ { ANALYTICS_SETTINGS_LABELS.map( this._renderLocalSetting ) }
;
},
@@ -879,10 +947,10 @@ module.exports = React.createClass({
type="checkbox"
id={feature.id}
name={feature.id}
- defaultChecked={ UserSettingsStore.isFeatureEnabled(feature.id) }
- onChange={ onChange }
+ defaultChecked={UserSettingsStore.isFeatureEnabled(feature.id)}
+ onChange={onChange}
/>
- {feature.name}
+ { feature.name }
);
});
@@ -896,7 +964,7 @@ module.exports = React.createClass({
{ _t("Labs") }
{ _t("These are experimental features that may break in unexpected ways") }. { _t("Use with caution") }.
- {features}
+ { features }
);
@@ -929,10 +997,10 @@ module.exports = React.createClass({
const platform = PlatformPeg.get();
if ('canSelfUpdate' in platform && platform.canSelfUpdate() && 'startUpdateCheck' in platform) {
return
-
{_t('Updates')}
+
{ _t('Updates') }
- {_t('Check for update')}
+ { _t('Check for update') }
;
@@ -958,7 +1026,7 @@ module.exports = React.createClass({
reject = (
- {_t("Reject all %(invitedRooms)s invites", {invitedRooms: invitedRooms.length})}
+ { _t("Reject all %(invitedRooms)s invites", {invitedRooms: invitedRooms.length}) }
);
}
@@ -966,7 +1034,7 @@ module.exports = React.createClass({
return
{ _t("Bulk Options") }
- {reject}
+ { reject }
;
},
@@ -984,7 +1052,7 @@ module.exports = React.createClass({
defaultChecked={settings['auto-launch']}
onChange={this._onAutoLaunchChanged}
/>
- {_t('Start automatically after system login')}
+ { _t('Start automatically after system login') }
;
@@ -996,7 +1064,7 @@ module.exports = React.createClass({
},
_mapWebRtcDevicesToSpans: function(devices) {
- return devices.map((device) => {device.label} );
+ return devices.map((device) => { device.label } );
},
_setAudioInput: function(deviceId) {
@@ -1032,15 +1100,15 @@ module.exports = React.createClass({
if (this.state.mediaDevices === false) {
return (
- {_t('Missing Media Permissions, click here to request.')}
+ { _t('Missing Media Permissions, click here to request.') }
);
} else if (!this.state.mediaDevices) return;
const Dropdown = sdk.getComponent('elements.Dropdown');
- let microphoneDropdown = {_t('No Microphones detected')}
;
- let webcamDropdown = {_t('No Webcams detected')}
;
+ let microphoneDropdown = { _t('No Microphones detected') }
;
+ let webcamDropdown = { _t('No Webcams detected') }
;
const defaultOption = {
deviceId: '',
@@ -1057,12 +1125,12 @@ module.exports = React.createClass({
}
microphoneDropdown =
-
{_t('Microphone')}
+ { _t('Microphone') }
- {this._mapWebRtcDevicesToSpans(audioInputs)}
+ { this._mapWebRtcDevicesToSpans(audioInputs) }
;
}
@@ -1077,25 +1145,25 @@ module.exports = React.createClass({
}
webcamDropdown =
-
{_t('Camera')}
+ { _t('Camera') }
- {this._mapWebRtcDevicesToSpans(videoInputs)}
+ { this._mapWebRtcDevicesToSpans(videoInputs) }
;
}
return
- {microphoneDropdown}
- {webcamDropdown}
+ { microphoneDropdown }
+ { webcamDropdown }
;
},
_renderWebRtcSettings: function() {
return
-
{_t('VoIP')}
+
{ _t('VoIP') }
{ WEBRTC_SETTINGS_LABELS.map(this._renderLocalSetting) }
{ this._renderWebRtcDeviceSettings() }
@@ -1161,7 +1229,7 @@ module.exports = React.createClass({
return (
- {this.nameForMedium(val.medium)}
+ { this.nameForMedium(val.medium) }
-
@@ -1182,16 +1250,16 @@ module.exports = React.createClass({
addEmailSection = (
- {_t('Email')}
+ { _t('Email') }
+ placeholder={_t("Add email address")}
+ blurToCancel={false}
+ onValueChanged={this._onAddEmailEditFinished} />
@@ -1239,8 +1307,8 @@ module.exports = React.createClass({
return (
- {threepidsSection}
+ { threepidsSection }
-
+
+ showUploadSection={false} className="mx_UserSettings_avatarPicker_img" />
@@ -1289,36 +1357,37 @@ module.exports = React.createClass({
: null
}
- {accountJsx}
+ { accountJsx }
- {this._renderReferral()}
+ { this._renderReferral() }
- {notificationArea}
+ { notificationArea }
- {this._renderUserInterfaceSettings()}
- {this._renderLabs()}
- {this._renderWebRtcSettings()}
- {this._renderDevicesPanel()}
- {this._renderCryptoInfo()}
- {this._renderBulkOptions()}
- {this._renderBugReport()}
+ { this._renderUserInterfaceSettings() }
+ { this._renderLabs() }
+ { this._renderWebRtcSettings() }
+ { this._renderDevicesPanel() }
+ { this._renderCryptoInfo() }
+ { this._renderIgnoredUsers() }
+ { this._renderBulkOptions() }
+ { this._renderBugReport() }
- {PlatformPeg.get().isElectron() && this._renderElectronSettings()}
+ { PlatformPeg.get().isElectron() && this._renderElectronSettings() }
- {this._renderAnalyticsControl()}
+ { this._renderAnalyticsControl() }
{ _t("Advanced") }
- { _t("Logged in as:") } {this._me}
+ { _t("Logged in as:") } { this._me }
- {_t('Access Token:')}
+ { _t('Access Token:') }
+ data-spoiler={MatrixClientPeg.get().getAccessToken()}>
<{ _t("click to reveal") }>
@@ -1329,23 +1398,23 @@ module.exports = React.createClass({
{ _t("Identity Server is") } { MatrixClientPeg.get().getIdentityServerUrl() }
- {_t('matrix-react-sdk version:')} {(REACT_SDK_VERSION !== '')
+ { _t('matrix-react-sdk version:') } { (REACT_SDK_VERSION !== '')
? gHVersionLabel('matrix-org/matrix-react-sdk', REACT_SDK_VERSION)
: REACT_SDK_VERSION
- }
- {_t('riot-web version:')} {(this.state.vectorVersion !== undefined)
+ }
+ { _t('riot-web version:') } { (this.state.vectorVersion !== undefined)
? gHVersionLabel('vector-im/riot-web', this.state.vectorVersion)
: 'unknown'
- }
- { _t("olm version:") } {olmVersionString}
+ }
+ { _t("olm version:") } { olmVersionString }
- {this._renderCheckUpdate()}
+ { this._renderCheckUpdate() }
- {this._renderClearCache()}
+ { this._renderClearCache() }
- {this._renderDeactivateAccount()}
+ { this._renderDeactivateAccount() }
diff --git a/src/components/structures/login/ForgotPassword.js b/src/components/structures/login/ForgotPassword.js
index 320d21f5b4..1b259a08fd 100644
--- a/src/components/structures/login/ForgotPassword.js
+++ b/src/components/structures/login/ForgotPassword.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2017 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.
@@ -136,16 +137,15 @@ module.exports = React.createClass({
});
},
- onHsUrlChanged: function(newHsUrl) {
- this.setState({
- enteredHomeserverUrl: newHsUrl
- });
- },
-
- onIsUrlChanged: function(newIsUrl) {
- this.setState({
- enteredIdentityServerUrl: newIsUrl
- });
+ onServerConfigChange: function(config) {
+ const newState = {};
+ if (config.hsUrl !== undefined) {
+ newState.enteredHomeserverUrl = config.hsUrl;
+ }
+ if (config.isUrl !== undefined) {
+ newState.enteredIdentityServerUrl = config.isUrl;
+ }
+ this.setState(newState);
},
showErrorDialog: function(body, title) {
@@ -170,7 +170,7 @@ module.exports = React.createClass({
else if (this.state.progress === "sent_email") {
resetPasswordJsx = (
- { _t('An email has been sent to') } {this.state.email}. { _t('Once you've followed the link it contains, click below') }.
+ { _t('An email has been sent to') } {this.state.email}. { _t("Once you've followed the link it contains, click below") }.
@@ -221,8 +221,7 @@ module.exports = React.createClass({
defaultIsUrl={this.props.defaultIsUrl}
customHsUrl={this.props.customHsUrl}
customIsUrl={this.props.customIsUrl}
- onHsUrlChanged={this.onHsUrlChanged}
- onIsUrlChanged={this.onIsUrlChanged}
+ onServerConfigChange={this.onServerConfigChange}
delayTimeMs={0}/>
diff --git a/src/components/views/avatars/BaseAvatar.js b/src/components/views/avatars/BaseAvatar.js
index a4443430f4..e88fc869fa 100644
--- a/src/components/views/avatars/BaseAvatar.js
+++ b/src/components/views/avatars/BaseAvatar.js
@@ -14,10 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-'use strict';
-
-var React = require('react');
-var AvatarLogic = require("../../../Avatar");
+import React from 'react';
+import AvatarLogic from '../../../Avatar';
import sdk from '../../../index';
import AccessibleButton from '../elements/AccessibleButton';
diff --git a/src/components/views/avatars/RoomAvatar.js b/src/components/views/avatars/RoomAvatar.js
index a18a52b3c0..11554b2379 100644
--- a/src/components/views/avatars/RoomAvatar.js
+++ b/src/components/views/avatars/RoomAvatar.js
@@ -13,11 +13,10 @@ 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.
*/
-var React = require('react');
-var ContentRepo = require("matrix-js-sdk").ContentRepo;
-var MatrixClientPeg = require('../../../MatrixClientPeg');
-var Avatar = require('../../../Avatar');
-var sdk = require("../../../index");
+import React from "react";
+import {ContentRepo} from "matrix-js-sdk";
+import MatrixClientPeg from "../../../MatrixClientPeg";
+import sdk from "../../../index";
module.exports = React.createClass({
displayName: 'RoomAvatar',
@@ -30,7 +29,7 @@ module.exports = React.createClass({
oobData: React.PropTypes.object,
width: React.PropTypes.number,
height: React.PropTypes.number,
- resizeMethod: React.PropTypes.string
+ resizeMethod: React.PropTypes.string,
},
getDefaultProps: function() {
@@ -44,13 +43,13 @@ module.exports = React.createClass({
getInitialState: function() {
return {
- urls: this.getImageUrls(this.props)
+ urls: this.getImageUrls(this.props),
};
},
componentWillReceiveProps: function(newProps) {
this.setState({
- urls: this.getImageUrls(newProps)
+ urls: this.getImageUrls(newProps),
});
},
@@ -61,11 +60,10 @@ module.exports = React.createClass({
props.oobData.avatarUrl,
Math.floor(props.width * window.devicePixelRatio),
Math.floor(props.height * window.devicePixelRatio),
- props.resizeMethod
+ props.resizeMethod,
), // highest priority
this.getRoomAvatarUrl(props),
- this.getOneToOneAvatar(props),
- this.getFallbackAvatar(props) // lowest priority
+ this.getOneToOneAvatar(props), // lowest priority
].filter(function(url) {
return (url != null && url != "");
});
@@ -79,17 +77,17 @@ module.exports = React.createClass({
Math.floor(props.width * window.devicePixelRatio),
Math.floor(props.height * window.devicePixelRatio),
props.resizeMethod,
- false
+ false,
);
},
getOneToOneAvatar: function(props) {
if (!props.room) return null;
- var mlist = props.room.currentState.members;
- var userIds = [];
+ const mlist = props.room.currentState.members;
+ const userIds = [];
// for .. in optimisation to return early if there are >2 keys
- for (var uid in mlist) {
+ for (const uid in mlist) {
if (mlist.hasOwnProperty(uid)) {
userIds.push(uid);
}
@@ -99,7 +97,7 @@ module.exports = React.createClass({
}
if (userIds.length == 2) {
- var theOtherGuy = null;
+ let theOtherGuy = null;
if (mlist[userIds[0]].userId == MatrixClientPeg.get().credentials.userId) {
theOtherGuy = mlist[userIds[1]];
} else {
@@ -110,7 +108,7 @@ module.exports = React.createClass({
Math.floor(props.width * window.devicePixelRatio),
Math.floor(props.height * window.devicePixelRatio),
props.resizeMethod,
- false
+ false,
);
} else if (userIds.length == 1) {
return mlist[userIds[0]].getAvatarUrl(
@@ -118,37 +116,24 @@ module.exports = React.createClass({
Math.floor(props.width * window.devicePixelRatio),
Math.floor(props.height * window.devicePixelRatio),
props.resizeMethod,
- false
+ false,
);
} else {
return null;
}
},
- getFallbackAvatar: function(props) {
- let roomId = null;
- if (props.oobData && props.oobData.roomId) {
- roomId = this.props.oobData.roomId;
- } else if (props.room) {
- roomId = props.room.roomId;
- } else {
- return null;
- }
-
- return Avatar.defaultAvatarUrlForString(roomId);
- },
-
render: function() {
- var BaseAvatar = sdk.getComponent("avatars.BaseAvatar");
+ const BaseAvatar = sdk.getComponent("avatars.BaseAvatar");
- var {room, oobData, ...otherProps} = this.props;
+ const {room, oobData, ...otherProps} = this.props;
- var roomName = room ? room.name : oobData.name;
+ const roomName = room ? room.name : oobData.name;
return (
);
- }
+ },
});
diff --git a/src/components/views/dialogs/UserPickerDialog.js b/src/components/views/dialogs/AddressPickerDialog.js
similarity index 66%
rename from src/components/views/dialogs/UserPickerDialog.js
rename to src/components/views/dialogs/AddressPickerDialog.js
index bde1ab0910..6a027ac034 100644
--- a/src/components/views/dialogs/UserPickerDialog.js
+++ b/src/components/views/dialogs/AddressPickerDialog.js
@@ -28,7 +28,7 @@ const TRUNCATE_QUERY_LIST = 40;
const QUERY_USER_DIRECTORY_DEBOUNCE_MS = 200;
module.exports = React.createClass({
- displayName: "UserPickerDialog",
+ displayName: "AddressPickerDialog",
propTypes: {
title: PropTypes.string.isRequired,
@@ -38,8 +38,14 @@ module.exports = React.createClass({
roomId: PropTypes.string,
button: PropTypes.string,
focus: PropTypes.bool,
- validAddressTypes: PropTypes.arrayOf(PropTypes.oneOfType(addressTypes)),
+ validAddressTypes: PropTypes.arrayOf(PropTypes.oneOf(addressTypes)),
onFinished: PropTypes.func.isRequired,
+ groupId: PropTypes.string,
+ // The type of entity to search for. Default: 'user'.
+ pickerType: PropTypes.oneOf(['user', 'room']),
+ // Whether the current user should be included in the addresses returned. Only
+ // applicable when pickerType is `user`. Default: false.
+ includeSelf: PropTypes.bool,
},
getDefaultProps: function() {
@@ -47,6 +53,8 @@ module.exports = React.createClass({
value: "",
focus: true,
validAddressTypes: addressTypes,
+ pickerType: 'user',
+ includeSelf: false,
};
},
@@ -140,10 +148,22 @@ module.exports = React.createClass({
// Only do search if there is something to search
if (query.length > 0 && query != '@' && query.length >= 2) {
this.queryChangedDebouncer = setTimeout(() => {
- if (this.state.serverSupportsUserDirectory) {
- this._doUserDirectorySearch(query);
+ if (this.props.pickerType === 'user') {
+ if (this.props.groupId) {
+ this._doNaiveGroupSearch(query);
+ } else if (this.state.serverSupportsUserDirectory) {
+ this._doUserDirectorySearch(query);
+ } else {
+ this._doLocalSearch(query);
+ }
+ } else if (this.props.pickerType === 'room') {
+ if (this.props.groupId) {
+ this._doNaiveGroupRoomSearch(query);
+ } else {
+ this._doRoomSearch(query);
+ }
} else {
- this._doLocalSearch(query);
+ console.error('Unknown pickerType', this.props.pickerType);
}
}, QUERY_USER_DIRECTORY_DEBOUNCE_MS);
} else {
@@ -185,6 +205,101 @@ module.exports = React.createClass({
if (this._cancelThreepidLookup) this._cancelThreepidLookup();
},
+ _doNaiveGroupSearch: function(query) {
+ const lowerCaseQuery = query.toLowerCase();
+ this.setState({
+ busy: true,
+ query,
+ searchError: null,
+ });
+ MatrixClientPeg.get().getGroupUsers(this.props.groupId).then((resp) => {
+ const results = [];
+ resp.chunk.forEach((u) => {
+ const userIdMatch = u.user_id.toLowerCase().includes(lowerCaseQuery);
+ const displayNameMatch = (u.displayname || '').toLowerCase().includes(lowerCaseQuery);
+ if (!(userIdMatch || displayNameMatch)) {
+ return;
+ }
+ results.push({
+ user_id: u.user_id,
+ avatar_url: u.avatar_url,
+ display_name: u.displayname,
+ });
+ });
+ this._processResults(results, query);
+ }).catch((err) => {
+ console.error('Error whilst searching group rooms: ', err);
+ this.setState({
+ searchError: err.errcode ? err.message : _t('Something went wrong!'),
+ });
+ }).done(() => {
+ this.setState({
+ busy: false,
+ });
+ });
+ },
+
+ _doNaiveGroupRoomSearch: function(query) {
+ const lowerCaseQuery = query.toLowerCase();
+ MatrixClientPeg.get().getGroupRooms(this.props.groupId).then((resp) => {
+ const results = [];
+ resp.chunk.forEach((r) => {
+ const nameMatch = (r.name || '').toLowerCase().includes(lowerCaseQuery);
+ const topicMatch = (r.topic || '').toLowerCase().includes(lowerCaseQuery);
+ const aliasMatch = (r.canonical_alias || '').toLowerCase().includes(lowerCaseQuery);
+ if (!(nameMatch || topicMatch || aliasMatch)) {
+ return;
+ }
+ results.push({
+ room_id: r.room_id,
+ avatar_url: r.avatar_url,
+ name: r.name || r.canonical_alias,
+ });
+ });
+ this._processResults(results, query);
+ }).catch((err) => {
+ console.error('Error whilst searching group users: ', err);
+ this.setState({
+ searchError: err.errcode ? err.message : _t('Something went wrong!'),
+ });
+ }).done(() => {
+ this.setState({
+ busy: false,
+ });
+ });
+ },
+
+ _doRoomSearch: function(query) {
+ const lowerCaseQuery = query.toLowerCase();
+ const rooms = MatrixClientPeg.get().getRooms();
+ const results = [];
+ rooms.forEach((room) => {
+ const nameEvent = room.currentState.getStateEvents('m.room.name', '');
+ const topicEvent = room.currentState.getStateEvents('m.room.topic', '');
+ const name = nameEvent ? nameEvent.getContent().name : '';
+ const canonicalAlias = room.getCanonicalAlias();
+ const topic = topicEvent ? topicEvent.getContent().topic : '';
+
+ const nameMatch = (name || '').toLowerCase().includes(lowerCaseQuery);
+ const aliasMatch = (canonicalAlias || '').toLowerCase().includes(lowerCaseQuery);
+ const topicMatch = (topic || '').toLowerCase().includes(lowerCaseQuery);
+ if (!(nameMatch || topicMatch || aliasMatch)) {
+ return;
+ }
+ const avatarEvent = room.currentState.getStateEvents('m.room.avatar', '');
+ const avatarUrl = avatarEvent ? avatarEvent.getContent().url : undefined;
+ results.push({
+ room_id: room.roomId,
+ avatar_url: avatarUrl,
+ name: name || canonicalAlias,
+ });
+ });
+ this._processResults(results, query);
+ this.setState({
+ busy: false,
+ });
+ },
+
_doUserDirectorySearch: function(query) {
this.setState({
busy: true,
@@ -245,17 +360,30 @@ module.exports = React.createClass({
_processResults: function(results, query) {
const queryList = [];
- results.forEach((user) => {
- if (user.user_id === MatrixClientPeg.get().credentials.userId) {
+ results.forEach((result) => {
+ if (result.room_id) {
+ queryList.push({
+ addressType: 'mx-room-id',
+ address: result.room_id,
+ displayName: result.name,
+ avatarMxc: result.avatar_url,
+ isKnown: true,
+ });
return;
}
+ if (!this.props.includeSelf &&
+ result.user_id === MatrixClientPeg.get().credentials.userId
+ ) {
+ return;
+ }
+
// Return objects, structure of which is defined
// by UserAddressType
queryList.push({
- addressType: 'mx',
- address: user.user_id,
- displayName: user.display_name,
- avatarMxc: user.avatar_url,
+ addressType: 'mx-user-id',
+ address: result.user_id,
+ displayName: result.display_name,
+ avatarMxc: result.avatar_url,
isKnown: true,
});
});
@@ -291,16 +419,23 @@ module.exports = React.createClass({
address: addressText,
isKnown: false,
};
- if (addrType == null) {
+ if (!this.props.validAddressTypes.includes(addrType)) {
this.setState({ error: true });
return null;
- } else if (addrType == 'mx') {
+ } else if (addrType == 'mx-user-id') {
const user = MatrixClientPeg.get().getUser(addrObj.address);
if (user) {
addrObj.displayName = user.displayName;
addrObj.avatarMxc = user.avatarUrl;
addrObj.isKnown = true;
}
+ } else if (addrType == 'mx-room-id') {
+ const room = MatrixClientPeg.get().getRoom(addrObj.address);
+ if (room) {
+ addrObj.displayName = room.name;
+ addrObj.avatarMxc = room.avatarUrl;
+ addrObj.isKnown = true;
+ }
}
const userList = this.state.userList.slice();
@@ -360,7 +495,7 @@ module.exports = React.createClass({
const AddressTile = sdk.getComponent("elements.AddressTile");
for (let i = 0; i < this.state.userList.length; i++) {
query.push(
-
,
+
,
);
}
}
@@ -382,23 +517,36 @@ module.exports = React.createClass({
let error;
let addressSelector;
if (this.state.error) {
+ let tryUsing = '';
+ const validTypeDescriptions = this.props.validAddressTypes.map((t) => {
+ return {
+ 'mx-user-id': _t("Matrix ID"),
+ 'mx-room-id': _t("Matrix Room ID"),
+ 'email': _t("email address"),
+ }[t];
+ });
+ tryUsing = _t("Try using one of the following valid address types: %(validTypesList)s.", {
+ validTypesList: validTypeDescriptions.join(", "),
+ });
error =
- {_t("You have entered an invalid contact. Try using their Matrix ID or email address.")}
+ { _t("You have entered an invalid address.") }
+
+ { tryUsing }
;
} else if (this.state.searchError) {
- error =
{this.state.searchError}
;
+ error =
{ this.state.searchError }
;
} else if (
this.state.query.length > 0 &&
this.state.queryList.length === 0 &&
!this.state.busy
) {
- error =
{_t("No results")}
;
+ error =
{ _t("No results") }
;
} else {
addressSelector = (
{this.addressSelector = ref;}}
- addressList={ this.state.queryList }
- onSelected={ this.onSelected }
- truncateAt={ TRUNCATE_QUERY_LIST }
+ addressList={this.state.queryList}
+ onSelected={this.onSelected}
+ truncateAt={TRUNCATE_QUERY_LIST}
/>
);
}
@@ -406,7 +554,7 @@ module.exports = React.createClass({
return (
- {this.props.title}
+ { this.props.title }
@@ -422,7 +570,7 @@ module.exports = React.createClass({
- {this.props.button}
+ { this.props.button }
diff --git a/src/components/views/dialogs/ConfirmRedactDialog.js b/src/components/views/dialogs/ConfirmRedactDialog.js
index 7922b7b289..7b5a9f776b 100644
--- a/src/components/views/dialogs/ConfirmRedactDialog.js
+++ b/src/components/views/dialogs/ConfirmRedactDialog.js
@@ -52,20 +52,20 @@ export default React.createClass({
return (
- {_t("Are you sure you wish to remove (delete) this event? " +
- "Note that if you delete a room name or topic change, it could undo the change.")}
+ { _t("Are you sure you wish to remove (delete) this event? " +
+ "Note that if you delete a room name or topic change, it could undo the change.") }
- {_t("Remove")}
+ { _t("Remove") }
- {_t("Cancel")}
+ { _t("Cancel") }
diff --git a/src/components/views/dialogs/ConfirmUserActionDialog.js b/src/components/views/dialogs/ConfirmUserActionDialog.js
index b10df3ccef..9091d8975e 100644
--- a/src/components/views/dialogs/ConfirmUserActionDialog.js
+++ b/src/components/views/dialogs/ConfirmUserActionDialog.js
@@ -18,6 +18,7 @@ import React from 'react';
import sdk from '../../../index';
import { _t } from '../../../languageHandler';
import classnames from 'classnames';
+import { GroupMemberType } from '../../../groups';
/*
* A dialog for confirming an operation on another user.
@@ -30,7 +31,10 @@ import classnames from 'classnames';
export default React.createClass({
displayName: 'ConfirmUserActionDialog',
propTypes: {
- member: React.PropTypes.object.isRequired, // matrix-js-sdk member object
+ // matrix-js-sdk (room) member object. Supply either this or 'groupMember'
+ member: React.PropTypes.object,
+ // group member object. Supply either this or 'member'
+ groupMember: GroupMemberType,
action: React.PropTypes.string.isRequired, // eg. 'Ban'
// Whether to display a text field for a reason
@@ -69,6 +73,7 @@ export default React.createClass({
render: function() {
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
const MemberAvatar = sdk.getComponent("views.avatars.MemberAvatar");
+ const BaseAvatar = sdk.getComponent("views.avatars.BaseAvatar");
const title = _t("%(actionVerb)s this person?", { actionVerb: this.props.action});
const confirmButtonClass = classnames({
@@ -83,7 +88,7 @@ export default React.createClass({
@@ -91,24 +96,38 @@ export default React.createClass({
);
}
+ let avatar;
+ let name;
+ let userId;
+ if (this.props.member) {
+ avatar = ;
+ name = this.props.member.name;
+ userId = this.props.member.userId;
+ } else {
+ // we don't get this info from the API yet
+ avatar = ;
+ name = this.props.groupMember.userId;
+ userId = this.props.groupMember.userId;
+ }
+
return (
-
+ { avatar }
-
{this.props.member.name}
-
{this.props.member.userId}
+
{ name }
+
{ userId }
- {reasonBox}
+ { reasonBox }
- {this.props.action}
+ { this.props.action }
diff --git a/src/components/views/dialogs/CreateGroupDialog.js b/src/components/views/dialogs/CreateGroupDialog.js
index 23194f20a5..07ebb13aad 100644
--- a/src/components/views/dialogs/CreateGroupDialog.js
+++ b/src/components/views/dialogs/CreateGroupDialog.js
@@ -142,8 +142,8 @@ export default React.createClass({
// rather than displaying what the server gives us, but synapse doesn't give
// any yet.
createErrorNode =
-
{_t('Room creation failed')}
-
{this.state.createError.message}
+
{ _t('Room creation failed') }
+
{ this.state.createError.message }
;
}
@@ -156,7 +156,7 @@ export default React.createClass({
- {_t('Group Name')}
+ { _t('Group Name') }
- {_t('Group ID')}
+ { _t('Group ID') }
- {this.state.groupIdError}
+ { this.state.groupIdError }
- {createErrorNode}
+ { createErrorNode }
diff --git a/src/components/views/dialogs/DeviceVerifyDialog.js b/src/components/views/dialogs/DeviceVerifyDialog.js
index 613fe540a4..ba31d2a8c2 100644
--- a/src/components/views/dialogs/DeviceVerifyDialog.js
+++ b/src/components/views/dialogs/DeviceVerifyDialog.js
@@ -28,25 +28,25 @@ export default function DeviceVerifyDialog(props) {
const body = (
- {_t("To verify that this device can be trusted, please contact its " +
+ { _t("To verify that this device can be trusted, please contact its " +
"owner using some other means (e.g. in person or a phone call) " +
"and ask them whether the key they see in their User Settings " +
- "for this device matches the key below:")}
+ "for this device matches the key below:") }
- {_t("Device name")}: { props.device.getDisplayName() }
- {_t("Device ID")}: { props.device.deviceId}
- {_t("Device key")}: { key }
+ { _t("Device name") }: { props.device.getDisplayName() }
+ { _t("Device ID") }: { props.device.deviceId }
+ { _t("Device key") }: { key }
- {_t("If it matches, press the verify button below. " +
+ { _t("If it matches, press the verify button below. " +
"If it doesn't, then someone else is intercepting this device " +
- "and you probably want to press the blacklist button instead.")}
+ "and you probably want to press the blacklist button instead.") }
- {_t("In future this verification process will be more sophisticated.")}
+ { _t("In future this verification process will be more sophisticated.") }
);
diff --git a/src/components/views/dialogs/ErrorDialog.js b/src/components/views/dialogs/ErrorDialog.js
index beca107252..97ed47e10f 100644
--- a/src/components/views/dialogs/ErrorDialog.js
+++ b/src/components/views/dialogs/ErrorDialog.js
@@ -63,11 +63,11 @@ export default React.createClass({
- {this.props.description || _t('An error has occurred.')}
+ { this.props.description || _t('An error has occurred.') }
- {this.props.button || _t('OK')}
+ { this.props.button || _t('OK') }
diff --git a/src/components/views/dialogs/KeyShareDialog.js b/src/components/views/dialogs/KeyShareDialog.js
index aed8e6a5af..b0dc0a304e 100644
--- a/src/components/views/dialogs/KeyShareDialog.js
+++ b/src/components/views/dialogs/KeyShareDialog.js
@@ -18,7 +18,7 @@ import Modal from '../../../Modal';
import React from 'react';
import sdk from '../../../index';
-import { _t } from '../../../languageHandler';
+import { _t, _td } from '../../../languageHandler';
/**
* Dialog which asks the user whether they want to share their keys with
@@ -116,27 +116,27 @@ export default React.createClass({
let text;
if (this.state.wasNewDevice) {
- text = "You added a new device '%(displayName)s', which is"
- + " requesting encryption keys.";
+ text = _td("You added a new device '%(displayName)s', which is"
+ + " requesting encryption keys.");
} else {
- text = "Your unverified device '%(displayName)s' is requesting"
- + " encryption keys.";
+ text = _td("Your unverified device '%(displayName)s' is requesting"
+ + " encryption keys.");
}
text = _t(text, {displayName: displayName});
return (
-
{text}
+
{ text }
- {_t('Start verification')}
+ { _t('Start verification') }
- {_t('Share without verifying')}
+ { _t('Share without verifying') }
- {_t('Ignore request')}
+ { _t('Ignore request') }
@@ -154,7 +154,7 @@ export default React.createClass({
} else {
content = (
-
{_t('Loading device info...')}
+
{ _t('Loading device info...') }
);
@@ -165,7 +165,7 @@ export default React.createClass({
onFinished={this.props.onFinished}
title={_t('Encryption key request')}
>
- {content}
+ { content }
);
},
diff --git a/src/components/views/dialogs/QuestionDialog.js b/src/components/views/dialogs/QuestionDialog.js
index ec9b95d7f7..339b284e2f 100644
--- a/src/components/views/dialogs/QuestionDialog.js
+++ b/src/components/views/dialogs/QuestionDialog.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2017 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.
@@ -17,6 +18,7 @@ limitations under the License.
import React from 'react';
import sdk from '../../../index';
import { _t } from '../../../languageHandler';
+import classnames from 'classnames';
export default React.createClass({
displayName: 'QuestionDialog',
@@ -25,6 +27,7 @@ export default React.createClass({
description: React.PropTypes.node,
extraButtons: React.PropTypes.node,
button: React.PropTypes.string,
+ danger: React.PropTypes.bool,
focus: React.PropTypes.bool,
onFinished: React.PropTypes.func.isRequired,
},
@@ -36,6 +39,7 @@ export default React.createClass({
extraButtons: null,
focus: true,
hasCancelButton: true,
+ danger: false,
};
},
@@ -51,23 +55,27 @@ export default React.createClass({
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
const cancelButton = this.props.hasCancelButton ? (
- {_t("Cancel")}
+ { _t("Cancel") }
) : null;
+ const buttonClasses = classnames({
+ mx_Dialog_primary: true,
+ danger: this.props.danger,
+ });
return (
- {this.props.description}
+ { this.props.description }
-
- {this.props.button || _t('OK')}
+
+ { this.props.button || _t('OK') }
- {this.props.extraButtons}
- {cancelButton}
+ { this.props.extraButtons }
+ { cancelButton }
);
diff --git a/src/components/views/dialogs/SessionRestoreErrorDialog.js b/src/components/views/dialogs/SessionRestoreErrorDialog.js
index 010072e8c6..f404bdd975 100644
--- a/src/components/views/dialogs/SessionRestoreErrorDialog.js
+++ b/src/components/views/dialogs/SessionRestoreErrorDialog.js
@@ -45,10 +45,10 @@ export default React.createClass({
if (SdkConfig.get().bug_report_endpoint_url) {
bugreport = (
- {_tJsx(
+ { _tJsx(
"Otherwise, click here to send a bug report.",
- /(.*?)<\/a>/, (sub) => {sub} ,
- )}
+ /(.*?)<\/a>/, (sub) => { sub } ,
+ ) }
);
}
@@ -57,19 +57,19 @@ export default React.createClass({
-
{_t("We encountered an error trying to restore your previous session. If " +
+
{ _t("We encountered an error trying to restore your previous session. If " +
"you continue, you will need to log in again, and encrypted chat " +
- "history will be unreadable.")}
+ "history will be unreadable.") }
-
{_t("If you have previously used a more recent version of Riot, your session " +
+
{ _t("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.")}
+ "to the more recent version.") }
- {bugreport}
+ { bugreport }
- {_t("Continue anyway")}
+ { _t("Continue anyway") }
diff --git a/src/components/views/dialogs/SetEmailDialog.js b/src/components/views/dialogs/SetEmailDialog.js
index ed5cef2f67..2dd996953d 100644
--- a/src/components/views/dialogs/SetEmailDialog.js
+++ b/src/components/views/dialogs/SetEmailDialog.js
@@ -130,10 +130,10 @@ export default React.createClass({
const emailInput = this.state.emailBusy ? : ;
+ blurToCancel={false}
+ onValueChanged={this.onEmailAddressChanged} />;
return (
;
+ usernameBusyIndicator = ;
} else {
const usernameAvailable = this.state.username &&
this.state.usernameCheckSupport && !this.state.usernameError;
@@ -275,17 +275,17 @@ export default React.createClass({
/(.*?)<\/a>/,
],
[
- (sub) => {this.props.homeserverUrl} ,
- (sub) => {sub} ,
+ (sub) => { this.props.homeserverUrl } ,
+ (sub) => { sub } ,
],
- )}
+ ) }
{ _tJsx(
'If you already have a Matrix account you can log in instead.',
/(.*?)<\/a>/,
- [(sub) => {sub} ],
- )}
+ [(sub) => { sub } ],
+ ) }
{ auth }
{ authErrorIndicator }
diff --git a/src/components/views/dialogs/TextInputDialog.js b/src/components/views/dialogs/TextInputDialog.js
index 673be42030..c924da7745 100644
--- a/src/components/views/dialogs/TextInputDialog.js
+++ b/src/components/views/dialogs/TextInputDialog.js
@@ -65,10 +65,10 @@ export default React.createClass({
>
@@ -76,7 +76,7 @@ export default React.createClass({
{ _t("Cancel") }
- {this.props.button}
+ { this.props.button }
diff --git a/src/components/views/elements/ActionButton.js b/src/components/views/elements/ActionButton.js
index 08fb6faa1d..b1fa71829b 100644
--- a/src/components/views/elements/ActionButton.js
+++ b/src/components/views/elements/ActionButton.js
@@ -19,6 +19,7 @@ import PropTypes from 'prop-types';
import AccessibleButton from './AccessibleButton';
import dis from '../../../dispatcher';
import sdk from '../../../index';
+import Analytics from '../../../Analytics';
export default React.createClass({
displayName: 'RoleButton',
@@ -47,6 +48,7 @@ export default React.createClass({
_onClick: function(ev) {
ev.stopPropagation();
+ Analytics.trackEvent('Action Button', 'click', this.props.action);
dis.dispatch({action: this.props.action});
},
diff --git a/src/components/views/elements/AddressTile.js b/src/components/views/elements/AddressTile.js
index bee02489fe..612f2956eb 100644
--- a/src/components/views/elements/AddressTile.js
+++ b/src/components/views/elements/AddressTile.js
@@ -45,11 +45,12 @@ export default React.createClass({
const address = this.props.address;
const name = address.displayName || address.address;
- let imgUrls = [];
+ const imgUrls = [];
+ const isMatrixAddress = ['mx-user-id', 'mx-room-id'].includes(address.addressType);
- if (address.addressType === "mx" && address.avatarMxc) {
+ if (isMatrixAddress && address.avatarMxc) {
imgUrls.push(MatrixClientPeg.get().mxcUrlToHttp(
- address.avatarMxc, 25, 25, 'crop'
+ address.avatarMxc, 25, 25, 'crop',
));
} else if (address.addressType === 'email') {
imgUrls.push('img/icon-email-user.svg');
@@ -77,7 +78,7 @@ export default React.createClass({
let info;
let error = false;
- if (address.addressType === "mx" && address.isKnown) {
+ if (isMatrixAddress && address.isKnown) {
const idClasses = classNames({
"mx_AddressTile_id": true,
"mx_AddressTile_justified": this.props.justified,
@@ -89,7 +90,7 @@ export default React.createClass({
{ address.address }
);
- } else if (address.addressType === "mx") {
+ } else if (isMatrixAddress) {
const unknownMxClasses = classNames({
"mx_AddressTile_unknownMx": true,
"mx_AddressTile_justified": this.props.justified,
diff --git a/src/components/views/elements/AppPermission.js b/src/components/views/elements/AppPermission.js
index 083a7cd9c7..f1117fd5aa 100644
--- a/src/components/views/elements/AppPermission.js
+++ b/src/components/views/elements/AppPermission.js
@@ -47,13 +47,19 @@ export default class AppPermission extends React.Component {
}
render() {
+ let e2eWarningText;
+ if (this.props.isRoomEncrypted) {
+ e2eWarningText =
+
{ _t('NOTE: Apps are not end-to-end encrypted') } ;
+ }
return (
-
+
- Do you want to load widget from URL: {this.state.curlBase}
+ { _t('Do you want to load widget from URL:') } { this.state.curlBase }
+ { e2eWarningText }
-
-
- );
- } else if (this.state.hasPermissionToLoad == true) {
- if (this.isMixedContent()) {
+ if (this.props.show) {
+ if (this.state.loading) {
+ appTileBody = (
+
+
+
+ );
+ } else if (this.state.hasPermissionToLoad == true) {
+ if (this.isMixedContent()) {
+ appTileBody = (
+
+ );
+ } else {
+ appTileBody = (
+
+
+
+ );
+ }
+ } else {
+ const isRoomEncrypted = MatrixClientPeg.get().isRoomEncrypted(this.props.room.roomId);
appTileBody = (
);
- } else {
- appTileBody = (
-
-
-
- );
}
- } else {
- appTileBody = (
-
- );
}
// editing is done in scalar
@@ -253,21 +311,20 @@ export default React.createClass({
return (
-
- {this.formatAppTileName()}
+
+ { this.formatAppTileName() }
- β
- {/* Edit widget */}
- {showEditButton && }
+ /> }
- {/* Delete widget */}
+ { /* Delete widget */ }
- {appTileBody}
+ { appTileBody }
);
},
diff --git a/src/components/views/elements/AppWarning.js b/src/components/views/elements/AppWarning.js
index 944f1422e6..f4015ae5b7 100644
--- a/src/components/views/elements/AppWarning.js
+++ b/src/components/views/elements/AppWarning.js
@@ -6,10 +6,10 @@ const AppWarning = (props) => {
return (
-
+
- {props.errorMsg}
+ { props.errorMsg }
);
diff --git a/src/components/views/elements/EditableItemList.js b/src/components/views/elements/EditableItemList.js
new file mode 100644
index 0000000000..35e207daef
--- /dev/null
+++ b/src/components/views/elements/EditableItemList.js
@@ -0,0 +1,149 @@
+/*
+Copyright 2017 New Vector Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import sdk from '../../../index';
+import {_t} from '../../../languageHandler.js';
+
+const EditableItem = React.createClass({
+ displayName: 'EditableItem',
+
+ propTypes: {
+ initialValue: PropTypes.string,
+ index: PropTypes.number,
+ placeholder: PropTypes.string,
+
+ onChange: PropTypes.func,
+ onRemove: PropTypes.func,
+ onAdd: PropTypes.func,
+
+ addOnChange: PropTypes.bool,
+ },
+
+ onChange: function(value) {
+ this.setState({ value });
+ if (this.props.onChange) this.props.onChange(value, this.props.index);
+ if (this.props.addOnChange && this.props.onAdd) this.props.onAdd(value);
+ },
+
+ onRemove: function() {
+ if (this.props.onRemove) this.props.onRemove(this.props.index);
+ },
+
+ onAdd: function() {
+ if (this.props.onAdd) this.props.onAdd(this.state.value);
+ },
+
+ render: function() {
+ const EditableText = sdk.getComponent('elements.EditableText');
+ return
+
+ { this.props.onAdd ?
+
+
+
+ :
+
+
+
+ }
+
;
+ },
+});
+
+module.exports = React.createClass({
+ displayName: 'EditableItemList',
+
+ propTypes: {
+ items: PropTypes.arrayOf(PropTypes.string).isRequired,
+ onNewItemChanged: PropTypes.func,
+ onItemAdded: PropTypes.func,
+ onItemEdited: PropTypes.func,
+ onItemRemoved: PropTypes. func,
+ },
+
+ getDefaultProps: function() {
+ return {
+ onItemAdded: () => {},
+ onItemEdited: () => {},
+ onItemRemoved: () => {},
+ onNewItemChanged: () => {},
+ };
+ },
+
+ onItemAdded: function(value) {
+ this.props.onItemAdded(value);
+ },
+
+ onItemEdited: function(value, index) {
+ if (value.length === 0) {
+ this.onItemRemoved(index);
+ } else {
+ this.props.onItemEdited(value, index);
+ }
+ },
+
+ onItemRemoved: function(index) {
+ this.props.onItemRemoved(index);
+ },
+
+ onNewItemChanged: function(value) {
+ this.props.onNewItemChanged(value);
+ },
+
+ render: function() {
+ const editableItems = this.props.items.map((item, index) => {
+ return
;
+ });
+
+ const label = this.props.items.length > 0 ?
+ this.props.itemsLabel : this.props.noItemsLabel;
+
+ return (
+
+ { label }
+
+ { editableItems }
+
+
);
+ },
+});
diff --git a/src/components/views/elements/EditableText.js b/src/components/views/elements/EditableText.js
index 3ce8c90447..b6a0ec1d5c 100644
--- a/src/components/views/elements/EditableText.js
+++ b/src/components/views/elements/EditableText.js
@@ -65,7 +65,9 @@ module.exports = React.createClass({
},
componentWillReceiveProps: function(nextProps) {
- if (nextProps.initialValue !== this.props.initialValue) {
+ if (nextProps.initialValue !== this.props.initialValue ||
+ nextProps.initialValue !== this.value
+ ) {
this.value = nextProps.initialValue;
if (this.refs.editable_div) {
this.showPlaceholder(!this.value);
diff --git a/src/components/views/elements/EmojiText.js b/src/components/views/elements/EmojiText.js
index cb6cd2ef5e..faab0241ae 100644
--- a/src/components/views/elements/EmojiText.js
+++ b/src/components/views/elements/EmojiText.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 Aviral Dasgupta
+ Copyright 2017 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.
@@ -15,12 +16,19 @@
*/
import React from 'react';
-import {emojifyText} from '../../../HtmlUtils';
+import {emojifyText, containsEmoji} from '../../../HtmlUtils';
export default function EmojiText(props) {
const {element, children, ...restProps} = props;
- restProps.dangerouslySetInnerHTML = emojifyText(children);
- return React.createElement(element, restProps);
+
+ // fast path: simple regex to detect strings that don't contain
+ // emoji and just return them
+ if (containsEmoji(children)) {
+ restProps.dangerouslySetInnerHTML = emojifyText(children);
+ return React.createElement(element, restProps);
+ } else {
+ return React.createElement(element, restProps, children);
+ }
}
EmojiText.propTypes = {
diff --git a/src/components/views/elements/Flair.js b/src/components/views/elements/Flair.js
new file mode 100644
index 0000000000..84c0c2a187
--- /dev/null
+++ b/src/components/views/elements/Flair.js
@@ -0,0 +1,290 @@
+/*
+ Copyright 2017 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.
+ */
+
+'use strict';
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import {MatrixClient} from 'matrix-js-sdk';
+import UserSettingsStore from '../../../UserSettingsStore';
+import dis from '../../../dispatcher';
+import Promise from 'bluebird';
+
+const BULK_REQUEST_DEBOUNCE_MS = 200;
+
+// Does the server support groups? Assume yes until we receive M_UNRECOGNIZED.
+// If true, flair can function and we should keep sending requests for groups and avatars.
+let groupSupport = true;
+
+const USER_GROUPS_CACHE_BUST_MS = 1800000; // 30 mins
+const GROUP_PROFILES_CACHE_BUST_MS = 1800000; // 30 mins
+
+// TODO: Cache-busting based on time. (The server won't inform us of membership changes.)
+// This applies to userGroups and groupProfiles. We can provide a slightly better UX by
+// cache-busting when the current user joins/leaves a group.
+const userGroups = {
+ // $userId: ['+group1:domain', '+group2:domain', ...]
+};
+
+const groupProfiles = {
+// $groupId: {
+// avatar_url: 'mxc://...'
+// }
+};
+
+// Represents all unsettled promises to retrieve the groups for each userId. When a promise
+// is settled, it is deleted from this object.
+const usersPending = {
+// $userId: {
+// prom: Promise
+// resolve: () => {}
+// reject: () => {}
+// }
+};
+
+let debounceTimeoutID;
+function getPublicisedGroupsCached(matrixClient, userId) {
+ if (userGroups[userId]) {
+ return Promise.resolve(userGroups[userId]);
+ }
+
+ // Bulk lookup ongoing, return promise to resolve/reject
+ if (usersPending[userId]) {
+ return usersPending[userId].prom;
+ }
+
+ usersPending[userId] = {};
+ usersPending[userId].prom = new Promise((resolve, reject) => {
+ usersPending[userId].resolve = resolve;
+ usersPending[userId].reject = reject;
+ }).then((groups) => {
+ userGroups[userId] = groups;
+ setTimeout(() => {
+ delete userGroups[userId];
+ }, USER_GROUPS_CACHE_BUST_MS);
+ return userGroups[userId];
+ }).catch((err) => {
+ throw err;
+ }).finally(() => {
+ delete usersPending[userId];
+ });
+
+ // This debounce will allow consecutive requests for the public groups of users that
+ // are sent in intervals of < BULK_REQUEST_DEBOUNCE_MS to be batched and only requested
+ // when no more requests are received within the next BULK_REQUEST_DEBOUNCE_MS. The naive
+ // implementation would do a request that only requested the groups for `userId`, leading
+ // to a worst and best case of 1 user per request. This implementation's worst is still
+ // 1 user per request but only if the requests are > BULK_REQUEST_DEBOUNCE_MS apart and the
+ // best case is N users per request.
+ //
+ // This is to reduce the number of requests made whilst trading off latency when viewing
+ // a Flair component.
+ if (debounceTimeoutID) clearTimeout(debounceTimeoutID);
+ debounceTimeoutID = setTimeout(() => {
+ batchedGetPublicGroups(matrixClient);
+ }, BULK_REQUEST_DEBOUNCE_MS);
+
+ return usersPending[userId].prom;
+}
+
+async function batchedGetPublicGroups(matrixClient) {
+ // Take the userIds from the keys of usersPending
+ const usersInFlight = Object.keys(usersPending);
+ let resp = {
+ users: [],
+ };
+ try {
+ resp = await matrixClient.getPublicisedGroups(usersInFlight);
+ } catch (err) {
+ // Propagate the same error to all usersInFlight
+ usersInFlight.forEach((userId) => {
+ usersPending[userId].reject(err);
+ });
+ return;
+ }
+ const updatedUserGroups = resp.users;
+ usersInFlight.forEach((userId) => {
+ usersPending[userId].resolve(updatedUserGroups[userId] || []);
+ });
+}
+
+async function getGroupProfileCached(matrixClient, groupId) {
+ if (groupProfiles[groupId]) {
+ return groupProfiles[groupId];
+ }
+
+ const profile = await matrixClient.getGroupProfile(groupId);
+ groupProfiles[groupId] = {
+ groupId,
+ avatarUrl: profile.avatar_url,
+ };
+ setTimeout(() => {
+ delete groupProfiles[groupId];
+ }, GROUP_PROFILES_CACHE_BUST_MS);
+
+ return groupProfiles[groupId];
+}
+
+class FlairAvatar extends React.Component {
+ constructor() {
+ super();
+ this.onClick = this.onClick.bind(this);
+ }
+
+ onClick(ev) {
+ ev.preventDefault();
+ // Don't trigger onClick of parent element
+ ev.stopPropagation();
+ dis.dispatch({
+ action: 'view_group',
+ group_id: this.props.groupProfile.groupId,
+ });
+ }
+
+ render() {
+ const httpUrl = this.context.matrixClient.mxcUrlToHttp(
+ this.props.groupProfile.avatarUrl, 14, 14, 'scale', false);
+ return
;
+ }
+}
+
+FlairAvatar.propTypes = {
+ groupProfile: PropTypes.shape({
+ groupId: PropTypes.string.isRequired,
+ avatarUrl: PropTypes.string.isRequired,
+ }),
+};
+
+FlairAvatar.contextTypes = {
+ matrixClient: React.PropTypes.instanceOf(MatrixClient).isRequired,
+};
+
+export default class Flair extends React.Component {
+ constructor() {
+ super();
+ this.state = {
+ profiles: [],
+ };
+ this.onRoomStateEvents = this.onRoomStateEvents.bind(this);
+ }
+
+ componentWillUnmount() {
+ this._unmounted = true;
+ this.context.matrixClient.removeListener('RoomState.events', this.onRoomStateEvents);
+ }
+
+ componentWillMount() {
+ this._unmounted = false;
+ if (UserSettingsStore.isFeatureEnabled('feature_groups') && groupSupport) {
+ this._generateAvatars();
+ }
+ this.context.matrixClient.on('RoomState.events', this.onRoomStateEvents);
+ }
+
+ onRoomStateEvents(event) {
+ if (event.getType() === 'm.room.related_groups' && groupSupport) {
+ this._generateAvatars();
+ }
+ }
+
+ async _getGroupProfiles(groups) {
+ const profiles = [];
+ for (const groupId of groups) {
+ let groupProfile = null;
+ try {
+ groupProfile = await getGroupProfileCached(this.context.matrixClient, groupId);
+ } catch (err) {
+ console.error('Could not get profile for group', groupId, err);
+ }
+ profiles.push(groupProfile);
+ }
+ return profiles.filter((p) => p !== null);
+ }
+
+ async _generateAvatars() {
+ let groups;
+ try {
+ groups = await getPublicisedGroupsCached(this.context.matrixClient, this.props.userId);
+ } catch (err) {
+ // Indicate whether the homeserver supports groups
+ if (err.errcode === 'M_UNRECOGNIZED') {
+ console.warn('Cannot display flair, server does not support groups');
+ groupSupport = false;
+ // Return silently to avoid spamming for non-supporting servers
+ return;
+ }
+ console.error('Could not get groups for user', this.props.userId, err);
+ }
+ if (this.props.roomId && this.props.showRelated) {
+ const relatedGroupsEvent = this.context.matrixClient
+ .getRoom(this.props.roomId)
+ .currentState
+ .getStateEvents('m.room.related_groups', '');
+ const relatedGroups = relatedGroupsEvent ?
+ relatedGroupsEvent.getContent().groups || [] : [];
+ if (relatedGroups && relatedGroups.length > 0) {
+ groups = groups.filter((groupId) => {
+ return relatedGroups.includes(groupId);
+ });
+ } else {
+ groups = [];
+ }
+ }
+ if (!groups || groups.length === 0) {
+ return;
+ }
+ const profiles = await this._getGroupProfiles(groups);
+ if (!this.unmounted) {
+ this.setState({profiles});
+ }
+ }
+
+ render() {
+ if (this.state.profiles.length === 0) {
+ return
;
+ }
+ const avatars = this.state.profiles.map((profile, index) => {
+ return
;
+ });
+ return (
+
+ { avatars }
+
+ );
+ }
+}
+
+Flair.propTypes = {
+ userId: PropTypes.string,
+
+ // Whether to show only the flair associated with related groups of the given room,
+ // or all flair associated with a user.
+ showRelated: PropTypes.bool,
+ // The room that this flair will be displayed in. Optional. Only applies when showRelated = true.
+ roomId: PropTypes.string,
+};
+
+// TODO: We've decided that all components should follow this pattern, which means removing withMatrixClient and using
+// this.context.matrixClient everywhere instead of this.props.matrixClient.
+// See https://github.com/vector-im/riot-web/issues/4951.
+Flair.contextTypes = {
+ matrixClient: React.PropTypes.instanceOf(MatrixClient).isRequired,
+};
diff --git a/src/components/views/elements/GroupsButton.js b/src/components/views/elements/GroupsButton.js
new file mode 100644
index 0000000000..f973fda74a
--- /dev/null
+++ b/src/components/views/elements/GroupsButton.js
@@ -0,0 +1,38 @@
+/*
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import sdk from '../../../index';
+import PropTypes from 'prop-types';
+import { _t } from '../../../languageHandler';
+
+const GroupsButton = function(props) {
+ const ActionButton = sdk.getComponent('elements.ActionButton');
+ return (
+
+ );
+};
+
+GroupsButton.propTypes = {
+ size: PropTypes.string,
+ tooltip: PropTypes.bool,
+};
+
+export default GroupsButton;
diff --git a/src/components/views/elements/ManageIntegsButton.js b/src/components/views/elements/ManageIntegsButton.js
new file mode 100644
index 0000000000..17dbbeee62
--- /dev/null
+++ b/src/components/views/elements/ManageIntegsButton.js
@@ -0,0 +1,107 @@
+/*
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import sdk from '../../../index';
+import classNames from 'classnames';
+import SdkConfig from '../../../SdkConfig';
+import ScalarAuthClient from '../../../ScalarAuthClient';
+import ScalarMessaging from '../../../ScalarMessaging';
+import Modal from "../../../Modal";
+import { _t } from '../../../languageHandler';
+import AccessibleButton from './AccessibleButton';
+import TintableSvg from './TintableSvg';
+
+export default class ManageIntegsButton extends React.Component {
+ constructor(props) {
+ super(props);
+
+ this.state = {
+ scalarError: null,
+ };
+
+ this.onManageIntegrations = this.onManageIntegrations.bind(this);
+ }
+
+ componentWillMount() {
+ ScalarMessaging.startListening();
+ this.scalarClient = null;
+
+ if (SdkConfig.get().integrations_ui_url && SdkConfig.get().integrations_rest_url) {
+ this.scalarClient = new ScalarAuthClient();
+ this.scalarClient.connect().done(() => {
+ this.forceUpdate();
+ }, (err) => {
+ this.setState({ scalarError: err});
+ console.error('Error whilst initialising scalarClient for ManageIntegsButton', err);
+ });
+ }
+ }
+
+ componentWillUnmount() {
+ ScalarMessaging.stopListening();
+ }
+
+ onManageIntegrations(ev) {
+ ev.preventDefault();
+ if (this.state.scalarError && !this.scalarClient.hasCredentials()) {
+ return;
+ }
+ const IntegrationsManager = sdk.getComponent("views.settings.IntegrationsManager");
+ Modal.createDialog(IntegrationsManager, {
+ src: (this.scalarClient !== null && this.scalarClient.hasCredentials()) ?
+ this.scalarClient.getScalarInterfaceUrlForRoom(this.props.roomId) :
+ null,
+ }, "mx_IntegrationsManager");
+ }
+
+ render() {
+ let integrationsButton =
;
+ let integrationsWarningTriangle =
;
+ let integrationsErrorPopup =
;
+ if (this.scalarClient !== null) {
+ const integrationsButtonClasses = classNames({
+ mx_RoomHeader_button: true,
+ mx_RoomSettings_integrationsButton_error: !!this.state.scalarError,
+ });
+
+ if (this.state.scalarError && !this.scalarClient.hasCredentials()) {
+ integrationsWarningTriangle =
;
+ // Popup shown when hovering over integrationsButton_error (via CSS)
+ integrationsErrorPopup = (
+
+ { _t('Could not connect to the integration server') }
+
+ );
+ }
+
+ integrationsButton = (
+
+
+ { integrationsWarningTriangle }
+ { integrationsErrorPopup }
+
+ );
+ }
+
+ return integrationsButton;
+ }
+}
+
+ManageIntegsButton.propTypes = {
+ roomId: PropTypes.string.isRequired,
+};
diff --git a/src/components/views/elements/MemberEventListSummary.js b/src/components/views/elements/MemberEventListSummary.js
index 842b44b793..689599da0b 100644
--- a/src/components/views/elements/MemberEventListSummary.js
+++ b/src/components/views/elements/MemberEventListSummary.js
@@ -34,11 +34,13 @@ module.exports = React.createClass({
threshold: React.PropTypes.number,
// Called when the MELS expansion is toggled
onToggle: React.PropTypes.func,
+ // Whether or not to begin with state.expanded=true
+ startExpanded: React.PropTypes.bool,
},
getInitialState: function() {
return {
- expanded: false,
+ expanded: Boolean(this.props.startExpanded),
};
},
@@ -376,7 +378,7 @@ module.exports = React.createClass({
return items[0];
} else if (remaining) {
items = items.slice(0, itemLimit);
- return (remaining > 1)
+ return (remaining > 1)
? _t("%(items)s and %(remaining)s others", { items: items.join(', '), remaining: remaining } )
: _t("%(items)s and one other", { items: items.join(', ') });
} else {
diff --git a/src/components/views/elements/MessageSpinner.js b/src/components/views/elements/MessageSpinner.js
index bc0a326338..500c919d45 100644
--- a/src/components/views/elements/MessageSpinner.js
+++ b/src/components/views/elements/MessageSpinner.js
@@ -26,8 +26,8 @@ module.exports = React.createClass({
const msg = this.props.msg || "Loading...";
return (
-
{msg}
-
+
{ msg }
+
);
},
diff --git a/src/components/views/elements/Pill.js b/src/components/views/elements/Pill.js
index 7dee5f6a40..51ae85ba5a 100644
--- a/src/components/views/elements/Pill.js
+++ b/src/components/views/elements/Pill.js
@@ -167,11 +167,11 @@ const Pill = React.createClass({
userId = member.userId;
linkText = member.rawDisplayName.replace(' (IRC)', ''); // FIXME when groups are done
if (this.props.shouldShowPillAvatar) {
- avatar =
;
+ avatar = ;
}
pillClass = 'mx_UserPill';
href = null;
- onClick = this.onUserPillClicked.bind(this);
+ onClick = this.onUserPillClicked;
}
}
break;
@@ -180,7 +180,7 @@ const Pill = React.createClass({
if (room) {
linkText = (room ? getDisplayAliasForRoom(room) : null) || resource;
if (this.props.shouldShowPillAvatar) {
- avatar = ;
+ avatar = ;
}
pillClass = 'mx_RoomPill';
}
@@ -195,12 +195,12 @@ const Pill = React.createClass({
if (this.state.pillType) {
return this.props.inMessage ?
- {avatar}
- {linkText}
+ { avatar }
+ { linkText }
:
- {avatar}
- {linkText}
+ { avatar }
+ { linkText }
;
} else {
// Deliberately render nothing if the URL isn't recognised
diff --git a/src/components/views/elements/TruncatedList.js b/src/components/views/elements/TruncatedList.js
index d6a8e1fb7e..1a674eef65 100644
--- a/src/components/views/elements/TruncatedList.js
+++ b/src/components/views/elements/TruncatedList.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2017 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.
@@ -13,7 +14,9 @@ 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.
*/
-var React = require('react');
+
+import React from 'react';
+import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler';
module.exports = React.createClass({
@@ -21,12 +24,21 @@ module.exports = React.createClass({
propTypes: {
// The number of elements to show before truncating. If negative, no truncation is done.
- truncateAt: React.PropTypes.number,
+ truncateAt: PropTypes.number,
// The className to apply to the wrapping div
- className: React.PropTypes.string,
+ className: PropTypes.string,
+ // A function that returns the children to be rendered into the element.
+ // function getChildren(start: number, end: number): Array
+ // The start element is included, the end is not (as in `slice`).
+ // If omitted, the React child elements will be used. This parameter can be used
+ // to avoid creating unnecessary React elements.
+ getChildren: PropTypes.func,
+ // A function that should return the total number of child element available.
+ // Required if getChildren is supplied.
+ getChildCount: PropTypes.func,
// A function which will be invoked when an overflow element is required.
// This will be inserted after the children.
- createOverflowElement: React.PropTypes.func
+ createOverflowElement: PropTypes.func,
},
getDefaultProps: function() {
@@ -34,40 +46,56 @@ module.exports = React.createClass({
truncateAt: 2,
createOverflowElement: function(overflowCount, totalCount) {
return (
- {_t("And %(count)s more...", {count: overflowCount})}
+ { _t("And %(count)s more...", {count: overflowCount}) }
);
- }
+ },
};
},
+ _getChildren: function(start, end) {
+ if (this.props.getChildren && this.props.getChildCount) {
+ return this.props.getChildren(start, end);
+ } else {
+ // XXX: I'm not sure why anything would pass null into this, it seems
+ // like a bizzare case to handle, but I'm preserving the behaviour.
+ // (see commit 38d5c7d5c5d5a34dc16ef5d46278315f5c57f542)
+ return React.Children.toArray(this.props.children).filter((c) => {
+ return c != null;
+ }).slice(start, end);
+ }
+ },
+
+ _getChildCount: function() {
+ if (this.props.getChildren && this.props.getChildCount) {
+ return this.props.getChildCount();
+ } else {
+ return React.Children.toArray(this.props.children).filter((c) => {
+ return c != null;
+ }).length;
+ }
+ },
+
render: function() {
- var childsJsx = this.props.children;
- var overflowJsx;
- var childArray = React.Children.toArray(this.props.children).filter((c) => {
- return c != null;
- });
-
- var childCount = childArray.length;
+ let overflowNode = null;
+ const totalChildren = this._getChildCount();
+ let upperBound = totalChildren;
if (this.props.truncateAt >= 0) {
- var overflowCount = childCount - this.props.truncateAt;
-
+ const overflowCount = totalChildren - this.props.truncateAt;
if (overflowCount > 1) {
- overflowJsx = this.props.createOverflowElement(
- overflowCount, childCount
+ overflowNode = this.props.createOverflowElement(
+ overflowCount, totalChildren,
);
-
- // cut out the overflow elements
- childArray.splice(childCount - overflowCount, overflowCount);
- childsJsx = childArray; // use what is left
+ upperBound = this.props.truncateAt;
}
}
+ const childNodes = this._getChildren(0, upperBound);
return (
- {childsJsx}
- {overflowJsx}
+ { childNodes }
+ { overflowNode }
);
- }
+ },
});
diff --git a/src/components/views/groups/GroupInviteTile.js b/src/components/views/groups/GroupInviteTile.js
new file mode 100644
index 0000000000..07c0bcf6b9
--- /dev/null
+++ b/src/components/views/groups/GroupInviteTile.js
@@ -0,0 +1,70 @@
+/*
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import sdk from '../../../index';
+import dis from '../../../dispatcher';
+import AccessibleButton from '../elements/AccessibleButton';
+
+export default React.createClass({
+ displayName: 'GroupInviteTile',
+
+ propTypes: {
+ group: PropTypes.object.isRequired,
+ },
+
+ onClick: function(e) {
+ dis.dispatch({
+ action: 'view_group',
+ group_id: this.props.group.groupId,
+ });
+ },
+
+ render: function() {
+ const BaseAvatar = sdk.getComponent('avatars.BaseAvatar');
+ const EmojiText = sdk.getComponent('elements.EmojiText');
+
+ const av = (
+
+ );
+
+ const label =
+ { this.props.group.name }
+ ;
+
+ const badge = !
;
+
+ return (
+
+
+ { av }
+
+
+ { label }
+ { badge }
+
+
+ );
+ },
+});
diff --git a/src/components/views/groups/GroupMemberInfo.js b/src/components/views/groups/GroupMemberInfo.js
new file mode 100644
index 0000000000..6f1a370f26
--- /dev/null
+++ b/src/components/views/groups/GroupMemberInfo.js
@@ -0,0 +1,195 @@
+/*
+Copyright 2017 Vector Creations Ltd
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import PropTypes from 'prop-types';
+import React from 'react';
+import dis from '../../../dispatcher';
+import Modal from '../../../Modal';
+import sdk from '../../../index';
+import { _t } from '../../../languageHandler';
+import { GroupMemberType } from '../../../groups';
+import { groupMemberFromApiObject } from '../../../groups';
+import withMatrixClient from '../../../wrappers/withMatrixClient';
+import AccessibleButton from '../elements/AccessibleButton';
+import GeminiScrollbar from 'react-gemini-scrollbar';
+
+
+module.exports = withMatrixClient(React.createClass({
+ displayName: 'GroupMemberInfo',
+
+ propTypes: {
+ matrixClient: PropTypes.object.isRequired,
+ groupId: PropTypes.string,
+ groupMember: GroupMemberType,
+ },
+
+ getInitialState: function() {
+ return {
+ fetching: false,
+ removingUser: false,
+ groupMembers: null,
+ };
+ },
+
+ componentWillMount: function() {
+ this._fetchMembers();
+ },
+
+ _fetchMembers: function() {
+ this.setState({fetching: true});
+ this.props.matrixClient.getGroupUsers(this.props.groupId).then((result) => {
+ this.setState({
+ groupMembers: result.chunk.map((apiMember) => {
+ return groupMemberFromApiObject(apiMember);
+ }),
+ fetching: false,
+ });
+ }).catch((e) => {
+ this.setState({fetching: false});
+ console.error("Failed to get group groupMember list: ", e);
+ });
+ },
+
+ _onKick: function() {
+ const ConfirmUserActionDialog = sdk.getComponent("dialogs.ConfirmUserActionDialog");
+ Modal.createDialog(ConfirmUserActionDialog, {
+ groupMember: this.props.groupMember,
+ action: _t('Remove from group'),
+ danger: true,
+ onFinished: (proceed) => {
+ if (!proceed) return;
+
+ this.setState({removingUser: true});
+ this.props.matrixClient.removeUserFromGroup(
+ this.props.groupId, this.props.groupMember.userId,
+ ).then(() => {
+ // return to the user list
+ dis.dispatch({
+ action: "view_user",
+ member: null,
+ });
+ }).catch((e) => {
+ const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
+ Modal.createTrackedDialog('Failed to remove user from group', '', ErrorDialog, {
+ title: _t('Error'),
+ description: _t('Failed to remove user from group'),
+ });
+ }).finally(() => {
+ this.setState({removingUser: false});
+ });
+ },
+ });
+ },
+
+ _onCancel: function(e) {
+ // Go back to the user list
+ dis.dispatch({
+ action: "view_user",
+ member: null,
+ });
+ },
+
+ onRoomTileClick(roomId) {
+ dis.dispatch({
+ action: 'view_room',
+ room_id: roomId,
+ });
+ },
+
+ render: function() {
+ if (this.state.fetching || this.state.removingUser) {
+ const Spinner = sdk.getComponent("elements.Spinner");
+ return ;
+ }
+ if (!this.state.groupMembers) return null;
+
+ const targetIsInGroup = this.state.groupMembers.some((m) => {
+ return m.userId === this.props.groupMember.userId;
+ });
+
+ let kickButton;
+ let adminButton;
+
+ if (targetIsInGroup) {
+ kickButton = (
+
+ { _t('Remove from group') }
+
+ );
+
+ // No make/revoke admin API yet
+ /*const opLabel = this.state.isTargetMod ? _t("Revoke Moderator") : _t("Make Moderator");
+ giveModButton =
+ {giveOpLabel}
+ ;*/
+ }
+
+ let adminTools;
+ if (kickButton || adminButton) {
+ adminTools =
+
+
{ _t("Admin Tools") }
+
+
+ { kickButton }
+ { adminButton }
+
+
;
+ }
+
+ const avatarUrl = this.props.matrixClient.mxcUrlToHttp(
+ this.props.groupMember.avatarUrl,
+ 36, 36, 'crop',
+ );
+
+ const BaseAvatar = sdk.getComponent('avatars.BaseAvatar');
+ const avatar = (
+
+ );
+
+ const groupMemberName = (
+ this.props.groupMember.displayname || this.props.groupMember.userId
+ );
+
+ const EmojiText = sdk.getComponent('elements.EmojiText');
+ return (
+
+
+
+
+
+
+ { avatar }
+
+
+ { groupMemberName }
+
+
+
+ { this.props.groupMember.userId }
+
+
+
+ { adminTools }
+
+
+ );
+ },
+}));
diff --git a/src/components/views/groups/GroupMemberList.js b/src/components/views/groups/GroupMemberList.js
new file mode 100644
index 0000000000..6a257259f9
--- /dev/null
+++ b/src/components/views/groups/GroupMemberList.js
@@ -0,0 +1,155 @@
+/*
+Copyright 2017 Vector Creations Ltd.
+Copyright 2017 New Vector Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+import React from 'react';
+import { _t } from '../../../languageHandler';
+import sdk from '../../../index';
+import { groupMemberFromApiObject } from '../../../groups';
+import GeminiScrollbar from 'react-gemini-scrollbar';
+import PropTypes from 'prop-types';
+import withMatrixClient from '../../../wrappers/withMatrixClient';
+
+const INITIAL_LOAD_NUM_MEMBERS = 30;
+
+export default withMatrixClient(React.createClass({
+ displayName: 'GroupMemberList',
+
+ propTypes: {
+ matrixClient: PropTypes.object.isRequired,
+ groupId: PropTypes.string.isRequired,
+ },
+
+ getInitialState: function() {
+ return {
+ fetching: false,
+ members: null,
+ truncateAt: INITIAL_LOAD_NUM_MEMBERS,
+ };
+ },
+
+ componentWillMount: function() {
+ this._unmounted = false;
+ this._fetchMembers();
+ },
+
+ _fetchMembers: function() {
+ this.setState({fetching: true});
+ this.props.matrixClient.getGroupUsers(this.props.groupId).then((result) => {
+ this.setState({
+ members: result.chunk.map((apiMember) => {
+ return groupMemberFromApiObject(apiMember);
+ }),
+ fetching: false,
+ });
+ }).catch((e) => {
+ this.setState({fetching: false});
+ console.error("Failed to get group member list: " + e);
+ });
+ },
+
+ _createOverflowTile: function(overflowCount, totalCount) {
+ // For now we'll pretend this is any entity. It should probably be a separate tile.
+ const EntityTile = sdk.getComponent("rooms.EntityTile");
+ const BaseAvatar = sdk.getComponent("avatars.BaseAvatar");
+ const text = _t("and %(count)s others...", { count: overflowCount });
+ return (
+
+ } name={text} presenceState="online" suppressOnHover={true}
+ onClick={this._showFullMemberList} />
+ );
+ },
+
+ _showFullMemberList: function() {
+ this.setState({
+ truncateAt: -1,
+ });
+ },
+
+ onSearchQueryChanged: function(ev) {
+ this.setState({ searchQuery: ev.target.value });
+ },
+
+ makeGroupMemberTiles: function(query) {
+ const GroupMemberTile = sdk.getComponent("groups.GroupMemberTile");
+ query = (query || "").toLowerCase();
+
+ let memberList = this.state.members;
+ if (query) {
+ memberList = memberList.filter((m) => {
+ const matchesName = m.displayname.toLowerCase().indexOf(query) !== -1;
+ const matchesId = m.userId.toLowerCase().includes(query);
+
+ if (!matchesName && !matchesId) {
+ return false;
+ }
+
+ return true;
+ });
+ }
+
+ memberList = memberList.map((m) => {
+ return (
+
+ );
+ });
+
+ memberList.sort((a, b) => {
+ // TODO: should put admins at the top: we don't yet have that info
+ if (a < b) {
+ return -1;
+ } else if (a > b) {
+ return 1;
+ } else {
+ return 0;
+ }
+ });
+
+ return memberList;
+ },
+
+ render: function() {
+ if (this.state.fetching) {
+ const Spinner = sdk.getComponent("elements.Spinner");
+ return (
+
+
);
+ } else if (this.state.members === null) {
+ return null;
+ }
+
+ const inputBox = (
+
+ );
+
+ const TruncatedList = sdk.getComponent("elements.TruncatedList");
+ return (
+
+ { inputBox }
+
+
+ { this.makeGroupMemberTiles(this.state.searchQuery) }
+
+
+
+ );
+ },
+}));
diff --git a/src/components/views/groups/GroupMemberTile.js b/src/components/views/groups/GroupMemberTile.js
new file mode 100644
index 0000000000..f40c7ed1c5
--- /dev/null
+++ b/src/components/views/groups/GroupMemberTile.js
@@ -0,0 +1,70 @@
+/*
+Copyright 2017 Vector Creations Ltd
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import sdk from '../../../index';
+import dis from '../../../dispatcher';
+import { GroupMemberType } from '../../../groups';
+import withMatrixClient from '../../../wrappers/withMatrixClient';
+
+export default withMatrixClient(React.createClass({
+ displayName: 'GroupMemberTile',
+
+ propTypes: {
+ matrixClient: PropTypes.object,
+ groupId: PropTypes.string.isRequired,
+ member: GroupMemberType.isRequired,
+ },
+
+ getInitialState: function() {
+ return {};
+ },
+
+ onClick: function(e) {
+ dis.dispatch({
+ action: 'view_group_user',
+ member: this.props.member,
+ groupId: this.props.groupId,
+ });
+ },
+
+ render: function() {
+ const BaseAvatar = sdk.getComponent('avatars.BaseAvatar');
+ const EntityTile = sdk.getComponent('rooms.EntityTile');
+
+ const name = this.props.member.displayname || this.props.member.userId;
+ const avatarUrl = this.props.matrixClient.mxcUrlToHttp(
+ this.props.member.avatarUrl,
+ 36, 36, 'crop',
+ );
+
+ const av = (
+
+ );
+
+ return (
+
+ );
+ },
+}));
diff --git a/src/components/views/groups/GroupRoomList.js b/src/components/views/groups/GroupRoomList.js
new file mode 100644
index 0000000000..39ff3e4a07
--- /dev/null
+++ b/src/components/views/groups/GroupRoomList.js
@@ -0,0 +1,143 @@
+/*
+Copyright 2017 New Vector Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+import React from 'react';
+import { _t } from '../../../languageHandler';
+import sdk from '../../../index';
+import { groupRoomFromApiObject } from '../../../groups';
+import GeminiScrollbar from 'react-gemini-scrollbar';
+import PropTypes from 'prop-types';
+import {MatrixClient} from 'matrix-js-sdk';
+
+const INITIAL_LOAD_NUM_ROOMS = 30;
+
+export default React.createClass({
+ contextTypes: {
+ matrixClient: React.PropTypes.instanceOf(MatrixClient).isRequired,
+ },
+
+ propTypes: {
+ groupId: PropTypes.string.isRequired,
+ },
+
+ getInitialState: function() {
+ return {
+ fetching: false,
+ rooms: null,
+ truncateAt: INITIAL_LOAD_NUM_ROOMS,
+ searchQuery: "",
+ };
+ },
+
+ componentWillMount: function() {
+ this._unmounted = false;
+ this._fetchRooms();
+ },
+
+ _fetchRooms: function() {
+ this.setState({fetching: true});
+ this.context.matrixClient.getGroupRooms(this.props.groupId).then((result) => {
+ this.setState({
+ rooms: result.chunk.map((apiRoom) => {
+ return groupRoomFromApiObject(apiRoom);
+ }),
+ fetching: false,
+ });
+ }).catch((e) => {
+ this.setState({fetching: false});
+ console.error("Failed to get group room list: ", e);
+ });
+ },
+
+ _createOverflowTile: function(overflowCount, totalCount) {
+ // For now we'll pretend this is any entity. It should probably be a separate tile.
+ const EntityTile = sdk.getComponent("rooms.EntityTile");
+ const BaseAvatar = sdk.getComponent("avatars.BaseAvatar");
+ const text = _t("and %(count)s others...", { count: overflowCount });
+ return (
+
+ } name={text} presenceState="online" suppressOnHover={true}
+ onClick={this._showFullRoomList} />
+ );
+ },
+
+ _showFullRoomList: function() {
+ this.setState({
+ truncateAt: -1,
+ });
+ },
+
+ onSearchQueryChanged: function(ev) {
+ this.setState({ searchQuery: ev.target.value });
+ },
+
+ makeGroupRoomTiles: function(query) {
+ const GroupRoomTile = sdk.getComponent("groups.GroupRoomTile");
+ query = (query || "").toLowerCase();
+
+ let roomList = this.state.rooms;
+ if (query) {
+ roomList = roomList.filter((room) => {
+ const matchesName = (room.name || "").toLowerCase().include(query);
+ const matchesAlias = (room.canonicalAlias || "").toLowerCase().includes(query);
+ return matchesName || matchesAlias;
+ });
+ }
+
+ roomList = roomList.map((groupRoom, index) => {
+ return (
+
+ );
+ });
+
+ return roomList;
+ },
+
+ render: function() {
+ if (this.state.fetching) {
+ const Spinner = sdk.getComponent("elements.Spinner");
+ return (
+
+
);
+ } else if (this.state.rooms === null) {
+ return null;
+ }
+
+ const inputBox = (
+
+ );
+
+ const TruncatedList = sdk.getComponent("elements.TruncatedList");
+ return (
+
+ { inputBox }
+
+
+ { this.makeGroupRoomTiles(this.state.searchQuery) }
+
+
+
+ );
+ },
+});
diff --git a/src/components/views/groups/GroupRoomTile.js b/src/components/views/groups/GroupRoomTile.js
new file mode 100644
index 0000000000..b6bdb9735b
--- /dev/null
+++ b/src/components/views/groups/GroupRoomTile.js
@@ -0,0 +1,135 @@
+/*
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import {MatrixClient} from 'matrix-js-sdk';
+import { _t } from '../../../languageHandler';
+import PropTypes from 'prop-types';
+import sdk from '../../../index';
+import dis from '../../../dispatcher';
+import { GroupRoomType } from '../../../groups';
+import Modal from '../../../Modal';
+
+const GroupRoomTile = React.createClass({
+ displayName: 'GroupRoomTile',
+
+ propTypes: {
+ groupId: PropTypes.string.isRequired,
+ groupRoom: GroupRoomType.isRequired,
+ },
+
+ getInitialState: function() {
+ return {
+ name: this.calculateRoomName(this.props.groupRoom),
+ };
+ },
+
+ componentWillReceiveProps: function(newProps) {
+ this.setState({
+ name: this.calculateRoomName(newProps.groupRoom),
+ });
+ },
+
+ calculateRoomName: function(groupRoom) {
+ return groupRoom.name || groupRoom.canonicalAlias || _t("Unnamed Room");
+ },
+
+ removeRoomFromGroup: function() {
+ const groupId = this.props.groupId;
+ const roomName = this.state.name;
+ const roomId = this.props.groupRoom.roomId;
+ this.context.matrixClient
+ .removeRoomFromGroup(groupId, roomId)
+ .catch((err) => {
+ console.error(`Error whilst removing ${roomId} from ${groupId}`, err);
+ const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
+ Modal.createTrackedDialog('Failed to remove room from group', '', ErrorDialog, {
+ title: _t("Failed to remove room from group"),
+ description: _t("Failed to remove '%(roomName)s' from %(groupId)s", {groupId, roomName}),
+ });
+ });
+ },
+
+ onClick: function(e) {
+ let roomId;
+ let roomAlias;
+ if (this.props.groupRoom.canonicalAlias) {
+ roomAlias = this.props.groupRoom.canonicalAlias;
+ } else {
+ roomId = this.props.groupRoom.roomId;
+ }
+ dis.dispatch({
+ action: 'view_room',
+ room_id: roomId,
+ room_alias: roomAlias,
+ });
+ },
+
+ onDeleteClick: function(e) {
+ const groupId = this.props.groupId;
+ const roomName = this.state.name;
+ e.preventDefault();
+ e.stopPropagation();
+ const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
+ Modal.createTrackedDialog('Confirm removal of group from room', '', QuestionDialog, {
+ title: _t("Are you sure you want to remove '%(roomName)s' from %(groupId)s?", {roomName, groupId}),
+ description: _t("Removing a room from the group will also remove it from the group page."),
+ button: _t("Remove"),
+ onFinished: (success) => {
+ if (success) {
+ this.removeRoomFromGroup();
+ }
+ },
+ });
+ },
+
+ render: function() {
+ const BaseAvatar = sdk.getComponent('avatars.BaseAvatar');
+ const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
+ const avatarUrl = this.context.matrixClient.mxcUrlToHttp(
+ this.props.groupRoom.avatarUrl,
+ 36, 36, 'crop',
+ );
+
+ const av = (
+
+ );
+
+ return (
+
+
+ { av }
+
+
+ { this.state.name }
+
+
+
+
+
+ );
+ },
+});
+
+GroupRoomTile.contextTypes = {
+ matrixClient: React.PropTypes.instanceOf(MatrixClient).isRequired,
+};
+
+
+export default GroupRoomTile;
diff --git a/src/components/views/login/CaptchaForm.js b/src/components/views/login/CaptchaForm.js
index 8f9c0391ae..d24990f94d 100644
--- a/src/components/views/login/CaptchaForm.js
+++ b/src/components/views/login/CaptchaForm.js
@@ -17,6 +17,7 @@ limitations under the License.
'use strict';
import React from 'react';
+import ReactDOM from 'react-dom';
import { _t, _tJsx } from '../../../languageHandler';
var DIV_ID = 'mx_recaptcha';
@@ -66,11 +67,10 @@ module.exports = React.createClass({
// * jumping straight to a hosted captcha page (but we don't support that yet)
// * embedding the captcha in an iframe (if that works)
// * using a better captcha lib
- warning.innerHTML = _tJsx(
- "Robot check is currently unavailable on desktop - please use a web browser ",
- /(.*?)<\/a>/,
- (sub) => { return " { sub } "; }
- );
+ ReactDOM.render(_tJsx(
+ "Robot check is currently unavailable on desktop - please use a web browser ",
+ /(.*?)<\/a>/,
+ (sub) => { return { sub } ; }), warning);
this.refs.recaptchaContainer.appendChild(warning);
}
else {
diff --git a/src/components/views/login/LoginFooter.js b/src/components/views/login/LoginFooter.js
index 8bdec71685..392d36e288 100644
--- a/src/components/views/login/LoginFooter.js
+++ b/src/components/views/login/LoginFooter.js
@@ -25,7 +25,7 @@ module.exports = React.createClass({
render: function() {
return (
);
},
diff --git a/src/components/views/messages/SenderProfile.js b/src/components/views/messages/SenderProfile.js
index e224714a27..63e3144115 100644
--- a/src/components/views/messages/SenderProfile.js
+++ b/src/components/views/messages/SenderProfile.js
@@ -18,6 +18,7 @@
import React from 'react';
import sdk from '../../../index';
+import Flair from '../elements/Flair.js';
export default function SenderProfile(props) {
const EmojiText = sdk.getComponent('elements.EmojiText');
@@ -30,8 +31,17 @@ export default function SenderProfile(props) {
}
return (
- {`${name || ''} ${props.aux || ''}`}
+
+ { name || '' }
+ { props.enableFlair ?
+
+ : null
+ }
+ { props.aux ? { props.aux } : null }
+
);
}
diff --git a/src/components/views/messages/TextualBody.js b/src/components/views/messages/TextualBody.js
index 58273bee67..aae46d343c 100644
--- a/src/components/views/messages/TextualBody.js
+++ b/src/components/views/messages/TextualBody.js
@@ -31,6 +31,7 @@ import dis from '../../../dispatcher';
import { _t } from '../../../languageHandler';
import UserSettingsStore from "../../../UserSettingsStore";
import MatrixClientPeg from '../../../MatrixClientPeg';
+import ContextualMenu from '../../structures/ContextualMenu';
import {RoomMember} from 'matrix-js-sdk';
import classNames from 'classnames';
@@ -72,12 +73,16 @@ module.exports = React.createClass({
textArea.value = text;
document.body.appendChild(textArea);
textArea.select();
+
+ let successful = false;
try {
- const successful = document.execCommand('copy');
+ successful = document.execCommand('copy');
} catch (err) {
console.log('Unable to copy');
}
+
document.body.removeChild(textArea);
+ return successful;
},
componentDidMount: function() {
@@ -113,14 +118,7 @@ module.exports = React.createClass({
}
}, 10);
}
- // add event handlers to the 'copy code' buttons
- const buttons = ReactDOM.findDOMNode(this).getElementsByClassName("mx_EventTile_copyButton");
- for (let i = 0; i < buttons.length; i++) {
- buttons[i].onclick = (e) => {
- const copyCode = buttons[i].parentNode.getElementsByTagName("code")[0];
- this.copyToClipboard(copyCode.textContent);
- };
- }
+ this._addCodeCopyButton();
}
},
@@ -257,6 +255,33 @@ module.exports = React.createClass({
}
},
+ _addCodeCopyButton() {
+ // Add 'copy' buttons to pre blocks
+ ReactDOM.findDOMNode(this).querySelectorAll('.mx_EventTile_body pre').forEach((p) => {
+ const button = document.createElement("span");
+ button.className = "mx_EventTile_copyButton";
+ button.onclick = (e) => {
+ const copyCode = button.parentNode.getElementsByTagName("code")[0];
+ const successful = this.copyToClipboard(copyCode.textContent);
+
+ const GenericTextContextMenu = sdk.getComponent('context_menus.GenericTextContextMenu');
+ const buttonRect = e.target.getBoundingClientRect();
+
+ // The window X and Y offsets are to adjust position when zoomed in to page
+ const x = buttonRect.right + window.pageXOffset;
+ const y = (buttonRect.top + (buttonRect.height / 2) + window.pageYOffset) - 19;
+ const {close} = ContextualMenu.createMenu(GenericTextContextMenu, {
+ chevronOffset: 10,
+ left: x,
+ top: y,
+ message: successful ? _t('Copied!') : _t('Failed to copy'),
+ });
+ e.target.onmouseout = close;
+ };
+ p.appendChild(button);
+ });
+ },
+
onCancelClick: function(event) {
this.setState({ widgetHidden: true });
// FIXME: persist this somewhere smarter than local storage
diff --git a/src/components/views/messages/UnknownBody.js b/src/components/views/messages/UnknownBody.js
index 1b6f6426e5..083d7ac12e 100644
--- a/src/components/views/messages/UnknownBody.js
+++ b/src/components/views/messages/UnknownBody.js
@@ -23,10 +23,15 @@ module.exports = React.createClass({
displayName: 'UnknownBody',
render: function() {
+ let tooltip = _t("Removed or unknown message type");
+ if (this.props.mxEvent.isRedacted()) {
+ tooltip = _t("Message removed by %(userId)s", {userId: this.props.mxEvent.getSender()});
+ }
+
const text = this.props.mxEvent.getContent().body;
return (
-
- {text}
+
+ { text }
);
},
diff --git a/src/components/views/room_settings/AliasSettings.js b/src/components/views/room_settings/AliasSettings.js
index f37bd4271a..94301c432d 100644
--- a/src/components/views/room_settings/AliasSettings.js
+++ b/src/components/views/room_settings/AliasSettings.js
@@ -136,24 +136,25 @@ module.exports = React.createClass({
return ObjectUtils.getKeyValueArrayDiffs(oldAliases, this.state.domainToAliases);
},
- onAliasAdded: function(alias) {
+ onNewAliasChanged: function(value) {
+ this.setState({newAlias: value});
+ },
+
+ onLocalAliasAdded: function(alias) {
if (!alias || alias.length === 0) return; // ignore attempts to create blank aliases
- if (this.isAliasValid(alias)) {
- // add this alias to the domain to aliases dict
- var domain = alias.replace(/^.*?:/, '');
- // XXX: do we need to deep copy aliases before editing it?
- this.state.domainToAliases[domain] = this.state.domainToAliases[domain] || [];
- this.state.domainToAliases[domain].push(alias);
- this.setState({
- domainToAliases: this.state.domainToAliases
- });
+ const localDomain = MatrixClientPeg.get().getDomain();
+ if (this.isAliasValid(alias) && alias.endsWith(localDomain)) {
+ this.state.domainToAliases[localDomain] = this.state.domainToAliases[localDomain] || [];
+ this.state.domainToAliases[localDomain].push(alias);
- // reset the add field
- this.refs.add_alias.setValue(''); // FIXME
- }
- else {
- var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
+ this.setState({
+ domainToAliases: this.state.domainToAliases,
+ // Reset the add field
+ newAlias: "",
+ });
+ } else {
+ const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createTrackedDialog('Invalid alias format', '', ErrorDialog, {
title: _t('Invalid alias format'),
description: _t('\'%(alias)s\' is not a valid format for an alias', { alias: alias }),
@@ -161,15 +162,13 @@ module.exports = React.createClass({
}
},
- onAliasChanged: function(domain, index, alias) {
+ onLocalAliasChanged: function(alias, index) {
if (alias === "") return; // hit the delete button to delete please
- var oldAlias;
- if (this.isAliasValid(alias)) {
- oldAlias = this.state.domainToAliases[domain][index];
- this.state.domainToAliases[domain][index] = alias;
- }
- else {
- var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
+ const localDomain = MatrixClientPeg.get().getDomain();
+ if (this.isAliasValid(alias) && alias.endsWith(localDomain)) {
+ this.state.domainToAliases[localDomain][index] = alias;
+ } else {
+ const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createTrackedDialog('Invalid address format', '', ErrorDialog, {
title: _t('Invalid address format'),
description: _t('\'%(alias)s\' is not a valid format for an address', { alias: alias }),
@@ -177,15 +176,16 @@ module.exports = React.createClass({
}
},
- onAliasDeleted: function(domain, index) {
+ onLocalAliasDeleted: function(index) {
+ const localDomain = MatrixClientPeg.get().getDomain();
// It's a bit naughty to directly manipulate this.state, and React would
// normally whine at you, but it can't see us doing the splice. Given we
// promptly setState anyway, it's just about acceptable. The alternative
// would be to arbitrarily deepcopy to a temp variable and then setState
// that, but why bother when we can cut this corner.
- var alias = this.state.domainToAliases[domain].splice(index, 1);
+ this.state.domainToAliases[localDomain].splice(index, 1);
this.setState({
- domainToAliases: this.state.domainToAliases
+ domainToAliases: this.state.domainToAliases,
});
},
@@ -198,6 +198,7 @@ module.exports = React.createClass({
render: function() {
var self = this;
var EditableText = sdk.getComponent("elements.EditableText");
+ var EditableItemList = sdk.getComponent("elements.EditableItemList");
var localDomain = MatrixClientPeg.get().getDomain();
var canonical_alias_section;
@@ -257,58 +258,24 @@ module.exports = React.createClass({
{ _t('The main address for this room is') }: { canonical_alias_section }
-
- { (this.state.domainToAliases[localDomain] &&
- this.state.domainToAliases[localDomain].length > 0)
- ? _t('Local addresses for this room:')
- : _t('This room has no local addresses') }
-
-
- { (this.state.domainToAliases[localDomain] || []).map((alias, i) => {
- var deleteButton;
- if (this.props.canSetAliases) {
- deleteButton = (
-
- );
- }
- return (
-
-
-
- { deleteButton }
-
-
- );
- })}
-
- { this.props.canSetAliases ?
-
-
-
-
-
-
: ""
- }
-
+
{ remote_aliases_section }
);
- }
+ },
});
diff --git a/src/components/views/room_settings/RelatedGroupSettings.js b/src/components/views/room_settings/RelatedGroupSettings.js
new file mode 100644
index 0000000000..60bdbf1481
--- /dev/null
+++ b/src/components/views/room_settings/RelatedGroupSettings.js
@@ -0,0 +1,125 @@
+/*
+Copyright 2017 New Vector Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import {MatrixEvent, MatrixClient} from 'matrix-js-sdk';
+import sdk from '../../../index';
+import { _t } from '../../../languageHandler';
+import Modal from '../../../Modal';
+
+const GROUP_ID_REGEX = /\+\S+\:\S+/;
+
+module.exports = React.createClass({
+ displayName: 'RelatedGroupSettings',
+
+ propTypes: {
+ roomId: React.PropTypes.string.isRequired,
+ canSetRelatedRooms: React.PropTypes.bool.isRequired,
+ relatedGroupsEvent: React.PropTypes.instanceOf(MatrixEvent),
+ },
+
+ contextTypes: {
+ matrixClient: React.PropTypes.instanceOf(MatrixClient),
+ },
+
+ getDefaultProps: function() {
+ return {
+ canSetRelatedRooms: false,
+ };
+ },
+
+ getInitialState: function() {
+ return {
+ newGroupsList: this.props.relatedGroupsEvent ?
+ (this.props.relatedGroupsEvent.getContent().groups || []) : [],
+ newGroupId: null,
+ };
+ },
+
+ saveSettings: function() {
+ return this.context.matrixClient.sendStateEvent(
+ this.props.roomId,
+ 'm.room.related_groups',
+ {
+ groups: this.state.newGroupsList,
+ },
+ '',
+ );
+ },
+
+ validateGroupId: function(groupId) {
+ if (!GROUP_ID_REGEX.test(groupId)) {
+ const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
+ Modal.createTrackedDialog('Invalid related group ID', '', ErrorDialog, {
+ title: _t('Invalid group ID'),
+ description: _t('\'%(groupId)s\' is not a valid group ID', { groupId }),
+ });
+ return false;
+ }
+ return true;
+ },
+
+ onNewGroupChanged: function(newGroupId) {
+ this.setState({ newGroupId });
+ },
+
+ onGroupAdded: function(groupId) {
+ if (groupId.length === 0 || !this.validateGroupId(groupId)) {
+ return;
+ }
+ this.setState({
+ newGroupsList: this.state.newGroupsList.concat([groupId]),
+ newGroupId: '',
+ });
+ },
+
+ onGroupEdited: function(groupId, index) {
+ if (groupId.length === 0 || !this.validateGroupId(groupId)) {
+ return;
+ }
+ this.setState({
+ newGroupsList: Object.assign(this.state.newGroupsList, {[index]: groupId}),
+ });
+ },
+
+ onGroupDeleted: function(index) {
+ const newGroupsList = this.state.newGroupsList.slice();
+ newGroupsList.splice(index, 1),
+ this.setState({ newGroupsList });
+ },
+
+ render: function() {
+ const localDomain = this.context.matrixClient.getDomain();
+ const EditableItemList = sdk.getComponent('elements.EditableItemList');
+ return (
+
{ _t('Related Groups') }
+
+ );
+ },
+});
diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js
index 4bc98abb6f..1c9296228d 100644
--- a/src/components/views/rooms/AppsDrawer.js
+++ b/src/components/views/rooms/AppsDrawer.js
@@ -28,6 +28,8 @@ import ScalarMessaging from '../../../ScalarMessaging';
import { _t } from '../../../languageHandler';
import WidgetUtils from '../../../WidgetUtils';
+// The maximum number of widgets that can be added in a room
+const MAX_WIDGETS = 2;
module.exports = React.createClass({
displayName: 'AppsDrawer',
@@ -51,19 +53,18 @@ module.exports = React.createClass({
this.scalarClient = null;
if (SdkConfig.get().integrations_ui_url && SdkConfig.get().integrations_rest_url) {
this.scalarClient = new ScalarAuthClient();
- this.scalarClient.connect().done(() => {
+ this.scalarClient.connect().then(() => {
this.forceUpdate();
- if (this.state.apps && this.state.apps.length < 1) {
- this.onClickAddWidget();
- }
- // TODO -- Handle Scalar errors
- // },
- // (err) => {
- // this.setState({
- // scalar_error: err,
- // });
+ }).catch((e) => {
+ console.log("Failed to connect to integrations server");
+ // TODO -- Handle Scalar errors
+ // this.setState({
+ // scalar_error: err,
+ // });
});
}
+
+ this.dispatcherRef = dis.register(this.onAction);
},
componentWillUnmount: function() {
@@ -71,6 +72,27 @@ module.exports = React.createClass({
if (MatrixClientPeg.get()) {
MatrixClientPeg.get().removeListener("RoomState.events", this.onRoomStateEvents);
}
+ dis.unregister(this.dispatcherRef);
+ },
+
+ componentWillReceiveProps(newProps) {
+ // Room has changed probably, update apps
+ this._updateApps();
+ },
+
+ onAction: function(action) {
+ switch (action.action) {
+ case 'appsDrawer':
+ // When opening the app draw when there aren't any apps, auto-launch the
+ // integrations manager to skip the awkward click on "Add widget"
+ if (action.show) {
+ const apps = this._getApps();
+ if (apps.length === 0) {
+ this._launchManageIntegrations();
+ }
+ }
+ break;
+ }
},
/**
@@ -93,7 +115,7 @@ module.exports = React.createClass({
return pathTemplate;
},
- _initAppConfig: function(appId, app) {
+ _initAppConfig: function(appId, app, sender) {
const user = MatrixClientPeg.get().getUser(this.props.userId);
const params = {
'$matrix_user_id': this.props.userId,
@@ -111,6 +133,7 @@ module.exports = React.createClass({
app.id = appId;
app.name = app.name || app.type;
app.url = this.encodeUri(app.url, params);
+ app.creatorUserId = (sender && sender.userId) ? sender.userId : null;
return app;
},
@@ -131,18 +154,12 @@ module.exports = React.createClass({
return appsStateEvents.filter((ev) => {
return ev.getContent().type && ev.getContent().url;
}).map((ev) => {
- return this._initAppConfig(ev.getStateKey(), ev.getContent());
+ return this._initAppConfig(ev.getStateKey(), ev.getContent(), ev.sender);
});
},
_updateApps: function() {
const apps = this._getApps();
- if (apps.length < 1) {
- dis.dispatch({
- action: 'appsDrawer',
- show: false,
- });
- }
this.setState({
apps: apps,
});
@@ -157,11 +174,7 @@ module.exports = React.createClass({
}
},
- onClickAddWidget: function(e) {
- if (e) {
- e.preventDefault();
- }
-
+ _launchManageIntegrations: function() {
const IntegrationsManager = sdk.getComponent("views.settings.IntegrationsManager");
const src = (this.scalarClient !== null && this.scalarClient.hasCredentials()) ?
this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room.roomId, 'add_integ') :
@@ -171,6 +184,23 @@ module.exports = React.createClass({
}, "mx_IntegrationsManager");
},
+ onClickAddWidget: function(e) {
+ e.preventDefault();
+ // Display a warning dialog if the max number of widgets have already been added to the room
+ const apps = this._getApps();
+ if (apps && apps.length >= MAX_WIDGETS) {
+ const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
+ const errorMsg = `The maximum number of ${MAX_WIDGETS} widgets have already been added to this room.`;
+ console.error(errorMsg);
+ Modal.createDialog(ErrorDialog, {
+ title: _t("Cannot add any more widgets"),
+ description: _t("The maximum permitted number of widgets have already been added to this room."),
+ });
+ return;
+ }
+ this._launchManageIntegrations();
+ },
+
render: function() {
const apps = this.state.apps.map(
(app, index, arr) => {
@@ -183,24 +213,34 @@ module.exports = React.createClass({
fullWidth={arr.length<2 ? true : false}
room={this.props.room}
userId={this.props.userId}
+ show={this.props.showApps}
+ creatorUserId={app.creatorUserId}
/>);
});
- const addWidget = this.state.apps && this.state.apps.length < 2 && this._canUserModify() &&
- (
- [+] {_t('Add a widget')}
-
);
+ let addWidget;
+ if (this.props.showApps &&
+ this._canUserModify()
+ ) {
+ addWidget =
+ [+] { _t('Add a widget') }
+
;
+ }
return (
- {apps}
+ { apps }
- {addWidget}
+ { this._canUserModify() && addWidget }
);
},
diff --git a/src/components/views/rooms/Autocomplete.js b/src/components/views/rooms/Autocomplete.js
index cdd57801a5..7706cc7ebd 100644
--- a/src/components/views/rooms/Autocomplete.js
+++ b/src/components/views/rooms/Autocomplete.js
@@ -143,7 +143,6 @@ export default class Autocomplete extends React.Component {
return null;
}
this.setSelection(selectionOffset);
- return selectionOffset === COMPOSER_SELECTED ? null : this.state.completionList[selectionOffset - 1];
}
// called from MessageComposerInput
@@ -155,7 +154,6 @@ export default class Autocomplete extends React.Component {
return null;
}
this.setSelection(selectionOffset);
- return selectionOffset === COMPOSER_SELECTED ? null : this.state.completionList[selectionOffset - 1];
}
onEscape(e): boolean {
@@ -201,6 +199,9 @@ export default class Autocomplete extends React.Component {
setSelection(selectionOffset: number) {
this.setState({selectionOffset, hide: false});
+ if (this.props.onSelectionChange) {
+ this.props.onSelectionChange(this.state.completionList[selectionOffset - 1]);
+ }
}
componentDidUpdate() {
diff --git a/src/components/views/rooms/AuxPanel.js b/src/components/views/rooms/AuxPanel.js
index a50743a25d..65dedad61d 100644
--- a/src/components/views/rooms/AuxPanel.js
+++ b/src/components/views/rooms/AuxPanel.js
@@ -129,11 +129,13 @@ module.exports = React.createClass({
);
let appsDrawer = null;
- if(UserSettingsStore.isFeatureEnabled('matrix_apps') && this.props.showApps) {
+ if(UserSettingsStore.isFeatureEnabled('matrix_apps')) {
appsDrawer =
;
+ maxHeight={this.props.maxHeight}
+ showApps={this.props.showApps}
+ />;
}
return (
diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js
index 776d8a264b..7328cfe0b6 100644
--- a/src/components/views/rooms/EventTile.js
+++ b/src/components/views/rooms/EventTile.js
@@ -44,6 +44,8 @@ var eventTileTypes = {
'm.room.history_visibility' : 'messages.TextualEvent',
'm.room.encryption' : 'messages.TextualEvent',
'm.room.power_levels' : 'messages.TextualEvent',
+
+ 'im.vector.modular.widgets': 'messages.TextualEvent',
};
var MAX_READ_AVATARS = 5;
@@ -506,10 +508,10 @@ module.exports = withMatrixClient(React.createClass({
if (msgtype === 'm.image') aux = _t('sent an image');
else if (msgtype === 'm.video') aux = _t('sent a video');
else if (msgtype === 'm.file') aux = _t('uploaded a file');
- sender = ;
+ sender = ;
}
else {
- sender = ;
+ sender = ;
}
}
diff --git a/src/components/views/rooms/ForwardMessage.js b/src/components/views/rooms/ForwardMessage.js
index 3c97128a02..67e55101e8 100644
--- a/src/components/views/rooms/ForwardMessage.js
+++ b/src/components/views/rooms/ForwardMessage.js
@@ -61,7 +61,7 @@ module.exports = React.createClass({
render: function() {
return (
-
{_t('Please select the destination room for this message')}
+ { _t('Please select the destination room for this message') }
);
},
diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js
index 64eeddb406..f705cf97d2 100644
--- a/src/components/views/rooms/MemberInfo.js
+++ b/src/components/views/rooms/MemberInfo.js
@@ -62,6 +62,7 @@ module.exports = withMatrixClient(React.createClass({
updating: 0,
devicesLoading: true,
devices: null,
+ isIgnoring: false,
};
},
@@ -81,6 +82,8 @@ module.exports = withMatrixClient(React.createClass({
cli.on("RoomState.events", this.onRoomStateEvents);
cli.on("RoomMember.name", this.onRoomMemberName);
cli.on("accountData", this.onAccountData);
+
+ this._checkIgnoreState();
},
componentDidMount: function() {
@@ -111,6 +114,11 @@ module.exports = withMatrixClient(React.createClass({
}
},
+ _checkIgnoreState: function() {
+ const isIgnoring = this.props.matrixClient.isUserIgnored(this.props.member.userId);
+ this.setState({isIgnoring: isIgnoring});
+ },
+
_disambiguateDevices: function(devices) {
var names = Object.create(null);
for (var i = 0; i < devices.length; i++) {
@@ -225,6 +233,18 @@ module.exports = withMatrixClient(React.createClass({
});
},
+ onIgnoreToggle: function() {
+ const ignoredUsers = this.props.matrixClient.getIgnoredUsers();
+ if (this.state.isIgnoring) {
+ const index = ignoredUsers.indexOf(this.props.member.userId);
+ if (index !== -1) ignoredUsers.splice(index, 1);
+ } else {
+ ignoredUsers.push(this.props.member.userId);
+ }
+
+ this.props.matrixClient.setIgnoredUsers(ignoredUsers).then(() => this.setState({isIgnoring: !this.state.isIgnoring}));
+ },
+
onKick: function() {
const membership = this.props.member.membership;
const kickLabel = membership === "invite" ? _t("Disinvite") : _t("Kick");
@@ -607,6 +627,29 @@ module.exports = withMatrixClient(React.createClass({
);
},
+ _renderUserOptions: function() {
+ // Only allow the user to ignore the user if its not ourselves
+ let ignoreButton = null;
+ if (this.props.member.userId !== this.props.matrixClient.getUserId()) {
+ ignoreButton = (
+
+ {this.state.isIgnoring ? _t("Unignore") : _t("Ignore")}
+
+ );
+ }
+
+ if (!ignoreButton) return null;
+
+ return (
+
+
{ _t("User Options") }
+
+ {ignoreButton}
+
+
+ );
+ },
+
render: function() {
var startChat, kickButton, banButton, muteButton, giveModButton, spinner;
if (this.props.member.userId !== this.props.matrixClient.credentials.userId) {
@@ -708,7 +751,7 @@ module.exports = withMatrixClient(React.createClass({
if (kickButton || banButton || muteButton || giveModButton) {
adminTools =
-
{_t("Admin tools")}
+
{_t("Admin Tools")}
{muteButton}
@@ -756,6 +799,8 @@ module.exports = withMatrixClient(React.createClass({
+ { this._renderUserOptions() }
+
{ adminTools }
{ startChat }
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index e5f4f08572..d1b456025f 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -1,6 +1,7 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
+Copyright 2017 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.
@@ -14,42 +15,37 @@ 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.
*/
-var React = require('react');
+
+import React from 'react';
import { _t } from '../../../languageHandler';
-var classNames = require('classnames');
-var Matrix = require("matrix-js-sdk");
-import Promise from 'bluebird';
var MatrixClientPeg = require("../../../MatrixClientPeg");
-var Modal = require("../../../Modal");
-var Entities = require("../../../Entities");
var sdk = require('../../../index');
var GeminiScrollbar = require('react-gemini-scrollbar');
var rate_limited_func = require('../../../ratelimitedfunc');
var CallHandler = require("../../../CallHandler");
-var Invite = require("../../../Invite");
-var INITIAL_LOAD_NUM_MEMBERS = 30;
+const INITIAL_LOAD_NUM_MEMBERS = 30;
+const INITIAL_LOAD_NUM_INVITED = 5;
+const SHOW_MORE_INCREMENT = 100;
module.exports = React.createClass({
displayName: 'MemberList',
getInitialState: function() {
- var state = {
- members: [],
+ 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
- truncateAt: INITIAL_LOAD_NUM_MEMBERS,
+ truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS,
+ truncateAtInvited: INITIAL_LOAD_NUM_INVITED,
searchQuery: "",
};
- if (!this.props.roomId) return state;
- var cli = MatrixClientPeg.get();
- var room = cli.getRoom(this.props.roomId);
- if (!room) return state;
-
- this.memberDict = this.getMemberDict();
-
- state.members = this.roomMembers();
- return state;
},
componentWillMount: function() {
@@ -147,10 +143,12 @@ module.exports = React.createClass({
// console.log("Updating memberlist");
this.memberDict = this.getMemberDict();
- var self = this;
- this.setState({
- members: self.roomMembers()
- });
+ const newState = {
+ members: this.roomMembers(),
+ };
+ newState.filteredJoinedMembers = this._filterMembers(newState.members, 'join');
+ newState.filteredInvitedMembers = this._filterMembers(newState.members, 'invite');
+ this.setState(newState);
}, 500),
getMemberDict: function() {
@@ -199,7 +197,15 @@ module.exports = React.createClass({
return to_display;
},
- _createOverflowTile: function(overflowCount, totalCount) {
+ _createOverflowTileJoined: function(overflowCount, totalCount) {
+ return this._createOverflowTile(overflowCount, totalCount, this._showMoreJoinedMemberList);
+ },
+
+ _createOverflowTileInvited: function(overflowCount, totalCount) {
+ return this._createOverflowTile(overflowCount, totalCount, this._showMoreInvitedMemberList);
+ },
+
+ _createOverflowTile: function(overflowCount, totalCount, onClick) {
// For now we'll pretend this is any entity. It should probably be a separate tile.
const EntityTile = sdk.getComponent("rooms.EntityTile");
const BaseAvatar = sdk.getComponent("avatars.BaseAvatar");
@@ -208,13 +214,19 @@ module.exports = React.createClass({
} name={text} presenceState="online" suppressOnHover={true}
- onClick={this._showFullMemberList} />
+ onClick={onClick} />
);
},
- _showFullMemberList: function() {
+ _showMoreJoinedMemberList: function() {
this.setState({
- truncateAt: -1
+ truncateAtJoined: this.state.truncateAtJoined + SHOW_MORE_INCREMENT,
+ });
+ },
+
+ _showMoreInvitedMemberList: function() {
+ this.setState({
+ truncateAtInvited: this.state.truncateAtInvited + SHOW_MORE_INCREMENT,
});
},
@@ -280,17 +292,17 @@ module.exports = React.createClass({
},
onSearchQueryChanged: function(ev) {
- this.setState({ searchQuery: ev.target.value });
+ const q = ev.target.value;
+ this.setState({
+ searchQuery: q,
+ filteredJoinedMembers: this._filterMembers(this.state.members, 'join', q),
+ filteredInvitedMembers: this._filterMembers(this.state.members, 'invite', q),
+ });
},
- makeMemberTiles: function(membership, query) {
- var MemberTile = sdk.getComponent("rooms.MemberTile");
- query = (query || "").toLowerCase();
-
- var self = this;
-
- var memberList = self.state.members.filter(function(userId) {
- var m = self.memberDict[userId];
+ _filterMembers: function(members, membership, query) {
+ return members.filter((userId) => {
+ const m = this.memberDict[userId];
if (query) {
const matchesName = m.name.toLowerCase().indexOf(query) !== -1;
@@ -302,14 +314,23 @@ module.exports = React.createClass({
}
return m.membership == membership;
- }).map(function(userId) {
- var m = self.memberDict[userId];
+ });
+ },
+
+ _makeMemberTiles: function(members, membership) {
+ const MemberTile = sdk.getComponent("rooms.MemberTile");
+
+ const memberList = members.map((userId) => {
+ const m = this.memberDict[userId];
return (
);
});
// XXX: surely this is not the right home for this logic.
+ // Double XXX: Now it's really, really not the right home for this logic:
+ // we shouldn't even be passing in the 'membership' param to this function.
+ // Ew, ew, and ew.
if (membership === "invite") {
// include 3pid invites (m.room.third_party_invite) state events.
// The HS may have already converted these into m.room.member invites so
@@ -333,7 +354,7 @@ module.exports = React.createClass({
return;
}
memberList.push(
-
+
);
});
}
@@ -342,21 +363,42 @@ module.exports = React.createClass({
return memberList;
},
+ _getChildrenJoined: function(start, end) {
+ return this._makeMemberTiles(this.state.filteredJoinedMembers.slice(start, end));
+ },
+
+ _getChildCountJoined: function() {
+ return this.state.filteredJoinedMembers.length;
+ },
+
+ _getChildrenInvited: function(start, end) {
+ return this._makeMemberTiles(this.state.filteredInvitedMembers.slice(start, end), 'invite');
+ },
+
+ _getChildCountInvited: function() {
+ return this.state.filteredInvitedMembers.length;
+ },
+
render: function() {
- var invitedSection = null;
- var invitedMemberTiles = this.makeMemberTiles('invite', this.state.searchQuery);
- if (invitedMemberTiles.length > 0) {
+ const TruncatedList = sdk.getComponent("elements.TruncatedList");
+
+ let invitedSection = null;
+ if (this._getChildCountInvited() > 0) {
invitedSection = (
{ _t("Invited") }
- {invitedMemberTiles}
+
);
}
- var inputBox = (
+ const inputBox = (
diff --git a/src/components/views/rooms/PresenceLabel.js b/src/components/views/rooms/PresenceLabel.js
index 47a723f5cd..87b218e2e2 100644
--- a/src/components/views/rooms/PresenceLabel.js
+++ b/src/components/views/rooms/PresenceLabel.js
@@ -70,7 +70,7 @@ module.exports = React.createClass({
if (presence === "online") return _t("Online");
if (presence === "unavailable") return _t("Idle"); // XXX: is this actually right?
if (presence === "offline") return _t("Offline");
- return "Unknown";
+ return _t("Unknown");
},
render: function() {
diff --git a/src/components/views/rooms/ReadReceiptMarker.js b/src/components/views/rooms/ReadReceiptMarker.js
index 64b54fe1e1..44d1e651d7 100644
--- a/src/components/views/rooms/ReadReceiptMarker.js
+++ b/src/components/views/rooms/ReadReceiptMarker.js
@@ -123,7 +123,19 @@ module.exports = React.createClass({
}
var newElement = ReactDOM.findDOMNode(this);
- var startTopOffset = oldTop - newElement.offsetParent.getBoundingClientRect().top;
+ let startTopOffset;
+ if (!newElement.offsetParent) {
+ // this seems to happen sometimes for reasons I don't understand
+ // the docs for `offsetParent` say it may be null if `display` is
+ // `none`, but I can't see why that would happen.
+ console.warn(
+ `ReadReceiptMarker for ${this.props.member.userId} in ` +
+ `${this.props.member.roomId} has no offsetParent`,
+ );
+ startTopOffset = 0;
+ } else {
+ startTopOffset = oldTop - newElement.offsetParent.getBoundingClientRect().top;
+ }
var startStyles = [];
var enterTransitionOpts = [];
@@ -131,13 +143,12 @@ module.exports = React.createClass({
if (oldInfo && oldInfo.left) {
// start at the old height and in the old h pos
- var leftOffset = oldInfo.left;
startStyles.push({ top: startTopOffset+"px",
left: oldInfo.left+"px" });
var reorderTransitionOpts = {
duration: 100,
- easing: 'easeOut'
+ easing: 'easeOut',
};
enterTransitionOpts.push(reorderTransitionOpts);
@@ -175,7 +186,7 @@ module.exports = React.createClass({
if (this.props.timestamp) {
title = _t(
"Seen by %(userName)s at %(dateTime)s",
- {userName: this.props.member.userId, dateTime: DateUtils.formatDate(new Date(this.props.timestamp), this.props.showTwelveHour)}
+ {userName: this.props.member.userId, dateTime: DateUtils.formatDate(new Date(this.props.timestamp), this.props.showTwelveHour)},
);
}
diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js
index edd89e4a35..42cbb90cd9 100644
--- a/src/components/views/rooms/RoomHeader.js
+++ b/src/components/views/rooms/RoomHeader.js
@@ -29,6 +29,7 @@ import * as linkify from 'linkifyjs';
import linkifyElement from 'linkifyjs/element';
import linkifyMatrix from '../../../linkify-matrix';
import AccessibleButton from '../elements/AccessibleButton';
+import ManageIntegsButton from '../elements/ManageIntegsButton';
import {CancelButton} from './SimpleRoomHeader';
linkifyMatrix(linkify);
@@ -47,6 +48,7 @@ module.exports = React.createClass({
onSaveClick: React.PropTypes.func,
onSearchClick: React.PropTypes.func,
onLeaveClick: React.PropTypes.func,
+ onCancelClick: React.PropTypes.func,
},
getDefaultProps: function() {
@@ -54,6 +56,7 @@ module.exports = React.createClass({
editing: false,
inRoom: false,
onSaveClick: function() {},
+ onCancelClick: null,
};
},
@@ -183,18 +186,18 @@ module.exports = React.createClass({
saveButton = (
- {_t("Save")}
+ { _t("Save") }
);
}
if (this.props.onCancelClick) {
- cancelButton =
;
+ cancelButton = ;
}
if (this.props.saving) {
const Spinner = sdk.getComponent("elements.Spinner");
- spinner =
;
+ spinner =
;
}
if (canSetRoomName) {
@@ -251,7 +254,7 @@ module.exports = React.createClass({
}
if (topic) {
topicElement =
- { topic }
;
+ { topic }
;
}
}
@@ -259,16 +262,16 @@ module.exports = React.createClass({
if (canSetRoomAvatar) {
roomAvatar = (
-
);
@@ -283,7 +286,7 @@ module.exports = React.createClass({
if (this.props.onSettingsClick) {
settingsButton =
-
+
;
}
@@ -298,32 +301,40 @@ module.exports = React.createClass({
let forgetButton;
if (this.props.onForgetClick) {
forgetButton =
-
-
+
+
;
}
let searchButton;
if (this.props.onSearchClick && this.props.inRoom) {
searchButton =
-
-
+
+
;
}
let rightPanelButtons;
if (this.props.collapsedRhs) {
rightPanelButtons =
-
-
+
+
;
}
let rightRow;
+ let manageIntegsButton;
+ if(this.props.room && this.props.room.roomId && this.props.inRoom) {
+ manageIntegsButton = ;
+ }
+
if (!this.props.editing) {
rightRow =
{ settingsButton }
+ { manageIntegsButton }
{ forgetButton }
{ searchButton }
{ rightPanelButtons }
@@ -331,7 +342,7 @@ module.exports = React.createClass({
}
return (
-
+
@@ -342,10 +353,10 @@ module.exports = React.createClass({
{ topicElement }
- {spinner}
- {saveButton}
- {cancelButton}
- {rightRow}
+ { spinner }
+ { saveButton }
+ { cancelButton }
+ { rightRow }
);
diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js
index 9f9f030c27..a6d34f9b08 100644
--- a/src/components/views/rooms/RoomList.js
+++ b/src/components/views/rooms/RoomList.js
@@ -63,7 +63,6 @@ module.exports = React.createClass({
propTypes: {
ConferenceHandler: React.PropTypes.any,
collapsed: React.PropTypes.bool.isRequired,
- currentRoom: React.PropTypes.string,
searchFilter: React.PropTypes.string,
},
@@ -88,7 +87,9 @@ module.exports = React.createClass({
cli.on("Room.receipt", this.onRoomReceipt);
cli.on("RoomState.events", this.onRoomStateEvents);
cli.on("RoomMember.name", this.onRoomMemberName);
+ cli.on("Event.decrypted", this.onEventDecrypted);
cli.on("accountData", this.onAccountData);
+ cli.on("Group.myMembership", this._onGroupMyMembership);
this.refreshRoomList();
@@ -155,7 +156,9 @@ module.exports = React.createClass({
MatrixClientPeg.get().removeListener("Room.receipt", this.onRoomReceipt);
MatrixClientPeg.get().removeListener("RoomState.events", this.onRoomStateEvents);
MatrixClientPeg.get().removeListener("RoomMember.name", this.onRoomMemberName);
+ MatrixClientPeg.get().removeListener("Event.decrypted", this.onEventDecrypted);
MatrixClientPeg.get().removeListener("accountData", this.onAccountData);
+ MatrixClientPeg.get().removeListener("Group.myMembership", this._onGroupMyMembership);
}
// cancel any pending calls to the rate_limited_funcs
this._delayedRefreshRoomList.cancelPendingCall();
@@ -224,12 +227,21 @@ module.exports = React.createClass({
this._delayedRefreshRoomList();
},
+ onEventDecrypted: function(ev) {
+ // An event being decrypted may mean we need to re-order the room list
+ this._delayedRefreshRoomList();
+ },
+
onAccountData: function(ev) {
if (ev.getType() == 'm.direct') {
this._delayedRefreshRoomList();
}
},
+ _onGroupMyMembership: function(group) {
+ this.forceUpdate();
+ },
+
_delayedRefreshRoomList: new rate_limited_func(function() {
this.refreshRoomList();
}, 500),
@@ -544,8 +556,24 @@ module.exports = React.createClass({
}
},
+ _makeGroupInviteTiles() {
+ const ret = [];
+
+ const GroupInviteTile = sdk.getComponent('groups.GroupInviteTile');
+ for (const group of MatrixClientPeg.get().getGroups()) {
+ if (group.myMembership !== 'invite') continue;
+
+ ret.push(
);
+ }
+
+ return ret;
+ },
+
render: function() {
- var RoomSubList = sdk.getComponent('structures.RoomSubList');
+ const RoomSubList = sdk.getComponent('structures.RoomSubList');
+
+ const inviteSectionExtraTiles = this._makeGroupInviteTiles();
+
var self = this;
return (
+ onShowMoreRooms={ self.onShowMoreRooms }
+ extraTiles={ inviteSectionExtraTiles }
+ />
{
- this.forceUpdate();
- }, (err) => {
- this.setState({
- scalar_error: err
- });
- });
- }
-
dis.dispatch({
action: 'ui_opacity',
sideOpacity: 0.3,
@@ -157,8 +138,6 @@ module.exports = React.createClass({
},
componentWillUnmount: function() {
- ScalarMessaging.stopListening();
-
const cli = MatrixClientPeg.get();
if (cli) {
cli.removeListener("RoomMember.membership", this._onRoomMemberMembership);
@@ -308,6 +287,9 @@ module.exports = React.createClass({
promises.push(ps);
}
+ // related groups
+ promises.push(this.saveRelatedGroups());
+
// encryption
p = this.saveEnableEncryption();
if (!p.isFulfilled()) {
@@ -325,6 +307,11 @@ module.exports = React.createClass({
return this.refs.alias_settings.saveSettings();
},
+ saveRelatedGroups: function() {
+ if (!this.refs.related_groups) { return Promise.resolve(); }
+ return this.refs.related_groups.saveSettings();
+ },
+
saveColor: function() {
if (!this.refs.color_settings) { return Promise.resolve(); }
return this.refs.color_settings.saveSettings();
@@ -514,28 +501,6 @@ module.exports = React.createClass({
roomState.mayClientSendStateEvent("m.room.guest_access", cli));
},
- onManageIntegrations(ev) {
- ev.preventDefault();
- var IntegrationsManager = sdk.getComponent("views.settings.IntegrationsManager");
- Modal.createTrackedDialog('Integrations Manager', 'onManageIntegrations', IntegrationsManager, {
- src: (this.scalarClient !== null && this.scalarClient.hasCredentials()) ?
- this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room.roomId) :
- null,
- onFinished: ()=>{
- if (this._calcSavePromises().length === 0) {
- this.props.onCancelClick(ev);
- }
- },
- }, "mx_IntegrationsManager");
- },
-
- onShowIntegrationsError(ev) {
- ev.preventDefault();
- this.setState({
- showIntegrationsError: !this.state.showIntegrationsError,
- });
- },
-
onLeaveClick() {
dis.dispatch({
action: 'leave_room',
@@ -634,6 +599,7 @@ module.exports = React.createClass({
var AliasSettings = sdk.getComponent("room_settings.AliasSettings");
var ColorSettings = sdk.getComponent("room_settings.ColorSettings");
var UrlPreviewSettings = sdk.getComponent("room_settings.UrlPreviewSettings");
+ var RelatedGroupSettings = sdk.getComponent("room_settings.RelatedGroupSettings");
var EditableText = sdk.getComponent('elements.EditableText');
var PowerSelector = sdk.getComponent('elements.PowerSelector');
var Loader = sdk.getComponent("elements.Spinner");
@@ -666,6 +632,14 @@ module.exports = React.createClass({
var self = this;
+ let relatedGroupsSection;
+ if (UserSettingsStore.isFeatureEnabled('feature_groups')) {
+ relatedGroupsSection = ;
+ }
+
var userLevelsSection;
if (Object.keys(user_levels).length) {
userLevelsSection =
@@ -797,46 +771,10 @@ module.exports = React.createClass({
;
}
- let integrationsButton;
- let integrationsError;
-
- if (this.scalarClient !== null) {
- if (this.state.showIntegrationsError && this.state.scalar_error) {
- console.error(this.state.scalar_error);
- integrationsError = (
-
- { _t('Could not connect to the integration server') }
-
- );
- }
-
- if (this.scalarClient.hasCredentials()) {
- integrationsButton = (
-
- { _t('Manage Integrations') }
-
- );
- } else if (this.state.scalar_error) {
- integrationsButton = (
-
- Integrations Error
- { integrationsError }
-
- );
- } else {
- integrationsButton = (
-
- { _t('Manage Integrations') }
-
- );
- }
- }
-
return (
{ leaveButton }
- { integrationsButton }
{ tagsSection }
@@ -872,7 +810,7 @@ module.exports = React.createClass({
- {_t("List this room in %(domain)s's room directory?", { domain: MatrixClientPeg.get().getDomain() })}
+ {_t("Publish this room to the public in %(domain)s's room directory?", { domain: MatrixClientPeg.get().getDomain() })}
@@ -926,6 +864,8 @@ module.exports = React.createClass({
canonicalAliasEvent={this.props.room.currentState.getStateEvents('m.room.canonical_alias', '')}
aliasEvents={this.props.room.currentState.getStateEvents('m.room.aliases')} />
+ { relatedGroupsSection }
+
{ _t('Permissions') }
diff --git a/src/components/views/rooms/RoomTile.js b/src/components/views/rooms/RoomTile.js
index 97568a52a1..a6065d8e92 100644
--- a/src/components/views/rooms/RoomTile.js
+++ b/src/components/views/rooms/RoomTile.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2017 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.
@@ -27,6 +28,8 @@ var RoomNotifs = require('../../../RoomNotifs');
var FormattingUtils = require('../../../utils/FormattingUtils');
import AccessibleButton from '../elements/AccessibleButton';
var UserSettingsStore = require('../../../UserSettingsStore');
+import ActiveRoomObserver from '../../../ActiveRoomObserver';
+import RoomViewStore from '../../../stores/RoomViewStore';
module.exports = React.createClass({
displayName: 'RoomTile',
@@ -39,7 +42,6 @@ module.exports = React.createClass({
room: React.PropTypes.object.isRequired,
collapsed: React.PropTypes.bool.isRequired,
- selected: React.PropTypes.bool.isRequired,
unread: React.PropTypes.bool.isRequired,
highlight: React.PropTypes.bool.isRequired,
isInvite: React.PropTypes.bool.isRequired,
@@ -58,6 +60,7 @@ module.exports = React.createClass({
badgeHover : false,
menuDisplayed: false,
notifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId),
+ selected: this.props.room.roomId === RoomViewStore.getRoomId(),
});
},
@@ -87,8 +90,15 @@ module.exports = React.createClass({
}
},
+ _onActiveRoomChange: function() {
+ this.setState({
+ selected: this.props.room.roomId === RoomViewStore.getRoomId(),
+ });
+ },
+
componentWillMount: function() {
MatrixClientPeg.get().on("accountData", this.onAccountData);
+ ActiveRoomObserver.addListener(this.props.room.roomId, this._onActiveRoomChange);
},
componentWillUnmount: function() {
@@ -96,6 +106,7 @@ module.exports = React.createClass({
if (cli) {
MatrixClientPeg.get().removeListener("accountData", this.onAccountData);
}
+ ActiveRoomObserver.removeListener(this.props.room.roomId, this._onActiveRoomChange);
},
onClick: function(ev) {
@@ -174,7 +185,7 @@ module.exports = React.createClass({
var classes = classNames({
'mx_RoomTile': true,
- 'mx_RoomTile_selected': this.props.selected,
+ 'mx_RoomTile_selected': this.state.selected,
'mx_RoomTile_unread': this.props.unread,
'mx_RoomTile_unreadNotify': notifBadges,
'mx_RoomTile_highlight': mentionBadges,
@@ -221,7 +232,7 @@ module.exports = React.createClass({
'mx_RoomTile_badgeShown': badges || this.state.badgeHover || this.state.menuDisplayed,
});
- if (this.props.selected) {
+ if (this.state.selected) {
let nameSelected =
{name} ;
label =
{ nameSelected }
;
diff --git a/src/components/views/rooms/SimpleRoomHeader.js b/src/components/views/rooms/SimpleRoomHeader.js
index 8c06d71b6f..c47d219624 100644
--- a/src/components/views/rooms/SimpleRoomHeader.js
+++ b/src/components/views/rooms/SimpleRoomHeader.js
@@ -26,7 +26,7 @@ export function CancelButton(props) {
return (
+ width="18" height="18" alt={_t("Cancel")} />
);
}
diff --git a/src/components/views/settings/ChangePassword.js b/src/components/views/settings/ChangePassword.js
index f3c0d9033c..4fbae4b263 100644
--- a/src/components/views/settings/ChangePassword.js
+++ b/src/components/views/settings/ChangePassword.js
@@ -208,7 +208,7 @@ module.exports = React.createClass({
if (!this.state.cachedPassword) {
currentPassword =
- Current password
+ { _t('Current password') }
diff --git a/src/components/views/settings/DevicesPanelEntry.js b/src/components/views/settings/DevicesPanelEntry.js
index 69534f09b1..aa5a4f88a3 100644
--- a/src/components/views/settings/DevicesPanelEntry.js
+++ b/src/components/views/settings/DevicesPanelEntry.js
@@ -71,7 +71,7 @@ export default class DevicesPanelEntry extends React.Component {
// pop up an interactive auth dialog
var InteractiveAuthDialog = sdk.getComponent("dialogs.InteractiveAuthDialog");
- Modal.createTrackedDialog('Delete Device Dialog', InteractiveAuthDialog, {
+ Modal.createTrackedDialog('Delete Device Dialog', '', InteractiveAuthDialog, {
title: _t("Authentication"),
matrixClient: MatrixClientPeg.get(),
authData: error.data,
diff --git a/src/components/views/voip/CallPreview.js b/src/components/views/voip/CallPreview.js
new file mode 100644
index 0000000000..132e29bd34
--- /dev/null
+++ b/src/components/views/voip/CallPreview.js
@@ -0,0 +1,97 @@
+/*
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import RoomViewStore from '../../../stores/RoomViewStore';
+import CallHandler from '../../../CallHandler';
+import dis from '../../../dispatcher';
+import sdk from '../../../index';
+
+module.exports = React.createClass({
+ displayName: 'CallPreview',
+
+ propTypes: {
+ // A Conference Handler implementation
+ // Must have a function signature:
+ // getConferenceCallForRoom(roomId: string): MatrixCall
+ ConferenceHandler: React.PropTypes.object,
+ },
+
+ getInitialState: function() {
+ return {
+ roomId: RoomViewStore.getRoomId(),
+ activeCall: CallHandler.getAnyActiveCall(),
+ };
+ },
+
+ componentWillMount: function() {
+ this._roomStoreToken = RoomViewStore.addListener(this._onRoomViewStoreUpdate);
+ this.dispatcherRef = dis.register(this._onAction);
+ },
+
+ componentWillUnmount: function() {
+ if (this._roomStoreToken) {
+ this._roomStoreToken.remove();
+ }
+ dis.unregister(this.dispatcherRef);
+ },
+
+ _onRoomViewStoreUpdate: function(payload) {
+ if (RoomViewStore.getRoomId() === this.state.roomId) return;
+ this.setState({
+ roomId: RoomViewStore.getRoomId(),
+ });
+ },
+
+ _onAction: function(payload) {
+ switch (payload.action) {
+ // listen for call state changes to prod the render method, which
+ // may hide the global CallView if the call it is tracking is dead
+ case 'call_state':
+ this.setState({
+ activeCall: CallHandler.getAnyActiveCall(),
+ });
+ break;
+ }
+ },
+
+ _onCallViewClick: function() {
+ const call = CallHandler.getAnyActiveCall();
+ if (call) {
+ dis.dispatch({
+ action: 'view_room',
+ room_id: call.groupRoomId || call.roomId,
+ });
+ }
+ },
+
+ render: function() {
+ const callForRoom = CallHandler.getCallForRoom(this.state.roomId);
+ const showCall = (this.state.activeCall && this.state.activeCall.call_state === 'connected' && !callForRoom);
+
+ if (showCall) {
+ const CallView = sdk.getComponent('voip.CallView');
+ return (
+
+ );
+ }
+ return null;
+ },
+});
+
diff --git a/src/components/views/voip/CallView.js b/src/components/views/voip/CallView.js
index e669f7e0a6..37d111be93 100644
--- a/src/components/views/voip/CallView.js
+++ b/src/components/views/voip/CallView.js
@@ -129,17 +129,17 @@ module.exports = React.createClass({
if (this.state.call && this.state.call.type === "voice" && this.props.showVoice) {
const callRoom = MatrixClientPeg.get().getRoom(this.state.call.roomId);
voice = (
-
- {_t("Active call (%(roomName)s)", {roomName: callRoom.name})}
+
+ { _t("Active call (%(roomName)s)", {roomName: callRoom.name}) }
);
}
return (
-
{ voice }
diff --git a/src/components/views/voip/IncomingCallBox.js b/src/components/views/voip/IncomingCallBox.js
index c5934b74dc..c12924791a 100644
--- a/src/components/views/voip/IncomingCallBox.js
+++ b/src/components/views/voip/IncomingCallBox.js
@@ -62,17 +62,17 @@ module.exports = React.createClass({
- {incomingCallText}
+ { incomingCallText }
- {_t("Decline")}
+ { _t("Decline") }
- {_t("Accept")}
+ { _t("Accept") }
diff --git a/src/components/views/voip/VideoView.js b/src/components/views/voip/VideoView.js
index 6ebf2078c1..8f062d27ae 100644
--- a/src/components/views/voip/VideoView.js
+++ b/src/components/views/voip/VideoView.js
@@ -110,13 +110,13 @@ module.exports = React.createClass({
const maxVideoHeight = fullscreenElement ? null : this.props.maxHeight;
return (
-
+
);
diff --git a/src/createRoom.js b/src/createRoom.js
index 944c6a70a1..ffe3a85c4e 100644
--- a/src/createRoom.js
+++ b/src/createRoom.js
@@ -79,12 +79,6 @@ function createRoom(opts) {
const modal = Modal.createDialog(Loader, null, 'mx_Dialog_spinner');
let roomId;
- if (opts.andView) {
- // We will possibly have a successful join, indicate as such
- dis.dispatch({
- action: 'will_join',
- });
- }
return client.createRoom(createOpts).finally(function() {
modal.close();
}).then(function(res) {
@@ -104,8 +98,10 @@ function createRoom(opts) {
action: 'view_room',
room_id: roomId,
should_peek: false,
- // Creating a room will have joined us to the room
- joined: true,
+ // Creating a room will have joined us to the room,
+ // so we are expecting the room to come down the sync
+ // stream, if it hasn't already.
+ joining: true,
});
}
return roomId;
diff --git a/src/groups.js b/src/groups.js
new file mode 100644
index 0000000000..69871c45e9
--- /dev/null
+++ b/src/groups.js
@@ -0,0 +1,47 @@
+/*
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import PropTypes from 'prop-types';
+
+export const GroupMemberType = PropTypes.shape({
+ userId: PropTypes.string.isRequired,
+ displayname: PropTypes.string,
+ avatarUrl: PropTypes.string,
+});
+
+export const GroupRoomType = PropTypes.shape({
+ name: PropTypes.string,
+ roomId: PropTypes.string.isRequired,
+ canonicalAlias: PropTypes.string,
+ avatarUrl: PropTypes.string,
+});
+
+export function groupMemberFromApiObject(apiObject) {
+ return {
+ userId: apiObject.user_id,
+ displayname: apiObject.displayname,
+ avatarUrl: apiObject.avatar_url,
+ };
+}
+
+export function groupRoomFromApiObject(apiObject) {
+ return {
+ name: apiObject.name,
+ roomId: apiObject.room_id,
+ canonicalAlias: apiObject.canonical_alias,
+ avatarUrl: apiObject.avatar_url,
+ };
+}
diff --git a/src/i18n/strings/ar.json b/src/i18n/strings/ar.json
index c1aba2edeb..807629ef64 100644
--- a/src/i18n/strings/ar.json
+++ b/src/i18n/strings/ar.json
@@ -1,5 +1,4 @@
{
- "ar-iq": "العربية",
"Continue": "استمر",
"Username available": "اسم المستخدم متاح",
"Username not available": "الإسم المستخدم غير موجود",
@@ -8,6 +7,5 @@
"Close": "إغلاق",
"Create new room": "إنشاء غرفة جديدة",
"Custom Server Options": "إعدادات السيرفر خاصة",
- "Direct Chat": "دردشة مباشرة",
"Dismiss": "صرف النظر"
}
diff --git a/src/i18n/strings/basefile.json b/src/i18n/strings/basefile.json
index 9e26dfeeb6..0967ef424b 100644
--- a/src/i18n/strings/basefile.json
+++ b/src/i18n/strings/basefile.json
@@ -1 +1 @@
-{}
\ No newline at end of file
+{}
diff --git a/src/i18n/strings/be.json b/src/i18n/strings/be.json
index 9e26dfeeb6..0967ef424b 100644
--- a/src/i18n/strings/be.json
+++ b/src/i18n/strings/be.json
@@ -1 +1 @@
-{}
\ No newline at end of file
+{}
diff --git a/src/i18n/strings/ca.json b/src/i18n/strings/ca.json
new file mode 100644
index 0000000000..c4244eae92
--- /dev/null
+++ b/src/i18n/strings/ca.json
@@ -0,0 +1,65 @@
+{
+ "People": "Gent",
+ "Add a widget": "Afegeix un giny",
+ "af": "Afrikaans",
+ "ar-ae": "Àrab (Emirats Àrabs Units)",
+ "ar-bh": "Àrab (Bahrain)",
+ "ar-dz": "Àrab (Algèria)",
+ "ar-eg": "Àrab (Egipte)",
+ "ar-iq": "Àrab (Iraq)",
+ "ar-jo": "Àrab (Jordània)",
+ "ar-kw": "Àrab (Kuwait)",
+ "ar-lb": "Àrab (Líban)",
+ "ar-ly": "Àrab (Líbia)",
+ "ar-ma": "Àrab (Marroc)",
+ "ar-om": "Àrab (Oman)",
+ "ar-qa": "Àrab (Qatar)",
+ "ar-sa": "Àrab (Aràbia Saudita)",
+ "ca": "Català",
+ "cs": "Txec",
+ "de-at": "Alemany (Àustria)",
+ "de-ch": "Alemany (Suïssa)",
+ "de": "Alemany",
+ "de-li": "Alemany (Liechtenstein)",
+ "el": "Grec",
+ "de-lu": "Alemany (Luxemburg)",
+ "en-au": "Anglès (Austràlia)",
+ "Account": "Compte",
+ "VoIP": "Veu IP",
+ "No Microphones detected": "No s'ha detectat cap micròfon",
+ "No Webcams detected": "No s'ha detectat cap càmera web",
+ "Microphone": "Micròfon",
+ "Camera": "Càmera",
+ "Advanced": "Avançat",
+ "Algorithm": "Algoritme",
+ "Hide removed messages": "Amaga els missatges esborrats",
+ "Always show message timestamps": "Mostra sempre la marca de temps del missatge",
+ "Alias (optional)": "Àlies (opcional)",
+ "and": "i",
+ "An email has been sent to": "S'ha enviat un correu electrònic a",
+ "Cancel": "Cancel·la",
+ "Close": "Tanca",
+ "Create new room": "Crea una nova sala",
+ "Error": "Error",
+ "Failed to forget room %(errCode)s": "No s'ha pogut oblidar la sala %(errCode)s",
+ "Favourite": "Favorit",
+ "Mute": "Silenciat",
+ "Room directory": "Directori de sales",
+ "Settings": "Paràmetres",
+ "Start chat": "Inicia un xat",
+ "Failed to change password. Is your password correct?": "Hi ha hagut un error al canviar la vostra contrasenya. És correcte la vostra contrasenya?",
+ "Continue": "Continua",
+ "Custom Server Options": "Opcions de servidor personalitzat",
+ "Dismiss": "Omet",
+ "Notifications": "Notificacions",
+ "Remove": "Elimina",
+ "unknown error code": "codi d'error desconegut",
+ "Sunday": "Diumenge",
+ "Monday": "Dilluns",
+ "Tuesday": "Dimarts",
+ "Wednesday": "Dimecres",
+ "Thursday": "Dijous",
+ "Friday": "Divendres",
+ "Saturday": "Dissabte",
+ "OK": "D'acord"
+}
diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json
new file mode 100644
index 0000000000..16726cd61d
--- /dev/null
+++ b/src/i18n/strings/cs.json
@@ -0,0 +1,218 @@
+{
+ "Close": "Zavřít",
+ "Favourites": "Oblíbené",
+ "Filter room members": "Filtrovat členy místnosti",
+ "Historical": "Historické",
+ "Home": "Úvod",
+ "%(displayName)s is typing": "%(displayName)s právě píše",
+ "Jump to first unread message.": "Přeskočit na první nepřečtenou zprávu.",
+ "Logout": "Odhlásit se",
+ "Low priority": "Nízká priorita",
+ "Notifications": "Upozornění",
+ "People": "Lidé",
+ "Rooms": "Místnosti",
+ "Scroll to unread messages": "Přejít k nepřečteným zprávám",
+ "Search": "Hledání",
+ "Send a message (unencrypted)": "Poslat zprávu (nezašifrovaně)",
+ "Settings": "Nastavení",
+ "Start Chat": "Začít chat",
+ "This room": "Tato místnost",
+ "Unencrypted room": "Nezašifrovaná místnost",
+ "Failed to upload file": "Nahrání souboru se nezdařilo",
+ "Video call": "Videohovor",
+ "Voice call": "Telefonát",
+ "Sun": "Ne",
+ "Mon": "Po",
+ "Tue": "Út",
+ "Wed": "St",
+ "Thu": "Čt",
+ "Fri": "Pá",
+ "Sat": "So",
+ "Jan": "Led",
+ "Feb": "Úno",
+ "Mar": "Bře",
+ "Apr": "Dub",
+ "May": "Kvě",
+ "Jun": "Čvn",
+ "Jul": "Čvc",
+ "Aug": "Srp",
+ "Sep": "Zář",
+ "Oct": "Říj",
+ "Nov": "Lis",
+ "Dec": "Pro",
+ "There are no visible files in this room": "V této místnosti nejsou žádné viditelné soubory",
+ "Create new room": "Založit novou místnost",
+ "Room directory": "Adresář místností",
+ "Start chat": "Začít chat",
+ "Options": "Možnosti",
+ "Register": "Zaregistrovat",
+ "Cancel": "Storno",
+ "Error": "Chyba",
+ "Favourite": "V oblíbených",
+ "Mute": "Ztišit",
+ "Continue": "Pokračovat",
+ "Failed to change password. Is your password correct?": "Nepodařilo se změnit heslo. Je vaše heslo správné?",
+ "Operation failed": "Chyba operace",
+ "Remove": "Odebrat",
+ "unknown error code": "neznámý kód chyby",
+ "Sunday": "Neděle",
+ "Monday": "Pondělí",
+ "Tuesday": "Úterý",
+ "Wednesday": "Středa",
+ "Thursday": "Čtvrtek",
+ "Friday": "Pátek",
+ "Saturday": "Sobota",
+ "OK": "OK",
+ "Failed to forget room %(errCode)s": "Nepodařilo se zapomenout místnost %(errCode)s",
+ "Dismiss": "Zahodit",
+ "powered by Matrix": "poháněno Matrixem",
+ "Custom Server Options": "Vlastní serverové volby",
+ "to favourite": "oblíbíte",
+ "to demote": "upozadíte",
+ "Drop here %(toAction)s": "Přetažením sem %(toAction)s",
+ "Add a widget": "Přidat widget",
+ "a room": "místnost",
+ "Accept": "Přijmout",
+ "%(targetName)s accepted an invitation.": "%(targetName)s přijal/a pozvání.",
+ "Account": "Účet",
+ "Access Token:": "Přístupový žeton:",
+ "Add": "Přidat",
+ "Add a topic": "Přidat téma",
+ "Add email address": "Přidat e-mailovou adresu",
+ "Add phone number": "Přidat telefonní číslo",
+ "Admin": "Správce",
+ "Admin tools": "Nástroje pro správu",
+ "Allow": "Povolit",
+ "VoIP": "VoIP",
+ "No Microphones detected": "Nerozpoznány žádné mikrofony",
+ "No Webcams detected": "Nerozpoznány žádné webkamery",
+ "Default Device": "Výchozí zařízení",
+ "Microphone": "Mikrofon",
+ "Camera": "Kamera",
+ "Advanced": "Pokročilé",
+ "Algorithm": "Algoritmus",
+ "Hide removed messages": "Skrýt odstraněné zprávy",
+ "Always show message timestamps": "Vždy zobrazovat časové značky zpráv",
+ "Authentication": "Ověření",
+ "and": "a",
+ "A new password must be entered.": "Musíte zadat nové heslo.",
+ "An error has occurred.": "Nastala chyba.",
+ "Anyone": "Kdokoliv",
+ "Are you sure?": "Určitě?",
+ "Are you sure you want to leave the room '%(roomName)s'?": "Určitě chcete odejít z místnosti '%(roomName)s'?",
+ "Are you sure you want to reject the invitation?": "Určitě chcete odmítnout pozvání?",
+ "Are you sure you want to upload the following files?": "Určitě chcete nahrát následující soubory?",
+ "Attachment": "Příloha",
+ "Autoplay GIFs and videos": "Automaticky přehrávat GIFy a videa",
+ "Bug Report": "Hlášení o chybě",
+ "Can't connect to homeserver - please check your connectivity, ensure your
homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nelze se připojit k domovskému serveru – zkontrolujte prosím své připojení, prověřte, zdali je
SSL certifikát vašeho domovského serveru důvěryhodný, a že některé z rozšíření prohlížeče neblokuje komunikaci.",
+ "Anyone who knows the room's link, apart from guests": "Kdokoliv, kdo má odkaz na místnost, kromě hostů",
+ "Anyone who knows the room's link, including guests": "Kdokoliv, kdo má odkaz na místnost, a to i hosté",
+ "Banned users": "Vykázaní uživatelé",
+ "Ban": "Vykázat",
+ "Bans user with given id": "Vykáže uživatele s daným id",
+ "Bulk Options": "Hromadné volby",
+ "Can't load user settings": "Nelze načíst uživatelské nastavení",
+ "Cannot add any more widgets": "Nelze přidat žádné další widgety",
+ "Change Password": "Změnit heslo",
+ "%(senderName)s changed their profile picture.": "%(senderName)s změnil/a svůj profilový obrázek.",
+ "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s změnil/a název místnosti na %(roomName)s.",
+ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s odstranil/a název místnosti.",
+ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s změnil/a téma na \"%(topic)s\".",
+ "Changes to who can read history will only apply to future messages in this room": "Změny viditelnosti historie budou platné až pro budoucí zprávy v této místnosti",
+ "Changes your display nickname": "Změní vaši zobrazovanou přezdívku",
+ "Changes colour scheme of current room": "Změní barevné schéma aktuální místnosti",
+ "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.": "V současnosti změna hesla resetuje všechny šifrovací klíče na všech zařízeních, což vám znepřístupní historii zašifrovaných chatů, pokud si nejprve nevyexportujete klíče svých místností a pak je do nich znova nevložíte. Toto bude v budoucnu lépe ošetřeno.",
+ "Clear Cache and Reload": "Vymazat vyrovnávací paměť a načíst znovu",
+ "Clear Cache": "Vymazat vyrovnávací paměť",
+ "
Click here to join the discussion!": "
Kliknutím zde se přidáte k diskuzi!",
+ "Command error": "Chyba příkazu",
+ "Commands": "Příkazy",
+ "Conference call failed.": "Konferenční hovor selhal.",
+ "Conference calling is in development and may not be reliable.": "Konferenční hovory jsou stále ve vývoji a nemusí být spolehlivé.",
+ "Conference calls are not supported in encrypted rooms": "V šifrovaných místnostech nejsou konferenční hovory podporovány",
+ "Conference calls are not supported in this client": "V tomto klientovi nejsou konferenční hovory podporovány",
+ "Confirm password": "Potvrďte heslo",
+ "Confirm your new password": "Potvrďte své nové heslo",
+ "Could not connect to the integration server": "Nepodařilo se spojit se začleňovacím serverem",
+ "%(count)s new messages|one": "%(count)s nová zpráva",
+ "%(count)s new messages|other": "%(count)s nových zpráv",
+ "Create an account": "Vytvořit účet",
+ "Create Room": "Vytvořit místnost",
+ "Cryptography": "Kryptografie",
+ "Current password": "Současné heslo",
+ "Custom": "Vlastní",
+ "Custom level": "Vlastní úroveň",
+ "/ddg is not a command": "/ddg není příkazem",
+ "Deactivate Account": "Deaktivovat účet",
+ "Deactivate my account": "Deaktivovat můj účet",
+ "Decline": "Odmítnout",
+ "Decrypt %(text)s": "Dešifrovat %(text)s",
+ "Decryption error": "Chyba dešifrování",
+ "Delete": "Vymazat",
+ "Delete widget": "Vymazat widget",
+ "Default": "Výchozí",
+ "Device already verified!": "Zařízení již bylo ověřeno!",
+ "Device ID": "ID zařízení",
+ "Device ID:": "ID zařízení:",
+ "device id: ": "id zařízení: ",
+ "Device key:": "Klíč zařízení:",
+ "Devices": "Zařízení",
+ "Direct chats": "Přímé chaty",
+ "Disable Notifications": "Vypnout upozornění",
+ "disabled": "vypnuto",
+ "Disinvite": "Odvolat pozvání",
+ "Display name": "Zobrazované jméno",
+ "Don't send typing notifications": "Neupozorňovat ostatní, že píšu",
+ "Download %(text)s": "Stáhnout %(text)s",
+ "Drop File Here": "Přetáhněte soubor sem",
+ "Edit": "Upravit",
+ "Email": "E-mail",
+ "Email address": "E-mailová adresa",
+ "Email address (optional)": "E-mailová adresa (nepovinná)",
+ "Email, name or matrix ID": "E-mail, jméno nebo matrix ID",
+ "Emoji": "Emodži",
+ "Enable automatic language detection for syntax highlighting": "Zapnout kvůli zvýrazňování syntaxe automatické rozpoznávání jazyka",
+ "Enable encryption": "Zapnout šifrování",
+ "Enable Notifications": "Zapnout upozornění",
+ "enabled": "zapnuto",
+ "Encrypted by a verified device": "Zašifrováno ověřeným zařízením",
+ "Encrypted by an unverified device": "Zašifrováno neověřeným zařízením",
+ "Encrypted messages will not be visible on clients that do not yet implement encryption": "Zašifrované zprávy nepůjde vidět v klientech, kteří šifrování ještě nezavedli",
+ "Encrypted room": "Zašifrovaná místnost",
+ "Encryption is enabled in this room": "V této místnosti je zapnuto šifrování",
+ "Encryption is not enabled in this room": "V této místnosti není zapnuto šifrování",
+ "%(senderName)s ended the call.": "%(senderName)s ukončil/a hovor.",
+ "End-to-end encryption information": "Informace o end-to-end šifrování",
+ "End-to-end encryption is in beta and may not be reliable": "End-to-end šifrování je v raném vývoji a nemusí být spolehlivé",
+ "Enter Code": "Zadejte kód",
+ "Enter passphrase": "Zadejte heslo",
+ "Error decrypting attachment": "Chyba při dešifrování přílohy",
+ "Error: Problem communicating with the given homeserver.": "Chyba: problém v komunikaci s daným domovským serverem.",
+ "Event information": "Informace o události",
+ "Existing Call": "Probíhající hovor",
+ "Export": "Exportovat",
+ "Export E2E room keys": "Exportovat E2E klíče místnosti",
+ "Failed to ban user": "Nepodařilo se vykázat uživatele",
+ "Failed to delete device": "Nepodařilo se vymazat zařízení",
+ "Failed to join room": "Vstup do místnosti se nezdařil",
+ "Failed to kick": "Vykopnutí se nezdařilo",
+ "Failed to leave room": "Opuštění místnosti se nezdařilo",
+ "Failed to mute user": "Ztlumení uživatele se nezdařilo",
+ "Failed to send email": "Odeslání e-mailu se nezdařilo",
+ "Failed to save settings": "Uložení nastavení se nezdařilo",
+ "Failed to reject invitation": "Odmítnutí pozvánky se nezdařilo",
+ "Failed to reject invite": "Odmítnutí pozvání se nezdařilo",
+ "Failed to register as guest:": "Registrace jako host se nezdařila:",
+ "Failed to send request.": "Odeslání žádosti se nezdařilo.",
+ "Failed to set avatar.": "Nastavení avataru se nezdařilo.",
+ "Failed to set display name": "Nastavení zobrazovaného jména se nezdařilo",
+ "Failed to set up conference call": "Nastavení konferenčního hovoru se nezdařilo",
+ "Failed to toggle moderator status": "Změna statusu moderátora se nezdařila",
+ "Failed to unban": "Odvolání vykázání se nezdařilo",
+ "Failed to upload profile picture!": "Nahrání profilového obrázku se nezdařilo",
+ "Failure to create room": "Vytvoření místnosti se nezdařilo",
+ "Forget room": "Zapomenout místnost",
+ "Forgot your password?": "Zapomněl/a jste své heslo?",
+ "For security, this session has been signed out. Please sign in again.": "Z bezpečnostních důvodů bylo toto přihlášení ukončeno. Přihlašte se prosím znovu."
+}
diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json
index 8ac311d315..166f5ad35d 100644
--- a/src/i18n/strings/da.json
+++ b/src/i18n/strings/da.json
@@ -56,14 +56,10 @@
"Add phone number": "Tilføj telefonnummer",
"Admin": "Administrator",
"Advanced": "Avanceret",
- "all room members": "Alle rum medlemmer",
- "all room members, from the point they are invited": "Alle rum medlemmer, siden invitations-tidspunkt",
- "all room members, from the point they joined": "Alle rum medlemmer, siden de deltog",
"an address": "en adresse",
"and": "og",
"An email has been sent to": "En e-mail blev sendt til",
"answered the call.": "svarede på kaldet",
- "anyone": "alle",
"Anyone who knows the room's link, apart from guests": "Alle der kender link til rummet, bortset fra gæster",
"Anyone who knows the room's link, including guests": "Alle der kender link til rummet, inklusiv gæster",
"Are you sure you want to leave the room?": "Er du sikker på du vil forlade rummet?",
@@ -100,7 +96,6 @@
"Default": "Standard",
"demote": "degradere",
"Devices will not yet be able to decrypt history from before they joined the room": "Enhederne vil ikke være i stand til at dekryptere historikken fra, før de kom til rummet",
- "Direct Chat": "Personligt Chat",
"Disable inline URL previews by default": "Deaktiver forrige weblinks forhåndsvisninger som standard",
"Display name": "Visningsnavn",
"Email Address": "Email adresse",
@@ -122,7 +117,6 @@
"Failed to unban": "Var ikke i stand til at ophæve forbuddet",
"Favourite": "Favorit",
"Notifications": "Meddelser",
- "Please Register": "Vær venlig at registrere",
"Remove": "Fjerne",
"Settings": "Indstillinger",
"unknown error code": "Ukendt fejlkode",
@@ -137,78 +131,45 @@
"%(names)s and one other are typing": "%(names)s og den anden skriver",
"%(names)s and %(count)s others are typing": "%(names)s og %(count)s andre skriver",
"%(senderName)s answered the call.": "%(senderName)s besvarede opkaldet.",
- "af": "Afrikaans",
- "ar-eg": "Arabisk (Egypten)",
- "ar-ma": "Arabisk (Marokko)",
- "ar-sa": "Arabisk (Saudiarabien",
- "ar-sy": "Arabisk (Syrien)",
- "be": "Hviderussisk",
- "bg": "Bulgarisk",
- "ca": "Katalansk",
- "cs": "Tjekkisk",
- "de-at": "Tysk (Østrig)",
- "de-ch": "Tysk (Schweitz)",
- "el": "Græsk",
- "en-au": "Engelsk (Australien)",
- "en-ca": "Engelsk (Canada)",
- "en-ie": "Engelsk (Irland)",
- "en-nz": "Engelsk (New Zealand)",
- "en-us": "Engelsk (USA)",
- "en-za": "Engelsk (Sydafrika)",
- "es-ar": "Spansk (Argentina)",
- "es-bo": "Spansk (Bolivia)",
- "es-cl": "Spansk (Chile)",
- "es-ec": "Spansk (Ecuador)",
- "es-hn": "Spansk (Honduras)",
- "es-mx": "Spansk (Mexico)",
- "es-ni": "Spansk (Nicaragua)",
- "es-py": "Spansk (Paraguay)",
- "es": "Spansk (Spanien)",
- "es-uy": "Spansk (Uruguay)",
- "es-ve": "Spansk (Venezuela)",
- "et": "Estonsk",
- "fa": "Farsi",
- "fi": "Finsk",
- "fr-be": "Fransk (Belgien)",
- "fr-ca": "Fransk (Canada)",
- "fr-ch": "Fransk (Schweitz)",
- "fr": "French",
- "ga": "Irsk",
- "he": "Hebræisk",
- "hi": "Hindi",
- "hr": "Kroatisk",
- "hu": "Ungarsk",
- "id": "Indonesisk",
- "is": "Islandsk",
- "it": "Italian",
- "ja": "Japansk",
- "ji": "Yiddish",
- "lt": "Littauisk",
- "lv": "Lettisk",
- "ms": "Malaysisk",
- "mt": "Maltesisk",
- "nl": "Dutch",
- "no": "Norsk",
- "pl": "Polsk",
- "pt": "Portuguese",
- "ro": "Rumænsk",
- "sb": "Sorbisk",
- "sk": "Slovakisk",
- "sl": "Slovensk",
- "sq": "Albansk",
- "sr": "Serbisk (Latin)",
- "sv": "Svensk",
- "th": "Thai",
- "tn": "Tswana",
- "tr": "Tyrkisk",
- "ts": "Tonga",
- "uk": "Ukrainsk",
- "ur": "Urdu",
- "ve": "Venda",
- "vi": "Vietnamesisk",
- "xh": "Xhosa",
- "zh-cn": "Kinesisk (Folkerepublikken Kina)",
- "zh-sg": "Kinesisk (Singapore)",
- "zh-tw": "Kinesisk (Taiwan)",
- "zu": "Zulu"
+ "Add a widget": "Tilføj en widget",
+ "ar-ae": "Arabisk (U.A.E.)",
+ "ar-bh": "Arabisk (Bahrain)",
+ "ar-dz": "Arabisk (Algeriet)",
+ "ar-iq": "Arabisk (Irak)",
+ "ar-jo": "Arabisk (Jordan)",
+ "ar-kw": "Arabisk (Kuwait)",
+ "ar-lb": "Arabisk (Libanon)",
+ "ar-ly": "Arabisk (Libyen)",
+ "ar-om": "Arabisk (Oman)",
+ "ar-qa": "Arabisk (Qatar)",
+ "ar-ye": "Arabisk (Jemen)",
+ "ar-tn": "Arabisk (Tunesien)",
+ "de-li": "Tysk (Liechtenstein)",
+ "de-lu": "Tysk (Luxembourg)",
+ "en-bz": "Engelsk (Belize)",
+ "en-gb": "Engelsk (United Kingdom)",
+ "en-jm": "Engelsk (Jamaica)",
+ "en-tt": "Engelsk (Trinidad)",
+ "es-co": "Spansk (Colombia)",
+ "es-cr": "Spansk (Costa Rica)",
+ "es-do": "Spansk (Dominikanske Republik)",
+ "es-gt": "Spansk (Guatemala)",
+ "es-pa": "Spansk (Panama)",
+ "es-pe": "Spansk (Peru)",
+ "es-pr": "Spansk (Puerto Rico)",
+ "es-sv": "Spansk (El Salvador)",
+ "eu": "Baskisk (Baskien)",
+ "fo": "Færøsk",
+ "fr-lu": "Fransk (Luxembourg)",
+ "gd": "Gælisk (Skotland)",
+ "it-ch": "Italiensk (Schweiz)",
+ "ko": "Koreansk",
+ "mk": "Makedonsk (FYROM)",
+ "nl-be": "Nederlandsk (Belgien)",
+ "rm": "Rætoromansk",
+ "ro-mo": "Rumænsk (Republikken Moldova)",
+ "ru-mo": "Russisk (Republikken Moldova)",
+ "sv-fi": "Svensk (Finland)",
+ "sx": "Sutu",
+ "sz": "Samisk (Lappisk)"
}
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 8cd9498880..aa114e241d 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -9,7 +9,7 @@
"Historical": "Archiv",
"New passwords must match each other.": "Die neuen Passwörter müssen identisch sein.",
"A new password must be entered.": "Es muss ein neues Passwort eingegeben werden.",
- "The email address linked to your account must be entered.": "Es muss die mit dem Benutzerkonto verbundene Email-Adresse eingegeben werden.",
+ "The email address linked to your account must be entered.": "Es muss die mit dem Benutzerkonto verbundene E-Mail-Adresse eingegeben werden.",
"Failed to send email: ": "Email konnte nicht versendet werden: ",
"unknown device": "Unbekanntes Gerät",
"NOT verified": "NICHT verifiziert",
@@ -21,21 +21,21 @@
"Ed25519 fingerprint": "Ed25519-Fingerprint",
"User ID": "Benutzer-ID",
"Curve25519 identity key": "Curve25519-Identitäts-Schlüssel",
- "Claimed Ed25519 fingerprint key": "Geforderter Ed25519 Fingerprint Schlüssel",
+ "Claimed Ed25519 fingerprint key": "Geforderter Ed25519-Fingerprint-Schlüssel",
"none": "keiner",
"Algorithm": "Algorithmus",
"unencrypted": "unverschlüsselt",
"Decryption error": "Entschlüsselungs Fehler",
"Session ID": "Sitzungs-ID",
- "End-to-end encryption information": "Ende-zu-Ende-Verschlüsselungs-Informationen",
+ "End-to-end encryption information": "Informationen zur Ende-zu-Ende-Verschlüsselung",
"Event information": "Ereignis-Information",
- "Sender device information": "Absender Geräte Informationen",
+ "Sender device information": "Geräte-Informationen des Absenders",
"Displays action": "Zeigt Aktionen an",
- "Bans user with given id": "Schließt den Benutzer mit der angegebenen ID dauerhaft aus dem Raum aus",
+ "Bans user with given id": "Verbannt den Benutzer mit der angegebenen ID",
"Deops user with given id": "Entfernt OP beim Benutzer mit der angegebenen ID",
"Invites user with given id to current room": "Lädt den Benutzer mit der angegebenen ID in den aktuellen Raum ein",
"Joins room with given alias": "Betrete Raum mit angegebenen Alias",
- "Kicks user with given id": "Entfernt den Benutzer mit der angegebenen ID aus dem Raum",
+ "Kicks user with given id": "Benutzer mit der angegebenen ID kicken",
"Changes your display nickname": "Ändert deinen angezeigten Nicknamen",
"Change Password": "Passwort ändern",
"Searches DuckDuckGo for results": "Verwendet DuckDuckGo für Suchergebnisse",
@@ -49,24 +49,21 @@
"Send an encrypted message": "Verschlüsselte Nachricht senden",
"Send a message (unencrypted)": "Nachricht senden (unverschlüsselt)",
"Warning!": "Warnung!",
- "Direct Chat": "Direkt-Chat",
"Error": "Fehler",
"accept": "akzeptiere",
"accepted an invitation": "Einladung akzeptieren",
"accepted the invitation for": "Akzeptierte die Einladung für",
"Add email address": "E-Mail-Adresse hinzufügen",
"Advanced": "Erweitert",
- "all room members, from the point they joined": "alle Raum-Mitglieder (ab dem Zeitpunkt, an dem sie beigetreten sind)",
"and": "und",
"An email has been sent to": "Eine E-Mail wurde gesendet an",
- "anyone": "Jeder",
"Anyone who knows the room's link, apart from guests": "Alle, denen der Raum-Link bekannt ist (ausgenommen Gäste)",
"Anyone who knows the room's link, including guests": "Alle, denen der Raum-Link bekannt ist (auch Gäste)",
"Are you sure you want to leave the room?": "Bist du sicher, dass du den Raum verlassen willst?",
"Are you sure you want to reject the invitation?": "Bist du sicher, dass du die Einladung ablehnen willst?",
"Are you sure you want to upload the following files?": "Bist du sicher, dass du die folgenden Dateien hochladen möchtest?",
"banned": "gebannt",
- "Banned users": "Dauerhaft aus dem Raum ausgeschlossene Benutzer",
+ "Banned users": "Verbannte Benutzer",
"Bug Report": "Fehlerbericht",
"changed avatar": "änderte Avatar",
"changed their display name from": "änderte seinen Anzeigenamen von",
@@ -84,7 +81,7 @@
"Deactivate Account": "Benutzerkonto deaktivieren",
"Deactivate my account": "Mein Benutzerkonto deaktivieren",
"decline": "Ablehnen",
- "Devices will not yet be able to decrypt history from before they joined the room": "Geräte werden nicht in der Lage sein, den Chatverlauf vor dem Betreten des Raumes zu entschlüsseln",
+ "Devices will not yet be able to decrypt history from before they joined the room": "Geräte werden nicht in der Lage sein, den bisherigen Chatverlauf vor dem Betreten des Raumes zu entschlüsseln",
"Display name": "Anzeigename",
"Email Address": "E-Mail-Adresse",
"Email, name or matrix ID": "E-Mail, Name oder Matrix-ID",
@@ -95,12 +92,10 @@
"ended the call.": "beendete den Anruf.",
"End-to-end encryption is in beta and may not be reliable": "Die Ende-zu-Ende-Verschlüsselung befindet sich aktuell im Beta-Stadium und ist eventuell noch nicht hundertprozentig zuverlässig",
"Failed to send email": "Fehler beim Senden der E-Mail",
- "Account": "Konto",
+ "Account": "Benutzerkonto",
"Add phone number": "Telefonnummer hinzufügen",
"an address": "an Adresse",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Dein Passwort wurde erfolgreich geändert. Du wirst erst Benachrichtigungen auf anderen Geräten empfangen können, wenn du dich dort erneut anmeldest",
- "all room members": "Alle Raum-Mitglieder",
- "all room members, from the point they are invited": "alle Raum-Mitglieder (ab dem Zeitpunkt, an dem sie eingeladen wurden)",
"answered the call.": "beantwortete den Anruf.",
"Can't load user settings": "Benutzereinstellungen können nicht geladen werden",
"changed name": "änderte Namen",
@@ -116,7 +111,7 @@
"Failed to leave room": "Verlassen des Raums fehlgeschlagen",
"Failed to reject invitation": "Einladung konnte nicht abgelehnt werden",
"Failed to set avatar.": "Fehler beim Setzen des Profilbilds.",
- "Failed to unban": "Dauerhaftes Ausschließen aus dem Raum konnte nicht aufgehoben werden",
+ "Failed to unban": "Aufheben der Verbannung fehlgeschlagen",
"Failed to upload file": "Datei-Upload fehlgeschlagen",
"Favourite": "Favorit",
"favourite": "Favorit",
@@ -126,8 +121,6 @@
"For security, this session has been signed out. Please sign in again.": "Aus Sicherheitsgründen wurde diese Sitzung beendet. Bitte melde dich erneut an.",
"Found a bug?": "Fehler gefunden?",
"Guests cannot join this room even if explicitly invited.": "Gäste können diesem Raum nicht beitreten, auch wenn sie explizit eingeladen wurden.",
- "Guests can't set avatars. Please register.": "Gäste können kein Profilbild setzen. Bitte registrieren.",
- "Guest users can't upload files. Please register to upload.": "Gäste können keine Dateien hochladen. Bitte zunächst registrieren.",
"had": "hatte",
"Hangup": "Auflegen",
"Homeserver is": "Home-Server:",
@@ -149,7 +142,6 @@
"left the room": "verließ den Raum",
"Logged in as": "Angemeldet als",
"Logout": "Abmelden",
- "made future room history visible to": "mache kommende Raum-Historie sichtbar für",
"Manage Integrations": "Integrationen verwalten",
"Members only": "Nur Mitglieder",
"Mobile phone number": "Mobiltelefonnummer",
@@ -173,13 +165,12 @@
"Phone": "Telefon",
"placed a": "plazierte einen",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Bitte prüfe deinen E-Mail-Posteingang und klicke auf den in der E-Mail enthaltenen Link. Anschließend auf \"Fortsetzen\" klicken.",
- "Please Register": "Bitte registrieren",
"Privacy warning": "Datenschutzwarnung",
"Privileged Users": "Privilegierte Nutzer",
"Profile": "Profil",
"Refer a friend to Riot:": "Freunde zu Riot einladen:",
"rejected": "abgelehnt",
- "Once you've followed the link it contains, click below": "Nachdem du dem darin enthaltenen Link gefolgt bist, klicke unten",
+ "Once you've followed the link it contains, click below": "Nachdem du dem darin enthaltenen Link gefolgt bist, klicke unten",
"rejected the invitation.": "lehnte die Einladung ab.",
"Reject invitation": "Einladung ablehnen",
"Remove Contact Information?": "Kontakt-Informationen entfernen?",
@@ -221,16 +212,15 @@
"This is a preview of this room. Room interactions have been disabled": "Dies ist eine Vorschau dieses Raumes. Raum-Interaktionen wurden deaktiviert",
"This room is not accessible by remote Matrix servers": "Remote-Matrix-Server können auf diesen Raum nicht zugreifen",
"This room's internal ID is": "Die interne ID dieses Raumes ist",
- "To ban users": "Um Benutzer dauerhaft aus dem Raum auszuschließen",
+ "To ban users": "Um Benutzer zu verbannen",
"To configure the room": "Um den Raum zu konfigurieren",
"To invite users into the room": "Um Nutzer in den Raum einzuladen",
"to join the discussion": "um an der Diskussion teilzunehmen",
- "To kick users": "Um Benutzer aus dem Raum zu entfernen",
+ "To kick users": "Um Benutzer zu kicken",
"Admin": "Administrator",
"Server may be unavailable, overloaded, or you hit a bug.": "Server ist nicht verfügbar, überlastet oder du bist auf einen Fehler gestoßen.",
"Could not connect to the integration server": "Konnte keine Verbindung zum Integrations-Server herstellen",
"Disable inline URL previews by default": "URL-Vorschau im Chat standardmäßig deaktivieren",
- "Guests can't use labs features. Please register.": "Gäste können keine Labor-Funktionen nutzen. Bitte registrieren.",
"Labs": "Labor",
"Show panel": "Panel anzeigen",
"To redact messages": "Zum Nachrichten verbergen",
@@ -241,11 +231,10 @@
"turned on end-to-end encryption (algorithm": "aktivierte Ende-zu-Ende-Verschlüsselung (Algorithmus",
"Unable to add email address": "E-Mail-Adresse konnte nicht hinzugefügt werden",
"Unable to remove contact information": "Die Kontakt-Informationen konnten nicht gelöscht werden",
- "Unable to verify email address.": "Unfähig die E-Mail-Adresse zu verifizieren.",
- "Unban": "Dauerhaftes Ausschließen aus dem Raum aufheben",
+ "Unable to verify email address.": "Die E-Mail-Adresse konnte nicht verifiziert werden.",
+ "Unban": "Verbannung aufheben",
"Unencrypted room": "Unverschlüsselter Raum",
"unknown error code": "Unbekannter Fehlercode",
- "unknown": "unbekannt",
"Upload avatar": "Profilbild hochladen",
"uploaded a file": "hat eine Datei hochgeladen",
"Upload Files": "Dateien hochladen",
@@ -260,10 +249,10 @@
"VoIP conference finished.": "VoIP-Konferenz wurde beendet.",
"VoIP conference started.": "VoIP-Konferenz gestartet.",
"(warning: cannot be disabled again!)": "(Warnung: Kann nicht wieder deaktiviert werden!)",
- "was banned": "wurde dauerhaft aus dem Raum ausgeschlossen",
+ "was banned": "wurde aus dem Raum verbannt",
"was invited": "wurde eingeladen",
- "was kicked": "wurde aus dem Raum entfernt",
- "was unbanned": "wurde vom dauerhaften Ausschluss aus dem Raum befreit",
+ "was kicked": "wurde gekickt",
+ "was unbanned": "wurde von der Verbannung aus dem Raum befreit",
"was": "wurde",
"Who can access this room?": "Wer hat Zugang zu diesem Raum?",
"Who can read history?": "Wer kann den bisherigen Chatverlauf lesen?",
@@ -288,17 +277,15 @@
"Failed to set up conference call": "Konferenzgespräch konnte nicht gestartet werden",
"Failed to verify email address: make sure you clicked the link in the email": "Verifizierung der E-Mail-Adresse fehlgeschlagen: Bitte stelle sicher, dass du den Link in der E-Mail angeklickt hast",
"Failure to create room": "Raumerstellung fehlgeschlagen",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Gastnutzer können keine neuen Räume erstellen. Bitte registriere dich um Räume zu erstellen und Chats zu starten.",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot hat keine Berechtigung, um Benachrichtigungen zu senden - bitte Browser-Einstellungen überprüfen",
"Riot was not given permission to send notifications - please try again": "Riot hat keine Berechtigung für das Senden von Benachrichtigungen erhalten - bitte erneut versuchen",
"This email address is already in use": "Diese E-Mail-Adresse wird bereits verwendet",
"This email address was not found": "Diese E-Mail-Adresse konnte nicht gefunden werden",
- "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Die Datei '%(fileName)s' überschreitet das Größen-Limit für Uploads auf diesem Homeserver",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Die Datei '%(fileName)s' überschreitet das Größen-Limit für Uploads auf diesem Heimserver",
"The file '%(fileName)s' failed to upload": "Das Hochladen der Datei '%(fileName)s' schlug fehl",
"The remote side failed to pick up": "Die Gegenstelle konnte nicht abheben",
"This phone number is already in use": "Diese Telefonnummer wird bereits verwendet",
- "Unable to restore previous session": "Die vorherige Sitzung konnte nicht wiederhergestellt werden",
- "Unable to capture screen": "Unfähig den Bildschirm aufzunehmen",
+ "Unable to capture screen": "Der Bildschirm konnte nicht aufgenommen werden",
"Unable to enable Notifications": "Benachrichtigungen konnten nicht aktiviert werden",
"Upload Failed": "Upload fehlgeschlagen",
"VoIP is unsupported": "VoIP wird nicht unterstützt",
@@ -350,7 +337,7 @@
"%(names)s and one other are typing": "%(names)s und ein weiteres Raum-Mitglied schreiben",
"%(names)s and %(count)s others are typing": "%(names)s und %(count)s weitere Raum-Mitglieder schreiben",
"%(senderName)s answered the call.": "%(senderName)s hat den Anruf angenommen.",
- "%(senderName)s banned %(targetName)s.": "%(senderName)s hat %(targetName)s dauerhaft aus dem Raum ausgeschlossen.",
+ "%(senderName)s banned %(targetName)s.": "%(senderName)s hat %(targetName)s dauerhaft aus dem Raum verbannt.",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s hat den Anzeigenamen von \"%(oldDisplayName)s\" auf \"%(displayName)s\" geändert.",
"%(senderName)s changed their profile picture.": "%(senderName)s hat das Profilbild geändert.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s hat das Berechtigungslevel von %(powerLevelDiffText)s geändert.",
@@ -364,13 +351,16 @@
"%(senderName)s invited %(targetName)s.": "%(senderName)s hat %(targetName)s eingeladen.",
"%(displayName)s is typing": "%(displayName)s schreibt",
"%(targetName)s joined the room.": "%(targetName)s hat den Raum betreten.",
- "%(senderName)s kicked %(targetName)s.": "%(senderName)s hat %(targetName)s aus dem Raum entfernt.",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s hat %(targetName)s aus dem Raum gekickt.",
"%(targetName)s left the room.": "%(targetName)s hat den Raum verlassen.",
- "%(senderName)s made future room history visible to": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für alle Raum-Mitglieder (ab dem Zeitpunkt, an dem sie eingeladen wurden).",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für alle Raum-Mitglieder (ab dem Zeitpunkt, an dem sie beigetreten sind).",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für Alle Raum-Mitglieder.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für Jeder.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für unbekannt (%(visibility)s).",
"Missing room_id in request": "Fehlende room_id in Anfrage",
"Missing user_id in request": "Fehlende user_id in Anfrage",
"Must be viewing a room": "Muss einen Raum ansehen",
- "New Composer & Autocomplete": "Neuer Eingabeverarbeiter & Autovervollständigung",
"(not supported by this browser)": "(wird von diesem Browser nicht unterstützt)",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s startete einen %(callType)s-Anruf.",
"Power level must be positive integer.": "Berechtigungslevel muss eine positive ganze Zahl sein.",
@@ -388,7 +378,7 @@
"These are experimental features that may break in unexpected ways": "Dies sind experimentelle Funktionen, die in unerwarteter Weise Fehler verursachen können",
"To use it, just wait for autocomplete results to load and tab through them.": "Um diese Funktion zu nutzen, warte einfach auf die Autovervollständigungsergebnisse und benutze dann die TAB-Taste zum durchblättern.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s hat die Ende-zu-Ende-Verschlüsselung aktiviert (Algorithmus: %(algorithm)s).",
- "%(senderName)s unbanned %(targetName)s.": "%(senderName)s hat das dauerhafte Ausschließen von %(targetName)s aus dem Raum aufgehoben.",
+ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s hat die Verbannung von %(targetName)s aufgehoben.",
"Usage": "Verwendung",
"Use with caution": "Mit Vorsicht zu verwenden",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s hat die Einladung für %(targetName)s zurückgezogen.",
@@ -399,7 +389,6 @@
"Riot was unable to find the correct Data for the selected Language.": "Riot war nicht in der Lage die korrekten Daten für die ausgewählte Sprache zu finden.",
"Connectivity to the server has been lost.": "Verbindung zum Server wurde unterbrochen.",
"Sent messages will be stored until your connection has returned.": "Gesendete Nachrichten werden gespeichert, bis die Internetverbindung wiederhergestellt wird.",
- "Auto-complete": "Autovervollständigung",
"Resend all": "Alle erneut senden",
"cancel all": "alles abbrechen",
"now. You can also select individual messages to resend or cancel.": "jetzt. Du kannst auch einzelne Nachrichten zum erneuten Senden oder Abbrechen auswählen.",
@@ -414,8 +403,6 @@
"ru": "Russisch",
"Drop here %(toAction)s": "Hierher ziehen: %(toAction)s",
"Drop here to tag %(section)s": "Hierher ziehen: %(section)s taggen",
- "Press": "Drücke",
- "tag as %(tagName)s": "als %(tagName)s markieren",
"to browse the directory": "um das Raum-Verzeichnis zu durchsuchen",
"to demote": "um die Priorität herabzusetzen",
"to favourite": "zum Favorisieren",
@@ -427,121 +414,6 @@
"click to reveal": "anzeigen",
"To remove other users' messages": "Um Nachrichten anderer Nutzer zu verbergen",
"You are trying to access %(roomName)s.": "Du versuchst, auf den Raum \"%(roomName)s\" zuzugreifen.",
- "af": "Afrikaans",
- "ar-ae": "Arabisch (VAE)",
- "ar-bh": "Arabisch (Bahrain)",
- "ar-dz": "Arabisch (Algerien)",
- "ar-eg": "Arabisch (Ägypten)",
- "ar-iq": "Arabisch (Irak)",
- "ar-jo": "Arabisch (Jordanien)",
- "ar-kw": "Arabisch (Kuwait)",
- "ar-lb": "Arabisch (Libanon)",
- "ar-ly": "Arabisch (Lybien)",
- "ar-ma": "Arabisch (Marokko)",
- "ar-om": "Arabisch (Oman)",
- "ar-qa": "Arabisch (Katar)",
- "ar-sa": "Arabisch (Saudi Arabien)",
- "ar-sy": "Arabisch (Syrien)",
- "ar-tn": "Arabisch (Tunesien)",
- "ar-ye": "Arabisch (Jemen)",
- "be": "Weißrussisch",
- "bg": "Bulgarisch",
- "cs": "Tschechisch",
- "de-at": "Deutsch (Österreich)",
- "de-ch": "Deutsch (Schweiz)",
- "de-li": "Deutsch (Liechtenstein)",
- "de-lu": "Deutsch (Luxemburg)",
- "el": "Neugriechisch",
- "en-au": "Englisch (Australien)",
- "en-bz": "Englisch (Belize)",
- "en-ca": "Englisch (Kanada)",
- "en-gb": "Englisch (Vereinigtes Königreich)",
- "en-ie": "Englisch (Irland)",
- "en-jm": "Englisch (Jamaika)",
- "en-nz": "Englisch (Neuseeland)",
- "en-tt": "Englisch (Trinidad)",
- "en-us": "Englisch (Vereinigte Staaten)",
- "en-za": "Englisch (Südafrika)",
- "es-ar": "Spanisch (Argentinien)",
- "es-bo": "Spanisch (Bolivien)",
- "es-cl": "Spanisch (Chile)",
- "es-co": "Spanisch (Kolumbien)",
- "es-cr": "Spanisch (Costa Rica)",
- "es-do": "Spanisch (Dominikanische Republik)",
- "es-ec": "Spanisch (Ecuador)",
- "es-gt": "Spanisch (Guatemala)",
- "es-hn": "Spanisch (Honduras)",
- "es-mx": "Spanisch (Mexiko)",
- "es-ni": "Spanisch (Nicaragua)",
- "es-pa": "Spanisch (Panama)",
- "es-pe": "Spanisch (Peru)",
- "es-pr": "Spanisch (Puerto Rico)",
- "es-py": "Spanisch (Paraguay)",
- "es": "Spanisch (Spanien)",
- "es-sv": "Spanisch (El Salvador)",
- "es-uy": "Spanisch (Uruguay)",
- "es-ve": "Spanisch (Venezuela)",
- "et": "Estländisch",
- "eu": "Baskisch (Baskenland)",
- "fa": "Persisch (Farsi)",
- "fr-be": "Französisch (Belgien)",
- "fr-ca": "Französisch (Kanada)",
- "fr-ch": "Französisch (Schweiz)",
- "fr": "Französisch",
- "fr-lu": "Französisch (Luxemburg)",
- "gd": "Gälisch (Schottland)",
- "he": "Hebräisch",
- "hr": "Kroatisch",
- "hu": "Ungarisch",
- "id": "Indonesisch",
- "is": "Isländisch",
- "it-ch": "Italienisch (Schweiz)",
- "it": "Italienisch",
- "ja": "Japanisch",
- "ji": "Jiddisch",
- "ko": "Koreanisch",
- "lt": "Litauisch",
- "lv": "Lettisch",
- "mk": "Mazedonisch (FYROM)",
- "ms": "Malaysisch",
- "mt": "Maltesisch",
- "nl-be": "Niederländisch (Belgien)",
- "nl": "Niederländisch",
- "no": "Norwegisch",
- "pl": "Polnisch",
- "pt": "Portugiesisch",
- "rm": "Rätoromanisch",
- "ro-mo": "Rumänisch (Republik Moldau/Moldawien)",
- "ro": "Rumänisch",
- "ru-mo": "Russisch (Republik Moldau/Moldawien)",
- "sb": "Sorbisch",
- "sk": "Slowakisch",
- "sl": "Slowenisch",
- "sq": "Albanisch",
- "sr": "Serbisch",
- "sv-fi": "Schwedisch (Finnland)",
- "sv": "Schwedisch",
- "sx": "Sutu",
- "sz": "Samisch (Lappisch)",
- "th": "Thailändisch",
- "tn": "Setswana",
- "tr": "Türkisch",
- "ts": "Tsonga",
- "uk": "Ukrainisch",
- "ur": "Urdu",
- "ve": "Tshivenda",
- "vi": "Vietnamesisch",
- "zh-cn": "Chinesisch (Volksrepublik China)",
- "zh-hk": "Chinesisch (Hong Kong SAR)",
- "zh-sg": "Chinesisch (Singapur)",
- "zh-tw": "Chinesisch (Taiwan)",
- "zu": "Zulu",
- "ca": "Katalanisch",
- "fi": "Finnisch",
- "fo": "Färöisch",
- "ga": "Irisch",
- "hi": "Hindi",
- "xh": "Xhosa",
"Monday": "Montag",
"Tuesday": "Dienstag",
"Wednesday": "Mittwoch",
@@ -550,29 +422,25 @@
"Saturday": "Samstag",
"Sunday": "Sonntag",
"Failed to forget room %(errCode)s": "Das Entfernen des Raums ist fehlgeschlagen %(errCode)s",
- "Failed to join the room": "Fehler beim Betreten des Raumes",
- "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Eine Textnachricht wurde an +%(msisdn)s gesendet. Bitte gebe den Verifikationscode ein, den er beinhaltet",
- "and %(count)s others...": {
- "other": "und %(count)s weitere...",
- "one": "und ein(e) weitere(r)..."
- },
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Eine Textnachricht wurde an +%(msisdn)s gesendet. Bitte den darin enthaltenen Verifizierungscode eingeben",
+ "and %(count)s others...|other": "und %(count)s weitere...",
+ "and %(count)s others...|one": "und ein(e) weitere(r)...",
"Are you sure?": "Bist du sicher?",
"Attachment": "Anhang",
- "Ban": "Dauerhaft aus dem Raum ausschließen",
+ "Ban": "Verbannen",
"Can't connect to homeserver - please check your connectivity and ensure your
homeserver's SSL certificate is trusted.": "Verbindungsaufbau zum Heimserver nicht möglich - bitte Internetverbindung überprüfen und sicherstellen, ob das
SSL-Zertifikat des Heimservers vertrauenswürdig ist.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or
enable unsafe scripts .": "Es kann keine Verbindung zum Heimserver via HTTP aufgebaut werden, wenn die Adresszeile des Browsers eine HTTPS-URL enthält. Entweder HTTPS verwenden oder alternativ
unsichere Skripte erlauben .",
- "changing room on a RoomView is not supported": "Das Ändern eines Raumes in einer RaumAnsicht wird nicht unterstützt",
"Click to mute audio": "Klicke um den Ton stumm zu stellen",
"Click to mute video": "Klicken, um das Video stummzuschalten",
"Command error": "Befehlsfehler",
"Decrypt %(text)s": "%(text)s entschlüsseln",
"Delete": "Löschen",
"Devices": "Geräte",
- "Direct chats": "Direkte Chats",
+ "Direct chats": "Direkt-Chats",
"Disinvite": "Einladung zurückziehen",
"Download %(text)s": "%(text)s herunterladen",
"Enter Code": "Code eingeben",
- "Failed to ban user": "Dauerhaftes Ausschließen des Benutzers aus dem Raum fehlgeschlagen",
+ "Failed to ban user": "Verbannen des Benutzers fehlgeschlagen",
"Failed to change power level": "Ändern des Berechtigungslevels fehlgeschlagen",
"Failed to delete device": "Löschen des Geräts fehlgeschlagen",
"Failed to join room": "Betreten des Raumes ist fehlgeschlagen",
@@ -589,7 +457,7 @@
"'%(alias)s' is not a valid format for an address": "'%(alias)s' ist kein gültiges Adressformat",
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' ist kein gültiges Alias-Format",
"Join Room": "Dem Raum beitreten",
- "Kick": "Aus dem Raum entfernen",
+ "Kick": "Kicken",
"Level": "Berechtigungslevel",
"Local addresses for this room:": "Lokale Adressen dieses Raumes:",
"Markdown is disabled": "Markdown ist deaktiviert",
@@ -612,14 +480,13 @@
"Some of your messages have not been sent.": "Einige deiner Nachrichten wurden nicht gesendet.",
"Submit": "Absenden",
"The main address for this room is: %(canonical_alias_section)s": "Die Hauptadresse für diesen Raum ist: %(canonical_alias_section)s",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "Diese Aktion kann nicht von einem Gast ausgeführt werden. Bitte registriere dich um dies zu tun.",
"%(actionVerb)s this person?": "Diese Person %(actionVerb)s?",
"This room has no local addresses": "Dieser Raum hat keine lokale Adresse",
"This room is private or inaccessible to guests. You may be able to join if you register": "Dieser Raum ist privat oder für Gäste nicht zugänglich. Du kannst jedoch eventuell beitreten, wenn du dich registrierst",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Es wurde versucht, einen bestimmten Punkt im Chatverlauf dieses Raumes zu laden. Dir fehlt jedoch die Berechtigung, die betreffende Nachricht zu sehen.",
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Es wurde versucht, einen bestimmten Punkt im Chatverlauf dieses Raumes zu laden, der Punkt konnte jedoch nicht gefunden werden.",
"Turn Markdown off": "Markdown deaktiveren",
- "Turn Markdown on": "Markdown einschalten",
+ "Turn Markdown on": "Markdown aktivieren",
"Unable to load device list": "Geräteliste konnte nicht geladen werden",
"Unknown room %(roomId)s": "Unbekannter Raum %(roomId)s",
"Usage: /markdown on|off": "Verwendung: /markdown on|off",
@@ -630,10 +497,10 @@
"Room": "Raum",
"(~%(searchCount)s results)": "(~%(searchCount)s Ergebnisse)",
"Cancel": "Abbrechen",
- "bold": "fett",
- "italic": "kursiv",
- "strike": "durchstreichen",
- "underline": "unterstreichen",
+ "bold": "Fett",
+ "italic": "Kursiv",
+ "strike": "Durchgestrichen",
+ "underline": "Unterstrichen",
"code": "Code",
"quote": "Zitat",
"bullet": "Aufzählung",
@@ -651,7 +518,7 @@
"%(items)s and %(remaining)s others": "%(items)s und %(remaining)s weitere",
"%(items)s and one other": "%(items)s und ein(e) weitere(r)",
"%(items)s and %(lastItem)s": "%(items)s und %(lastItem)s",
- "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s sind dem Raum %(repeats)s mal beigetreten",
+ "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)shaben den Raum %(repeats)s-mal betreten",
"%(oneUser)sjoined %(repeats)s times": "%(oneUser)shat den Raum %(repeats)s mal betreten",
"%(severalUsers)sjoined": "%(severalUsers)shaben den Raum betreten",
"%(oneUser)sjoined": "%(oneUser)shat den Raum betreten",
@@ -667,7 +534,7 @@
"%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)shat den Raum %(repeats)s mal verlassen und wieder neu betreten",
"%(severalUsers)sleft and rejoined": "%(severalUsers)shaben den Raum verlassen und wieder neu betreten",
"%(oneUser)sleft left and rejoined": "%(oneUser)sging und trat erneut bei",
- "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)shaben ihre Einladung %(repeats)s mal abgelehnt",
+ "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)shaben ihre Einladung %(repeats)s-mal abgelehnt",
"%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)shat die Einladung %(repeats)s mal abgelehnt",
"%(severalUsers)srejected their invitations": "%(severalUsers)shaben ihre Einladung abgelehnt",
"%(oneUser)srejected their invitation": "%(oneUser)shat die Einladung abgelehnt",
@@ -675,18 +542,18 @@
"%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)swurde die Einladung %(repeats)s mal wieder entzogen",
"%(severalUsers)shad their invitations withdrawn": "%(severalUsers)szogen ihre Einladungen zurück",
"%(oneUser)shad their invitation withdrawn": "%(oneUser)swurde die ursprüngliche Einladung wieder entzogen",
- "were invited %(repeats)s times": "wurden %(repeats)s mal eingeladen",
+ "were invited %(repeats)s times": "wurden %(repeats)s-mal eingeladen",
"was invited %(repeats)s times": "wurde %(repeats)s mal eingeladen",
"were invited": "wurden eingeladen",
- "were banned %(repeats)s times": "wurden %(repeats)s-mal dauerhaft aus dem Raum ausgeschlossen",
- "was banned %(repeats)s times": "wurde %(repeats)s-mal aus dem Raum ausgeschlossen",
- "were banned": "wurden dauerhaft aus dem Raum ausgeschlossen",
- "were unbanned %(repeats)s times": "wurden %(repeats)s mal vom dauerhaften Ausschluss aus dem Raum befreit",
- "was unbanned %(repeats)s times": "wurde %(repeats)s mal vom dauerhaften Ausschluss aus dem Raum befreit",
- "were unbanned": "wurden vom dauerhaften Ausschluss aus dem Raum befreit",
- "were kicked %(repeats)s times": "wurden %(repeats)s-mal aus dem Raum entfernt",
- "was kicked %(repeats)s times": "wurde %(repeats)s-mal aus dem Raum entfernt",
- "were kicked": "wurden aus dem Raum entfernt",
+ "were banned %(repeats)s times": "wurden %(repeats)s-mal aus dem Raum verbannt",
+ "was banned %(repeats)s times": "wurde %(repeats)s-mal aus dem Raum verbannt",
+ "were banned": "wurden aus dem Raum verbannt",
+ "were unbanned %(repeats)s times": "wurden %(repeats)s-mal von der Verbannung aus dem Raum befreit",
+ "was unbanned %(repeats)s times": "wurde %(repeats)s-mal von der Verbannung aus dem Raum befreit",
+ "were unbanned": "wurden von der Verbannung aus dem Raum befreit",
+ "were kicked %(repeats)s times": "wurden %(repeats)s-mal gekickt",
+ "was kicked %(repeats)s times": "wurde %(repeats)s-mal gekickt",
+ "were kicked": "wurden gekickt",
"%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)shaben ihren Namen %(repeats)s mal geändert",
"%(oneUser)schanged their name %(repeats)s times": "%(oneUser)shat den Namen %(repeats)s mal geändert",
"%(severalUsers)schanged their name": "%(severalUsers)shaben ihre Namen geändert",
@@ -714,7 +581,6 @@
"riot-web version:": "Version von riot-web:",
"Scroll to bottom of page": "Zum Ende der Seite springen",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Zeitstempel im 12-Stunden-Format anzeigen (z. B. 2:30pm)",
- "to tag as %(tagName)s": "um als \"%(tagName)s\" zu markieren",
"Email address": "E-Mail-Adresse",
"Error decrypting attachment": "Fehler beim Entschlüsseln des Anhangs",
"Mute": "Stummschalten",
@@ -735,7 +601,6 @@
"You must join the room to see its files": "Du musst dem Raum beitreten, um die Raum-Dateien sehen zu können",
"Reject all %(invitedRooms)s invites": "Alle %(invitedRooms)s Einladungen ablehnen",
"Start new Chat": "Starte neuen Chat",
- "Guest users can't invite users. Please register.": "Gäste können keine Benutzer einladen. Bitte registrieren.",
"Failed to invite": "Einladen fehlgeschlagen",
"Failed to invite user": "Einladen des Nutzers ist fehlgeschlagen",
"Confirm Removal": "Entfernen bestätigen",
@@ -745,12 +610,11 @@
"To continue, please enter your password.": "Zum fortfahren bitte Passwort eingeben.",
"Device name": "Geräte-Name",
"Device key": "Geräte-Schlüssel",
- "In future this verification process will be more sophisticated.": "Zukünftig wird dieser Verifizierungsprozess technisch ausgereifter und eleganter gestaltet werden.",
+ "In future this verification process will be more sophisticated.": "Zukünftig wird der Verifizierungsprozess technisch ausgereifter und eleganter gestaltet werden.",
"Verify device": "Gerät verifizieren",
- "I verify that the keys match": "Ich bestätige, dass die Schlüssel passen",
+ "I verify that the keys match": "Ich bestätige, dass die Schlüssel identisch sind",
"Unable to restore session": "Sitzungswiederherstellung fehlgeschlagen",
"Continue anyway": "Trotzdem fortfahren",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Dein Anzeigename ist der Name, der anderen Nutzern angezeigt wird, wenn du in Räumen kommunizierst. Welchen Anzeigenamen möchtest du wählen?",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Nicht verifizierte Geräte werden aktuell blockiert und auf die Sperrliste gesetzt. Um Nachrichten an diese Geräte senden zu können, müssen diese zunächst verifiziert werden.",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" enthält Geräte, die du bislang noch nicht gesehen hast.",
"Unknown devices": "Unbekannte Geräte",
@@ -759,9 +623,9 @@
"ex. @bob:example.com": "z. B. @bob:example.com",
"Add User": "Benutzer hinzufügen",
"Sign in with CAS": "Mit CAS anmelden",
- "Custom Server Options": "Erweiterte Server-Optionen",
+ "Custom Server Options": "Benutzerdefinierte Server-Optionen",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Du kannst die erweiterten Server-Optionen nutzen, um dich an anderen Matrix-Servern anzumelden, indem du eine andere Heimserver-URL angibst.",
- "This allows you to use this app with an existing Matrix account on a different home server.": "Dies erlaubt dir diese App mit einem existierenden Matrix-Konto auf einem anderen Heimserver zu verwenden.",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "Dies erlaubt es dir, diese App mit einem existierenden Matrix-Benutzerkonto auf einem anderen Heimserver zu verwenden.",
"Dismiss": "Ablehnen",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kannst auch einen angepassten Idantitätsserver angeben aber dies wird typischerweise Interaktionen mit anderen Nutzern auf Basis der E-Mail-Adresse verhindern.",
"Please check your email to continue registration.": "Bitte prüfe deine E-Mails, um mit der Registrierung fortzufahren.",
@@ -800,9 +664,9 @@
"Online": "Online",
" (unsupported)": " (nicht unterstützt)",
"This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dieser Prozess erlaubt es dir, die zuvor von einem anderen Matrix-Client exportierten Verschlüsselungs-Schlüssel zu importieren. Danach kannst du alle Nachrichten entschlüsseln, die auch bereits auf dem anderen Client entschlüsselt werden konnten.",
- "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Dies wird dein Konto permanent unbenutzbar machen. Du wirst dich nicht mit derselben Nutzer-ID erneut registrieren können.",
+ "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Dies wird dein Benutzerkonto dauerhaft unbenutzbar machen. Du wirst nicht in der Lage sein, dich mit derselben Benutzer-ID erneut zu registrieren.",
"To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Um sicherzustellen, dass diesem Gerät vertraut werden kann, kontaktiere bitte den Eigentümer des Geräts über ein anderes Kommunikationsmittel (z.B. im persönlichen Gespräch oder durch einen Telefon-Anruf) und vergewissere dich, dass der Schlüssel, den der Eigentümer in den Nutzer-Einstellungen für dieses Gerät sieht, mit dem folgenden Schlüssel identisch ist:",
- "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Wenn er passt, betätige den Bestätigen-Button unten. Wenn nicht, fängt jemand anderes dieses Gerät ab und du möchtest wahrscheinlich lieber den Blacklist-Button betätigen.",
+ "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Wenn er identisch ist, bitte den Bestätigen-Button unten verwenden. Falls er nicht identisch sein sollte, hat eine Fremdperson Kontrolle über dieses Gerät und es sollte gesperrt werden.",
"We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Bei der Wiederherstellung deiner letzten Sitzung ist ein Fehler aufgetreten. Um fortzufahren, musst du dich erneut anmelden. Ein zuvor verschlüsselter Chatverlauf wird in der Folge nicht mehr lesbar sein.",
"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.": "Wenn du zuvor eine aktuellere Version von Riot verwendet hast, ist deine Sitzung eventuell inkompatibel mit dieser Version. Bitte schließe dieses Fenster und kehre zur aktuelleren Version zurück.",
"Blacklist": "Blockieren",
@@ -813,7 +677,7 @@
"Idle": "Untätig",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Wir empfehlen dir, für jedes Gerät den Verifizierungsprozess durchzuführen, um sicherzustellen, dass sie tatsächlich ihrem rechtmäßigem Eigentümer gehören. Alternativ kannst du die Nachrichten auch ohne Verifizierung erneut senden.",
"Ongoing conference call%(supportedText)s.": "Laufendes Konferenzgespräch%(supportedText)s.",
- "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Du wirst jetzt auf die Website eines Drittanbieters weitergeleitet, damit du dein Konto für die Verwendung von %(integrationsUrl)s authentifizieren kannst. Möchtest du fortfahren?",
+ "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Du wirst jetzt auf die Website eines Drittanbieters weitergeleitet, damit du dein Benutzerkonto für die Verwendung von %(integrationsUrl)s authentifizieren kannst. Möchtest du fortfahren?",
"Disable URL previews for this room (affects only you)": "URL-Vorschau für diesen Raum deaktivieren (betrifft nur dich)",
"Start automatically after system login": "Nach System-Login automatisch starten",
"Desktop specific": "Desktopspezifisch",
@@ -822,7 +686,6 @@
"disabled": "deaktiviert",
"enabled": "aktiviert",
"Invited": "Eingeladen",
- "Set a Display Name": "Anzeigenamen festlegen",
"for %(amount)ss": "für %(amount)ss",
"for %(amount)sm": "seit %(amount)smin",
"for %(amount)sh": "für %(amount)sh",
@@ -841,7 +704,7 @@
"Export": "Export",
"Failed to register as guest:": "Die Registrierung als Gast ist fehlgeschlagen:",
"Guest access is disabled on this Home Server.": "Gastzugang ist auf diesem Heimserver deaktivert.",
- "Import": "Import",
+ "Import": "Importieren",
"Incorrect username and/or password.": "Inkorrekter Nutzername und/oder Passwort.",
"Results from DuckDuckGo": "Ergebnisse von DuckDuckGo",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Den Signaturschlüssel den du bereitstellst stimmt mit dem Schlüssel den du von %(userId)s's Gerät %(deviceId)s empfangen hast überein. Gerät als verifiziert markiert.",
@@ -853,7 +716,7 @@
"device id: ": "Geräte-ID: ",
"Device key:": "Geräte-Schlüssel:",
"Email address (optional)": "E-Mail-Adresse (optional)",
- "List this room in %(domain)s's room directory?": "Diesen Raum zum Raum-Verzeichnis von %(domain)s hinzufügen?",
+ "Publish this room to the public in %(domain)s's room directory?": "Diesen Raum im Raum-Verzeichnis von %(domain)s veröffentlichen?",
"Mobile phone number (optional)": "Mobilfunknummer (optional)",
"Password:": "Passwort:",
"Register": "Registrieren",
@@ -861,7 +724,6 @@
"Setting a user name will create a fresh account": "Die Eingabe eines Benutzernamens wird ein neues Konto erzeugen",
"Tagged as: ": "Markiert als: ",
"This Home Server does not support login using email address.": "Dieser Heimserver unterstützt den Login mittels E-Mail-Adresse nicht.",
- "There was a problem logging in.": "Beim Anmelden ist ein Problem aufgetreten.",
"Unknown (user, device) pair:": "Unbekanntes (Nutzer-/Gerät-)Paar:",
"Remote addresses for this room:": "Remote-Adressen für diesen Raum:",
"Unrecognised command:": "Unbekannter Befehl:",
@@ -872,26 +734,23 @@
"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!": "WARNUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signatur-Schlüssel für %(userId)s und das Gerät %(deviceId)s ist \"%(fprint)s\", welcher nicht mit dem bereitgestellten Schlüssel \"%(fingerprint)s\" übereinstimmt. Dies kann bedeuten, dass deine Kommunikation abgehört wird!",
"You have
disabled URL previews by default.": "Du hast die URL-Vorschau standardmäßig
deaktiviert .",
"You have
enabled URL previews by default.": "Du hast die URL-Vorschau standardmäßig
aktiviert .",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "Du hast einen ungültigen Kontakt eingegeben. Versuche es mit der Matrix-Kennung oder der E-Mail-Adresse des Kontakts.",
"$senderDisplayName changed the room avatar to
": "$senderDisplayName hat das Raum-Bild geändert zu
",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s hat das Raum-Bild für %(roomName)s geändert",
"Hide removed messages": "Gelöschte Nachrichten verbergen",
"Start new chat": "Neuen Chat starten",
- "Disable markdown formatting": "Markdown-Formatierung deaktivieren",
"Add": "Hinzufügen",
- "%(count)s new messages.one": "%(count)s neue Nachricht",
- "%(count)s new messages.other": "%(count)s neue Nachrichten",
+ "%(count)s new messages|one": "%(count)s neue Nachricht",
+ "%(count)s new messages|other": "%(count)s neue Nachrichten",
"Error: Problem communicating with the given homeserver.": "Fehler: Problem bei der Kommunikation mit dem angegebenen Home-Server.",
"Failed to fetch avatar URL": "Abrufen der Avatar-URL fehlgeschlagen",
"The phone number entered looks invalid": "Die eingegebene Telefonnummer scheint ungültig zu sein",
"This room is private or inaccessible to guests. You may be able to join if you register.": "Dieser Raum ist privat oder für Gäste nicht betretbar. Du kannst evtl. beitreten wenn du dich registrierst.",
- "Uploading %(filename)s and %(count)s others.zero": "%(filename)s wird hochgeladen",
- "Uploading %(filename)s and %(count)s others.one": "%(filename)s und %(count)s weitere Dateien werden hochgeladen",
- "Uploading %(filename)s and %(count)s others.other": "%(filename)s und %(count)s weitere Dateien werden hochgeladen",
+ "Uploading %(filename)s and %(count)s others|zero": "%(filename)s wird hochgeladen",
+ "Uploading %(filename)s and %(count)s others|one": "%(filename)s und %(count)s weitere Dateien werden hochgeladen",
+ "Uploading %(filename)s and %(count)s others|other": "%(filename)s und %(count)s weitere Dateien werden hochgeladen",
"You must
register to use this functionality": "Du musst dich
registrieren , um diese Funktionalität nutzen zu können",
"
Resend all or
cancel all now. You can also select individual messages to resend or cancel.": "
Alle erneut senden oder
alle verwerfen . Du kannst auch einzelne Nachrichten erneut senden oder verwerfen.",
"Create new room": "Neuen Raum erstellen",
- "Welcome page": "Willkommensseite",
"Room directory": "Raum-Verzeichnis",
"Start chat": "Chat starten",
"New Password": "Neues Passwort",
@@ -905,15 +764,15 @@
"Something went wrong!": "Etwas ging schief!",
"This will be your account name on the
homeserver, or you can pick a
different server .": "Dies wird dein zukünftiger Benutzername auf dem
Heimserver. Alternativ kannst du auch einen
anderen Server auswählen.",
"If you already have a Matrix account you can
log in instead.": "Wenn du bereits ein Matrix-Benutzerkonto hast, kannst du dich stattdessen auch direkt
anmelden .",
- "Home": "Start",
+ "Home": "Startseite",
"Username invalid: %(errMessage)s": "Ungültiger Benutzername: %(errMessage)s",
"a room": "einen Raum",
"Accept": "Akzeptieren",
"Active call (%(roomName)s)": "Aktiver Anruf (%(roomName)s)",
- "Admin tools": "Admin-Werkzeuge",
+ "Admin Tools": "Admin-Werkzeuge",
"And %(count)s more...": "Und %(count)s weitere...",
"Alias (optional)": "Alias (optional)",
- "Can't connect to homeserver - please check your connectivity, ensure your
homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Verbindung zum Heimserver fehlgeschlagen - bitte prüfe deine Verbindung, stelle sicher, dass dem
SSL-Zertifikat deines Heimservers vertraut wird und keine Browser-Erweiterung Anfragen blockiert.",
+ "Can't connect to homeserver - please check your connectivity, ensure your
homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Verbindung zum Heimserver fehlgeschlagen - bitte überprüfe die Internetverbindung und stelle sicher, dass dem
SSL-Zertifikat deines Heimservers vertraut wird und dass Anfragen nicht durch eine Browser-Erweiterung blockiert werden.",
"
Click here to join the discussion!": "
Hier klicken , um an der Diskussion teilzunehmen!",
"Close": "Schließen",
"Custom": "Erweitert",
@@ -939,13 +798,12 @@
"Room contains unknown devices": "Raum enthält unbekannte Geräte",
"%(roomName)s does not exist.": "%(roomName)s existert nicht.",
"%(roomName)s is not accessible at this time.": "%(roomName)s ist aktuell nicht zugreifbar.",
- "Searching known users": "Suche nach bekannten Nutzern",
"Seen by %(userName)s at %(dateTime)s": "Gesehen von %(userName)s um %(dateTime)s",
"Send anyway": "Trotzdem senden",
"Set": "Setze",
"Start authentication": "Authentifizierung beginnen",
"Show Text Formatting Toolbar": "Text-Formatierungs-Werkzeugleiste anzeigen",
- "This invitation was sent to an email address which is not associated with this account:": "Diese Einledung wurde an eine E-Mail-Adresse gesendet, die nicht mit diesem Konto verknüpft ist:",
+ "This invitation was sent to an email address which is not associated with this account:": "Diese Einladung wurde an eine E-Mail-Adresse gesendet, die nicht mit diesem Benutzerkonto verknüpft ist:",
"This room": "In diesem Raum",
"To link to a room it must have
an address .": "Um einen Raum zu verlinken, muss er
eine Adresse haben.",
"Undecryptable": "Nicht entschlüsselbar",
@@ -959,12 +817,12 @@
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (Berechtigungslevel %(powerLevelNumber)s)",
"Verified": "Verifiziert",
"Would you like to
accept or
decline this invitation?": "Möchtest du diese Einladung
akzeptieren oder
ablehnen ?",
- "You have been banned from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s dauerhaft aus dem Raum %(roomName)s ausgeschlossen.",
- "You have been kicked from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s entfernt.",
+ "You have been banned from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s verbannt.",
+ "You have been kicked from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum \"%(roomName)s\" gekickt.",
"You may wish to login with a different account, or add this email to this account.": "Du möchtest dich eventuell mit einem anderen Konto anmelden oder alternativ diese E-Mail-Adresse diesem Konto hinzufügen.",
"Your home server does not support device management.": "Dein Heimserver unterstützt kein Geräte-Management.",
- "(~%(count)s results).one": "(~%(count)s Ergebnis)",
- "(~%(count)s results).other": "(~%(count)s Ergebnis)",
+ "(~%(count)s results)|one": "(~%(count)s Ergebnis)",
+ "(~%(count)s results)|other": "(~%(count)s Ergebnis)",
"Device Name": "Geräte-Name",
"(could not connect media)": "(Medienverbindung konnte nicht hergestellt werden)",
"(no answer)": "(keine Antwort)",
@@ -979,12 +837,73 @@
"You're not in any rooms yet! Press
to make a room or to browse the directory": "Du bist bislang keinem Raum beigetreten! Auf klicken, um einen Raum zu erstellen, oder auf klicken, um das Raum-Verzeichnis zu durchsuchen",
"To return to your account in future you need to set a password": "Um in Zukunft auf dein Benutzerkonto zugreifen zu können, musst du ein Passwort einrichten",
"Skip": "Überspringen",
- "Start verification": "Verifikation starten",
- "Share without verifying": "Ohne Verifizierung teilen",
- "Ignore request": "Anfrage ignorieren",
- "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du hast das neue Gerät '%(displayName)s' hinzugefügt, welches nun Verschlüsselungs-Schlüssel anfragt.",
- "Encryption key request": "Verschlüsselungs-Schlüssel-Anfrage",
+ "Start verification": "Verifizierung starten",
+ "Share without verifying": "Ohne Verifizierung verwenden",
+ "Ignore request": "Anforderung ignorieren",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du hast das neue Gerät '%(displayName)s' hinzugefügt, welches nun Verschlüsselungs-Schlüssel anfordert.",
+ "Encryption key request": "Anforderung von Verschlüsselungs-Schlüsseln",
"Your unverified device '%(displayName)s' is requesting encryption keys.": "Dein nicht verifiziertes Gerät '%(displayName)s' fordert Verschlüsselungs-Schlüssel an.",
"Updates": "Updates",
- "Check for update": "Suche nach Updates"
+ "Check for update": "Suche nach Updates",
+ "Add a widget": "Widget hinzufügen",
+ "Allow": "Erlauben",
+ "Changes colour scheme of current room": "Ändere Farbschema des aktuellen Raumes",
+ "Delete widget": "Widget entfernen",
+ "Define the power level of a user": "Setze das Berechtigungslevel eines Benutzers",
+ "Edit": "Bearbeiten",
+ "Enable automatic language detection for syntax highlighting": "Automatische Spracherkennung für die Syntax-Hervorhebung aktivieren",
+ "Hide Apps": "Apps verbergen",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Verberge Beitritt-/Verlassen-Meldungen (außer Einladungen/Kicks/Bans)",
+ "Hide avatar and display name changes": "Verberge Avatar- und Anzeigenamen-Änderungen",
+ "Matrix Apps": "Matrix-Apps",
+ "Revoke widget access": "Ziehe Widget-Zugriff zurück",
+ "Sets the room topic": "Setzt das Raum-Thema",
+ "Show Apps": "Apps anzeigen",
+ "To get started, please pick a username!": "Um zu starten, wähle bitte einen Nutzernamen!",
+ "Unable to create widget.": "Widget kann nicht erstellt werden.",
+ "Unbans user with given id": "Verbannung aufheben für Benutzer mit angegebener ID",
+ "You are not in this room.": "Du bist nicht in diesem Raum.",
+ "You do not have permission to do that in this room.": "Du hast keine Berechtigung, dies in diesem Raum zu tun.",
+ "Verifies a user, device, and pubkey tuple": "Verifiziert ein Tupel aus Nutzer, Gerät und öffentlichem Schlüssel",
+ "Autocomplete Delay (ms):": "Verzögerung zur Autovervollständigung (ms):",
+ "This Home server does not support groups": "Dieser Heimserver unterstützt keine Gruppen",
+ "Loading device info...": "Lädt Geräte-Info...",
+ "Groups": "Gruppen",
+ "Create a new group": "Erstelle eine neue Gruppe",
+ "Create Group": "Erstelle Gruppe",
+ "Group Name": "Gruppenname",
+ "Example": "Beispiel",
+ "Create": "Erstelle",
+ "Group ID": "Gruppen-ID",
+ "+example:%(domain)s": "+beispiel:%(domain)s",
+ "Group IDs must be of the form +localpart:%(domain)s": "Gruppen-IDs müssen von der Form '+lokalteil:%(domain)s' sein",
+ "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Es ist aktuell nur möglich, Gruppen auf deinem eigenen Heimserver zu erstellen. Nutze eine Gruppen-ID, die mit %(domain)s endet",
+ "Room creation failed": "Raum-Erstellung fehlgeschlagen",
+ "You are a member of these groups:": "Du bist Mitglied in folgenden Gruppen:",
+ "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Erstelle eine Gruppe um deine Community darzustellen! Definiere eine Menge von Räumen und deine eigene angepasste Startseite um deinen Bereich im Matrix-Universum zu markieren.",
+ "Join an existing group": "Trete eine existierenden Gruppe bei",
+ "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org .": "Um einer bereits vorhandenen Gruppe beitreten zu können, muss dir die Gruppen-Kennung bekannt sein. Diese sieht aus wie +example:matrix.org .",
+ "Featured Rooms:": "Hervorgehobene Räume:",
+ "Error whilst fetching joined groups": "Fehler beim Laden beigetretener Gruppen",
+ "Featured Users:": "Hervorgehobene Nutzer:",
+ "Edit Group": "Gruppe bearbeiten",
+ "Automatically replace plain text Emoji": "Klartext-Emoji automatisch ersetzen",
+ "Failed to upload image": "Bild-Hochladen fehlgeschlagen",
+ "Failed to update group": "Aktualisieren der Gruppe fehlgeschlagen",
+ "Hide avatars in user and room mentions": "Verberge Profilbilder in Benutzer- und Raum-Erwähnungen",
+ "AM": "a. m.",
+ "PM": "p. m.",
+ "The maximum permitted number of widgets have already been added to this room.": "Die maximal erlaubte Anzahl an hinzufügbaren Widgets für diesen Raum wurde erreicht.",
+ "Cannot add any more widgets": "Kann keine weiteren Widgets hinzufügen",
+ "Do you want to load widget from URL:": "Möchtest du das Widget von folgender URL laden:",
+ "Integrations Error": "Integrations-Error",
+ "NOTE: Apps are not end-to-end encrypted": "BEACHTE: Apps sind nicht Ende-zu-Ende verschlüsselt",
+ "%(widgetName)s widget added by %(senderName)s": "Widget \"%(widgetName)s\" von %(senderName)s hinzugefügt",
+ "%(widgetName)s widget removed by %(senderName)s": "Widget \"%(widgetName)s\" von %(senderName)s entfernt",
+ "Robot check is currently unavailable on desktop - please use a web browser ": "In der Desktop-Version kann derzeit nicht geprüft werden, ob ein Benutzer ein Roboter ist. Bitte einen Webbrowser verwenden",
+ "%(widgetName)s widget modified by %(senderName)s": "Das Widget '%(widgetName)s' wurde von %(senderName)s bearbeitet",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s",
+ "%(weekDayName)s, %(monthName)s %(day)s": "%(weekDayName)s, %(day)s %(monthName)s",
+ "Copied!": "Kopiert!",
+ "Failed to copy": "Kopieren fehlgeschlagen"
}
diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json
index 562318e354..bc45e6da9e 100644
--- a/src/i18n/strings/el.json
+++ b/src/i18n/strings/el.json
@@ -1,33 +1,14 @@
{
- "af": "Αφρικάνικα",
"Error": "Σφάλμα",
"Failed to forget room %(errCode)s": "Δεν ήταν δυνατή η διαγραφή του δωματίου (%(errCode)s)",
- "Failed to join the room": "Δεν ήταν δυνατή η σύνδεση στο δωμάτιο",
"Mute": "Σίγαση",
"Notifications": "Ειδοποιήσεις",
"Operation failed": "Η λειτουργία απέτυχε",
- "Please Register": "Παρακαλούμε εγγραφείτε",
"Remove": "Αφαίρεση",
"Search": "Αναζήτηση",
"Settings": "Ρυθμίσεις",
"unknown error code": "άγνωστος κωδικός σφάλματος",
"Sunday": "Κυριακή",
- "ar-ae": "Αραβικά (Η.Α.Ε)",
- "ar-bh": "Αραβικά (Μπαχρέιν)",
- "ar-dz": "Αραβικά (Αλγερία)",
- "ar-eg": "Αραβικά (Αίγυπτος)",
- "ar-iq": "Αραβικά (Ιράκ)",
- "ar-jo": "Αραβικά (Ιορδανία)",
- "ar-kw": "Αραβικά (Κουβέιτ)",
- "ar-lb": "Αραβικά (Λίβανος)",
- "ar-ly": "Αραβικά (Λιβύη)",
- "ar-ma": "Αραβικά (Μαρόκο)",
- "ar-om": "Αραβικά (Ομάν)",
- "ar-qa": "Αραβικά (Κατάρ)",
- "ar-sa": "Αραβικά (Σαουδική Αραβία)",
- "ar-sy": "Αραβικά (Συρία)",
- "ar-tn": "Αραβικά (Τυνισία)",
- "ar-ye": "Αραβικά (Υεμένη)",
"accept": "αποδοχή",
"%(targetName)s accepted an invitation.": "%(targetName)s δέχτηκε την πρόσκληση.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s δέχτηκες την πρόσκληση για %(displayName)s.",
@@ -60,125 +41,16 @@
"%(senderName)s banned %(targetName)s.": "Ο χρήστης %(senderName)s έδιωξε τον χρήστη %(targetName)s.",
"Autoplay GIFs and videos": "Αυτόματη αναπαραγωγή GIFs και βίντεο",
"Bug Report": "Αναφορά σφάλματος",
- "anyone": "οποιοσδήποτε",
"Anyone who knows the room's link, apart from guests": "Oποιοσδήποτε",
- "all room members, from the point they joined": "όλα τα μέλη, από τη στιγμή που συνδέθηκαν",
"%(items)s and %(lastItem)s": "%(items)s %(lastItem)s",
- "be": "Λευκορώσικα",
- "bg": "Βουλγάρικα",
- "ca": "Καταλανικά",
- "cs": "Τσέχικα",
- "da": "Δανέζικα",
- "de-at": "Γερμανικά (Αυστρία)",
- "de-ch": "Γερμανικά (Ελβετία)",
- "de": "Γερμανικά",
- "de-li": "Γερμανικά (Λιχτενστάιν)",
- "de-lu": "Γερμανικά (Λουξεμβούργο)",
- "el": "Ελληνικά",
- "en-au": "Αγγλικά (Αυστραλία)",
- "en-bz": "Αγγλικά (Μπελίζε)",
- "en-ca": "Αγγλικά (Καναδάς)",
- "en": "Αγγλικά",
- "en-gb": "Αγγλικά (Ηνωμένο Βασίλειο)",
- "en-ie": "Αγγλικά (Ιρλανδία)",
- "en-jm": "Αγγλικά (Τζαμάικα)",
- "en-nz": "Αγγλικά (Νέα Ζηλανδία)",
- "en-tt": "Αγγλικά (Τρινιντάντ)",
- "en-us": "Αγγλικά (Ηνωμένες Πολιτείες)",
- "en-za": "Αγγλικά (Νότια Αφρική)",
- "es-ar": "Ισπανικά (Αργεντινή)",
- "es-bo": "Ισπανικά (Βολιβία)",
- "es-cl": "Ισπανικά (Χιλή)",
- "es-co": "Ισπανικά (Κολομβία)",
- "es-cr": "Ισπανικά (Κόστα Ρίκα)",
- "es-do": "Ισπανικά (Δομινικανή Δημοκρατία)",
- "es-ec": "Ισπανικά (Ισημερινός)",
- "es-gt": "Ισπανικά (Γουατεμάλα)",
- "es-hn": "Ισπανικά (Ονδούρα)",
- "es-mx": "Ισπανικά (Μεξικό)",
- "es-ni": "Ισπανικά (Νικαράγουα)",
- "es-pa": "Ισπανικά (Παναμάς)",
- "es-pe": "Ισπανικά (Περού)",
- "es-pr": "Ισπανικά (Πουέρτο Ρίκο)",
- "es-py": "Ισπανικά (Παραγουάη)",
- "es": "Ισπανικά (Ισπανία)",
- "es-sv": "Ισπανικά (Ελ Σαλβαδόρ)",
- "es-uy": "Ισπανικά (Ουρουγουάη)",
- "es-ve": "Ισπανικά (Βενεζουέλα)",
- "et": "Εσθονικά",
- "eu": "Βασκική (Βασκική)",
- "fa": "Φάρσι",
- "fi": "Φινλανδικά",
- "fo": "Φαρόε",
- "fr-be": "Γαλλικά (Βέλγιο)",
- "fr-ca": "Γαλλικά (Καναδάς)",
- "fr-ch": "Γαλλικά (Ελβετία)",
- "fr": "Γαλλικά",
- "fr-lu": "Γαλλικά (Λουξεμβούργο)",
- "ga": "Ιρλανδικά",
- "gd": "Γαελική (Σκωτία)",
- "he": "Εβραϊκά",
- "hi": "Χίντι",
- "hr": "Κροατικά",
- "hu": "Ουγγρικά",
- "is": "Ισλανδικά",
- "it-ch": "Ιταλικά (Ελβετία)",
- "it": "Ιταλικά",
- "ja": "Ιαπωνικά",
- "ji": "Γίντις",
- "ko": "Κορεάτικα",
- "lt": "Λιθουανικά",
- "mk": "Μακεδονική (ΠΓΔΜ)",
- "ms": "Μαλαισίας",
- "mt": "Μαλτέζικα",
- "nl-be": "Ολλανδικά (Βέλγιο)",
- "nl": "Ολλανδικά",
- "no": "Νορβηγικά",
- "pl": "Πολωνέζικα",
- "pt-br": "Πορτογαλικά Βραζιλίας",
- "pt": "Πορτογαλικά",
- "rm": "Ραιτορωμαϊκά",
- "ro-mo": "Ρουμάνικα (Δημοκρατία της Μολδαβίας)",
- "ro": "Ρουμάνικα",
- "ru-mo": "Ρώσικα (Δημοκρατία της Μολδαβίας)",
- "ru": "Ρώσικα",
- "sb": "Σορβικά",
- "sk": "Σλοβάκικα",
- "sl": "Σλοβενικά",
- "sq": "Αλβανικά",
- "sr": "Σερβικά",
- "sv-fi": "Σουηδικά (Φινλανδία)",
- "sv": "Σουηδικά",
- "sx": "Σούτου",
- "sz": "Σάμη (Λαπωνικά)",
- "th": "Ταϊλανδέζικα",
- "tn": "Τσουάνα",
- "tr": "Τουρκικά",
- "ts": "Τσονγκά",
- "uk": "Ουκρανικά",
- "ur": "Ουρντού",
- "ve": "Venda",
- "vi": "Βιετναμέζικα",
- "xh": "Ξόσα",
- "zh-cn": "Κινέζικα (ΛΔΚ)",
- "zh-hk": "Κινέζικα (ΕΔΠ Χονγκ Κονγκ)",
- "zh-sg": "Κινέζικα (Σιγκαπούρη)",
- "zh-tw": "Κινέζικα (Ταϊβάν)",
- "zu": "Ζουλού",
- "id": "Ινδονησιακά",
- "lv": "Λετονικά",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ένα μήνυμα στάλθηκε στο +%(msisdn)s. Παρακαλώ γράψε τον κωδικό επαλήθευσης που περιέχει",
"Access Token:": "Κωδικός πρόσβασης:",
"Always show message timestamps": "Εμφάνιση πάντα της ένδειξης ώρας στα μηνύματα",
- "all room members": "όλα τα μέλη",
- "all room members, from the point they are invited": "όλα τα μέλη, από τη στιγμή που προσκλήθηκαν",
"an address": "μία διεύθηνση",
"%(items)s and %(remaining)s others": "%(items)s και %(remaining)s ακόμα",
"%(items)s and one other": "%(items)s και ένας ακόμα",
- "and %(count)s others...": {
- "other": "και %(count)s άλλοι...",
- "one": "και ένας ακόμα..."
- },
+ "and %(count)s others...|one": "και ένας ακόμα...",
+ "and %(count)s others...|other": "και %(count)s άλλοι...",
"%(names)s and %(lastPerson)s are typing": "%(names)s και %(lastPerson)s γράφουν",
"%(names)s and one other are typing": "%(names)s και ένας ακόμα γράφουν",
"%(names)s and %(count)s others are typing": "%(names)s και %(count)s άλλοι γράφουν",
@@ -222,7 +94,6 @@
"device id: ": "αναγνωριστικό συσκευής: ",
"Device key:": "Κλειδί συσκευής:",
"Devices": "Συσκευές",
- "Direct Chat": "Απευθείας συνομιλία",
"Direct chats": "Απευθείας συνομιλίες",
"disabled": "ανενεργό",
"Disinvite": "Ανάκληση πρόσκλησης",
@@ -265,7 +136,6 @@
"For security, this session has been signed out. Please sign in again.": "Για λόγους ασφαλείας, αυτή η συνεδρία έχει τερματιστεί. Παρακαλούμε συνδεθείτε ξανά.",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Για λόγους ασφαλείας, τα κλειδιά κρυπτογράφησης θα διαγράφονται από τον περιηγητή κατά την αποσύνδεση σας. Εάν επιθυμείτε να αποκρυπτογραφήσετε τις συνομιλίες σας στο μέλλον, εξάγετε τα κλειδιά σας και κρατήστε τα ασφαλή.",
"Found a bug?": "Βρήκατε κάποιο πρόβλημα;",
- "Guest users can't upload files. Please register to upload.": "Οι επισκέπτες δεν μπορούν να ανεβάσουν αρχεία. Παρακαλώ εγγραφείτε πρώτα.",
"had": "είχε",
"Hangup": "Κλείσιμο",
"Historical": "Ιστορικό",
@@ -297,7 +167,6 @@
"left": "έφυγε",
"%(targetName)s left the room.": "Ο χρήστης %(targetName)s έφυγε από το δωμάτιο.",
"Level": "Επίπεδο",
- "List this room in %(domain)s's room directory?": "Να εμφανίζεται το δωμάτιο στο γενικό ευρετήριο του διακομιστή %(domain)s;",
"Local addresses for this room:": "Τοπική διεύθυνση για το δωμάτιο:",
"Logged in as:": "Συνδεθήκατε ως:",
"Login as guest": "Σύνδεση ως επισκέπτης",
@@ -387,12 +256,11 @@
"Create new room": "Δημιουργία νέου δωματίου",
"Room directory": "Ευρετήριο",
"Start chat": "Έναρξη συνομιλίας",
- "Welcome page": "Αρχική σελίδα",
"a room": "ένα δωμάτιο",
"Accept": "Αποδοχή",
"Active call (%(roomName)s)": "Ενεργή κλήση (%(roomName)s)",
"Add": "Προσθήκη",
- "Admin tools": "Εργαλεία διαχειριστή",
+ "Admin Tools": "Εργαλεία διαχειριστή",
"And %(count)s more...": "Και %(count)s περισσότερα...",
"No media permissions": "Χωρίς δικαιώματα πολυμέσων",
"Alias (optional)": "Ψευδώνυμο (προαιρετικό)",
@@ -406,12 +274,11 @@
"click to reveal": "κάντε κλικ για εμφάνιση",
"Click to unmute video": "Κάντε κλικ για άρση σίγασης του βίντεο",
"Click to unmute audio": "Κάντε κλικ για άρση σίγασης του ήχου",
- "%(count)s new messages.one": "%(count)s νέο μήνυμα",
- "%(count)s new messages.other": "%(count)s νέα μηνύματα",
+ "%(count)s new messages|one": "%(count)s νέο μήνυμα",
+ "%(count)s new messages|other": "%(count)s νέα μηνύματα",
"Custom": "Προσαρμοσμένο",
"Decline": "Απόρριψη",
"Disable Notifications": "Απενεργοποίηση ειδοποιήσεων",
- "Disable markdown formatting": "Απενεργοποίηση μορφοποίησης markdown",
"Drop File Here": "Αποθέστε εδώ το αρχείο",
"Enable Notifications": "Ενεργοποίηση ειδοποιήσεων",
"Encryption is enabled in this room": "Η κρυπτογράφηση είναι ενεργοποιημένη σε αυτό το δωμάτιο",
@@ -455,7 +322,6 @@
"Room %(roomId)s not visible": "Το δωμάτιο %(roomId)s δεν είναι ορατό",
"%(roomName)s does not exist.": "Το %(roomName)s δεν υπάρχει.",
"Searches DuckDuckGo for results": "Γίνεται αναζήτηση στο DuckDuckGo για αποτελέσματα",
- "Searching known users": "Αναζήτηση γνωστών χρηστών",
"Seen by %(userName)s at %(dateTime)s": "Διαβάστηκε από %(userName)s στις %(dateTime)s",
"Send anyway": "Αποστολή ούτως ή άλλως",
"Send Invites": "Αποστολή προσκλήσεων",
@@ -472,7 +338,6 @@
"The main address for this room is": "Η κύρια διεύθυνση για το δωμάτιο είναι",
"%(actionVerb)s this person?": "%(actionVerb)s αυτού του ατόμου;",
"The file '%(fileName)s' failed to upload": "Απέτυχε η αποστολή του αρχείου '%(fileName)s'",
- "There was a problem logging in.": "Υπήρξε ένα πρόβλημα κατά την σύνδεση.",
"This room has no local addresses": "Αυτό το δωμάτιο δεν έχει τοπικές διευθύνσεις",
"This doesn't appear to be a valid email address": "Δεν μοιάζει με μια έγκυρη διεύθυνση ηλεκτρονικής αλληλογραφίας",
"This phone number is already in use": "Αυτός ο αριθμός τηλεφώνου είναι ήδη σε χρήση",
@@ -491,7 +356,6 @@
"Turn Markdown on": "Ενεργοποίηση Markdown",
"Unable to add email address": "Αδυναμία προσθήκης διεύθυνσης ηλ. αλληλογραφίας",
"Unable to remove contact information": "Αδυναμία αφαίρεσης πληροφοριών επαφής",
- "Unable to restore previous session": "Αδυναμία επαναφοράς της προηγούμενης συνεδρίας",
"Unable to verify email address.": "Αδυναμία επιβεβαίωσης διεύθυνσης ηλεκτρονικής αλληλογραφίας.",
"Unban": "Άρση αποκλεισμού",
"%(senderName)s unbanned %(targetName)s.": "Ο χρήστης %(senderName)s έδιωξε τον χρήστη %(targetName)s.",
@@ -503,7 +367,6 @@
"unknown caller": "άγνωστος καλών",
"unknown device": "άγνωστη συσκευή",
"Unknown room %(roomId)s": "Άγνωστο δωμάτιο %(roomId)s",
- "unknown": "άγνωστο",
"Unmute": "Άρση σίγασης",
"Unnamed Room": "Ανώνυμο δωμάτιο",
"Unrecognised command:": "Μη αναγνωρίσιμη εντολή:",
@@ -556,7 +419,6 @@
"%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Set a display name:": "Ορισμός ονόματος εμφάνισης:",
- "Set a Display Name": "Ορισμός ονόματος εμφάνισης",
"Upload an avatar:": "Αποστολή προσωπικής εικόνας:",
"This server does not support authentication with a phone number.": "Αυτός ο διακομιστής δεν υποστηρίζει πιστοποίηση με αριθμό τηλεφώνου.",
"Missing password.": "Λείπει ο κωδικός πρόσβασης.",
@@ -569,9 +431,8 @@
"Make Moderator": "Ορισμός συντονιστή",
"Encrypt room": "Κρυπτογράφηση δωματίου",
"Room": "Δωμάτιο",
- "Auto-complete": "Αυτόματη συμπλήρωση",
- "(~%(count)s results).one": "(~%(count)s αποτέλεσμα)",
- "(~%(count)s results).other": "(~%(count)s αποτελέσματα)",
+ "(~%(count)s results)|one": "(~%(count)s αποτέλεσμα)",
+ "(~%(count)s results)|other": "(~%(count)s αποτελέσματα)",
"Active call": "Ενεργή κλήση",
"strike": "επιγράμμιση",
"bullet": "κουκκίδα",
@@ -595,7 +456,6 @@
"Import room keys": "Εισαγωγή κλειδιών δωματίου",
"File to import": "Αρχείο για εισαγωγή",
"Start new chat": "Έναρξη νέας συνομιλίας",
- "Guest users can't invite users. Please register.": "Οι επισκέπτες δεν έχουν τη δυνατότητα να προσκαλέσουν άλλους χρήστες. Παρακαλούμε εγγραφείτε πρώτα.",
"Confirm Removal": "Επιβεβαίωση αφαίρεσης",
"Unknown error": "Άγνωστο σφάλμα",
"Incorrect password": "Λανθασμένος κωδικός πρόσβασης",
@@ -659,9 +519,6 @@
"Failed to unban": "Δεν ήταν δυνατή η άρση του αποκλεισμού",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s από %(fromPowerLevel)s σε %(toPowerLevel)s",
"Guest access is disabled on this Home Server.": "Έχει απενεργοποιηθεί η πρόσβαση στους επισκέπτες σε αυτόν τον διακομιστή.",
- "Guests can't set avatars. Please register.": "Οι επισκέπτες δεν μπορούν να ορίσουν προσωπικές εικόνες. Παρακαλούμε εγγραφείτε.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Οι επισκέπτες δεν μπορούν να δημιουργήσουν νέα δωμάτια. Παρακαλούμε εγγραφείτε για να δημιουργήσετε ένα δωμάτιο και να ξεκινήσετε μια συνομιλία.",
- "Guests can't use labs features. Please register.": "Οι επισκέπτες δεν μπορούν να χρησιμοποιήσουν τα πειραματικά χαρακτηριστικά. Παρακαλούμε εγγραφείτε.",
"Guests cannot join this room even if explicitly invited.": "Οι επισκέπτες δεν μπορούν να συνδεθούν στο δωμάτιο ακόμη και αν έχουν καλεστεί.",
"Hide Text Formatting Toolbar": "Απόκρυψη εργαλειοθήκης μορφοποίησης κειμένου",
"Incoming call from %(name)s": "Εισερχόμενη κλήση από %(name)s",
@@ -674,14 +531,17 @@
"Invites user with given id to current room": "Προσκαλεί τον χρήστη με το δοσμένο αναγνωριστικό στο τρέχον δωμάτιο",
"'%(alias)s' is not a valid format for an address": "Το '%(alias)s' δεν είναι μια έγκυρη μορφή διεύθυνσης",
"'%(alias)s' is not a valid format for an alias": "Το '%(alias)s' δεν είναι μια έγκυρη μορφή ψευδώνυμου",
- "%(senderName)s made future room history visible to": "Ο %(senderName)s έκανε το μελλοντικό ιστορικό του δωματίου δημόσιο",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "Ο %(senderName)s έκανε το μελλοντικό ιστορικό του δωματίου δημόσιο όλα τα μέλη, από τη στιγμή που προσκλήθηκαν.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "Ο %(senderName)s έκανε το μελλοντικό ιστορικό του δωματίου δημόσιο όλα τα μέλη, από τη στιγμή που συνδέθηκαν.",
+ "%(senderName)s made future room history visible to all room members.": "Ο %(senderName)s έκανε το μελλοντικό ιστορικό του δωματίου δημόσιο όλα τα μέλη.",
+ "%(senderName)s made future room history visible to anyone.": "Ο %(senderName)s έκανε το μελλοντικό ιστορικό του δωματίου δημόσιο οποιοσδήποτε.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "Ο %(senderName)s έκανε το μελλοντικό ιστορικό του δωματίου δημόσιο άγνωστο (%(visibility)s).",
"Missing user_id in request": "Λείπει το user_id στο αίτημα",
"Mobile phone number (optional)": "Αριθμός κινητού τηλεφώνου (προαιρετικό)",
"Must be viewing a room": "Πρέπει να βλέπετε ένα δωμάτιο",
"Never send encrypted messages to unverified devices from this device": "Να μη γίνει ποτέ αποστολή κρυπτογραφημένων μηνυμάτων σε ανεπιβεβαίωτες συσκευές από αυτή τη συσκευή",
"Never send encrypted messages to unverified devices in this room": "Να μη γίνει ποτέ αποστολή κρυπτογραφημένων μηνυμάτων σε ανεπιβεβαίωτες συσκευές σε αυτό το δωμάτιο",
"Never send encrypted messages to unverified devices in this room from this device": "Να μη γίνει ποτέ αποστολή κρυπτογραφημένων μηνυμάτων σε ανεπιβεβαίωτες συσκευές, σε αυτό το δωμάτιο, από αυτή τη συσκευή",
- "New Composer & Autocomplete": "Νέος επεξεργαστής κειμένου και αυτόματη συμπλήρωση",
"not set": "δεν έχει οριστεί",
"not specified": "μη καθορισμένο",
"NOT verified": "ΧΩΡΙΣ επαλήθευση",
@@ -689,12 +549,11 @@
"No display name": "Χωρίς όνομα",
"No users have specific privileges in this room": "Κανένας χρήστης δεν έχει συγκεκριμένα δικαιώματα σε αυτό το δωμάτιο",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Μόλις ενεργοποιηθεί η κρυπτογράφηση για ένα δωμάτιο, δεν μπορεί να απενεργοποιηθεί ξανά (για τώρα)",
- "Once you've followed the link it contains, click below": "Μόλις ακολουθήσετε τον σύνδεσμο που περιέχει, κάντε κλικ παρακάτω",
+ "Once you've followed the link it contains, click below": "Μόλις ακολουθήσετε τον σύνδεσμο που περιέχει, κάντε κλικ παρακάτω",
"Only people who have been invited": "Μόνο άτομα που έχουν προσκληθεί",
"Otherwise, click here to send a bug report.": "Διαφορετικά, κάντε κλικ εδώ για να αποστείλετε μια αναφορά σφάλματος.",
"%(senderName)s placed a %(callType)s call.": "Ο %(senderName)s πραγματοποίησε μια %(callType)s κλήση.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Παρακαλούμε ελέγξτε την ηλεκτρονική σας αλληλογραφία και κάντε κλικ στον σύνδεσμο που περιέχει. Μόλις γίνει αυτό, κάντε κλίκ στο κουμπί συνέχεια.",
- "Press": "Πατήστε",
"Refer a friend to Riot:": "Πείτε για το Riot σε έναν φίλο σας:",
"Rejoin": "Επανασύνδεση",
"%(senderName)s removed their profile picture.": "Ο %(senderName)s αφαίρεσε τη φωτογραφία του προφίλ του.",
@@ -720,8 +579,8 @@
"to start a chat with someone": "για να ξεκινήσετε μια συνομιλία με κάποιον",
"Unable to capture screen": "Αδυναμία σύλληψης οθόνης",
"Unknown (user, device) pair:": "Άγνωστο ζεύγος (χρήστη, συσκευής):",
- "Uploading %(filename)s and %(count)s others.zero": "Γίνεται αποστολή του %(filename)s",
- "Uploading %(filename)s and %(count)s others.other": "Γίνεται αποστολή του %(filename)s και %(count)s υπολοίπων",
+ "Uploading %(filename)s and %(count)s others|zero": "Γίνεται αποστολή του %(filename)s",
+ "Uploading %(filename)s and %(count)s others|other": "Γίνεται αποστολή του %(filename)s και %(count)s υπολοίπων",
"uploaded a file": "ανέβασε ένα αρχείο",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (δύναμη %(powerLevelNumber)s)",
"Verification Pending": "Εκκρεμεί επιβεβαίωση",
@@ -802,10 +661,8 @@
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "Ο %(senderName)s έστειλε μια πρόσκληση στον %(targetDisplayName)s για να συνδεθεί στο δωμάτιο.",
"%(senderName)s set their display name to %(displayName)s.": "Ο %(senderName)s όρισε το όνομα του σε %(displayName)s.",
"Sorry, this homeserver is using a login which is not recognised ": "Συγγνώμη, ο διακομιστής χρησιμοποιεί έναν τρόπο σύνδεσης που δεν αναγνωρίζεται ",
- "tag as %(tagName)s": "ετικέτα ως %(tagName)s",
"tag direct chat": "προσθήκη ετικέτας στην απευθείας συνομιλία",
"The phone number entered looks invalid": "Ο αριθμός που καταχωρίσατε δεν είναι έγκυρος",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "Αυτή η ενέργεια δεν μπορεί να εκτελεστεί από έναν επισκέπτη. Παρακαλούμε εγγραφείτε για να μπορέσετε να το κάνετε.",
"The email address linked to your account must be entered.": "Πρέπει να εισηχθεί η διεύθυνση ηλ. αλληλογραφίας που είναι συνδεδεμένη με τον λογαριασμό σας.",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "Το αρχείο '%(fileName)s' υπερβαίνει το όριο μεγέθους του διακομιστή για αποστολές",
"The remote side failed to pick up": "Η απομακρυσμένη πλευρά απέτυχε να συλλέξει",
@@ -817,11 +674,10 @@
"This room is not accessible by remote Matrix servers": "Αυτό το δωμάτιο δεν είναι προσβάσιμο από απομακρυσμένους διακομιστές Matrix",
"to demote": "για υποβίβαση",
"To reset your password, enter the email address linked to your account": "Για να επαναφέρετε τον κωδικό πρόσβασης σας, πληκτρολογήστε τη διεύθυνση ηλ. αλληλογραφίας όπου είναι συνδεδεμένη με τον λογαριασμό σας",
- "to tag as %(tagName)s": "για να οριστεί ετικέτα ως %(tagName)s",
"to tag direct chat": "για να οριστεί ετικέτα σε απευθείας συνομιλία",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "Ο %(senderName)s ενεργοποίησε την από άκρο σε άκρο κρυπτογράφηση (algorithm %(algorithm)s).",
"Undecryptable": "Μη αποκρυπτογραφημένο",
- "Uploading %(filename)s and %(count)s others.one": "Γίνεται αποστολή του %(filename)s και %(count)s υπολοίπα",
+ "Uploading %(filename)s and %(count)s others|one": "Γίνεται αποστολή του %(filename)s και %(count)s υπολοίπα",
"Would you like to accept or decline this invitation?": "Θα θέλατε να δεχθείτε ή να απορρίψετε την πρόσκληση;",
"You already have existing direct chats with this user:": "Έχετε ήδη απευθείας συνομιλίες με τον χρήστη:",
"You are trying to access %(roomName)s.": "Προσπαθείτε να έχετε πρόσβαση στο %(roomName)s.",
@@ -829,7 +685,6 @@
"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": "Έχετε αποσυνδεθεί από όλες τις συσκευές και δεν θα λαμβάνετε πλέον ειδοποιήσεις push. Για να ενεργοποιήσετε τις ειδοποιήσεις, συνδεθείτε ξανά σε κάθε συσκευή",
"You have disabled URL previews by default.": "Έχετε απενεργοποιημένη από προεπιλογή την προεπισκόπηση συνδέσμων.",
"You have enabled URL previews by default.": "Έχετε ενεργοποιημένη από προεπιλογή την προεπισκόπηση συνδέσμων.",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "Έχετε πληκτρολογήσει μια άκυρη επαφή. Χρησιμοποιήστε το Matrix ID ή την ηλεκτρονική διεύθυνση αλληλογραφίας τους.",
"You may wish to login with a different account, or add this email to this account.": "Μπορεί να θέλετε να συνδεθείτε με διαφορετικό λογαριασμό, ή να προσθέσετε αυτή τη διεύθυνση ηλεκτρονικής αλληλογραφίας σε αυτόν τον λογαριασμό.",
"You need to be able to invite users to do that.": "Για να το κάνετε αυτό πρέπει να έχετε τη δυνατότητα να προσκαλέσετε χρήστες.",
"You seem to be uploading files, are you sure you want to quit?": "Φαίνεται ότι αποστέλετε αρχεία, είστε βέβαιοι ότι θέλετε να αποχωρήσετε;",
@@ -850,7 +705,6 @@
"You must join the room to see its files": "Πρέπει να συνδεθείτε στο δωμάτιο για να δείτε τα αρχεία του",
"Reject all %(invitedRooms)s invites": "Απόρριψη όλων των προσκλήσεων %(invitedRooms)s",
"Failed to invite the following users to the %(roomName)s room:": "Δεν ήταν δυνατή η πρόσκληση των χρηστών στο δωμάτιο %(roomName)s:",
- "changing room on a RoomView is not supported": "Δεν υποστηρίζεται η αλλαγή δωματίου σε RoomView",
"demote": "υποβίβαση",
"Deops user with given id": "Deop χρήστη με το συγκεκριμένο αναγνωριστικό",
"Disable inline URL previews by default": "Απενεργοποίηση προεπισκόπησης συνδέσμων από προεπιλογή",
@@ -904,7 +758,6 @@
"If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Εάν ταιριάζει, πατήστε το κουμπί επιβεβαίωσης παρακάτω. Εάν όχι, τότε κάποιος άλλος παρακολουθεί αυτή τη συσκευή και ίσως θέλετε να πατήσετε το κουμπί της μαύρης λίστας.",
"We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Παρουσιάστηκε ένα σφάλμα κατά την προσπάθεια επαναφοράς της προηγούμενης συνεδρίας. Αν συνεχίσετε, θα χρειαστεί να συνδεθείτε ξανά και το κρυπτογραφημένο ιστορικό συνομιλιών θα είναι μη αναγνώσιμο.",
"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.": "Αν χρησιμοποιούσατε προηγουμένως μια πιο πρόσφατη έκδοση του Riot, η συνεδρία σας ίσως είναι μη συμβατή με αυτήν την έκδοση. Κλείστε αυτό το παράθυρο και επιστρέψτε στην πιο πρόσφατη έκδοση.",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Το εμφανιζόμενο όνομα είναι το πως θα εμφανιστείτε σε άλλους όταν μιλάτε σε δωμάτια. Τι θα θέλατε να είναι;",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Αυτήν τη στιγμή βάζετε σε μαύρη λίστα μη επιβαιωμένες συσκευές. Για να στείλετε μηνύματα σε αυτές τις συσκευές, πρέπει να τις επιβεβαιώσετε.",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Σας συνιστούμε να ολοκληρώσετε τη διαδικασία επαλήθευσης για κάθε συσκευή και να επιβεβαιώσετε ότι ανήκουν στον νόμιμο κάτοχό της, αλλά εάν προτιμάτε μπορείτε να στείλετε ξανά το μήνυμα χωρίς επαλήθευση.",
"You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Θα μεταφερθείτε σε έναν ιστότοπου τρίτου για να πραγματοποιηθεί η πιστοποίηση του λογαριασμού σας με το %(integrationsUrl)s. Θα θέλατε να συνεχίσετε;",
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index bf173bb806..668ec3ed6e 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -1,125 +1,5 @@
{
"Add a widget": "Add a widget",
- "af": "Afrikaans",
- "ar-ae": "Arabic (U.A.E.)",
- "ar-bh": "Arabic (Bahrain)",
- "ar-dz": "Arabic (Algeria)",
- "ar-eg": "Arabic (Egypt)",
- "ar-iq": "Arabic (Iraq)",
- "ar-jo": "Arabic (Jordan)",
- "ar-kw": "Arabic (Kuwait)",
- "ar-lb": "Arabic (Lebanon)",
- "ar-ly": "Arabic (Libya)",
- "ar-ma": "Arabic (Morocco)",
- "ar-om": "Arabic (Oman)",
- "ar-qa": "Arabic (Qatar)",
- "ar-sa": "Arabic (Saudi Arabia)",
- "ar-sy": "Arabic (Syria)",
- "ar-tn": "Arabic (Tunisia)",
- "ar-ye": "Arabic (Yemen)",
- "be": "Belarusian",
- "bg": "Bulgarian",
- "ca": "Catalan",
- "cs": "Czech",
- "da": "Danish",
- "de-at": "German (Austria)",
- "de-ch": "German (Switzerland)",
- "de": "German",
- "de-li": "German (Liechtenstein)",
- "de-lu": "German (Luxembourg)",
- "el": "Greek",
- "en-au": "English (Australia)",
- "en-bz": "English (Belize)",
- "en-ca": "English (Canada)",
- "en": "English",
- "en-gb": "English (United Kingdom)",
- "en-ie": "English (Ireland)",
- "en-jm": "English (Jamaica)",
- "en-nz": "English (New Zealand)",
- "en-tt": "English (Trinidad)",
- "en-us": "English (United States)",
- "en-za": "English (South Africa)",
- "es-ar": "Spanish (Argentina)",
- "es-bo": "Spanish (Bolivia)",
- "es-cl": "Spanish (Chile)",
- "es-co": "Spanish (Colombia)",
- "es-cr": "Spanish (Costa Rica)",
- "es-do": "Spanish (Dominican Republic)",
- "es-ec": "Spanish (Ecuador)",
- "es-gt": "Spanish (Guatemala)",
- "es-hn": "Spanish (Honduras)",
- "es-mx": "Spanish (Mexico)",
- "es-ni": "Spanish (Nicaragua)",
- "es-pa": "Spanish (Panama)",
- "es-pe": "Spanish (Peru)",
- "es-pr": "Spanish (Puerto Rico)",
- "es-py": "Spanish (Paraguay)",
- "es": "Spanish (Spain)",
- "es-sv": "Spanish (El Salvador)",
- "es-uy": "Spanish (Uruguay)",
- "es-ve": "Spanish (Venezuela)",
- "et": "Estonian",
- "eu": "Basque (Basque)",
- "fa": "Farsi",
- "fi": "Finnish",
- "fo": "Faeroese",
- "fr-be": "French (Belgium)",
- "fr-ca": "French (Canada)",
- "fr-ch": "French (Switzerland)",
- "fr": "French",
- "fr-lu": "French (Luxembourg)",
- "ga": "Irish",
- "gd": "Gaelic (Scotland)",
- "he": "Hebrew",
- "hi": "Hindi",
- "hr": "Croatian",
- "hu": "Hungarian",
- "id": "Indonesian",
- "is": "Icelandic",
- "it-ch": "Italian (Switzerland)",
- "it": "Italian",
- "ja": "Japanese",
- "ji": "Yiddish",
- "ko": "Korean",
- "lt": "Lithuanian",
- "lv": "Latvian",
- "mk": "Macedonian (FYROM)",
- "ms": "Malaysian",
- "mt": "Maltese",
- "nl-be": "Dutch (Belgium)",
- "nl": "Dutch",
- "no": "Norwegian",
- "pl": "Polish",
- "pt-br": "Brazilian Portuguese",
- "pt": "Portuguese",
- "rm": "Rhaeto-Romanic",
- "ro-mo": "Romanian (Republic of Moldova)",
- "ro": "Romanian",
- "ru-mo": "Russian (Republic of Moldova)",
- "ru": "Russian",
- "sb": "Sorbian",
- "sk": "Slovak",
- "sl": "Slovenian",
- "sq": "Albanian",
- "sr": "Serbian",
- "sv-fi": "Swedish (Finland)",
- "sv": "Swedish",
- "sx": "Sutu",
- "sz": "Sami (Lappish)",
- "th": "Thai",
- "tn": "Tswana",
- "tr": "Turkish",
- "ts": "Tsonga",
- "uk": "Ukrainian",
- "ur": "Urdu",
- "ve": "Venda",
- "vi": "Vietnamese",
- "xh": "Xhosa",
- "zh-cn": "Chinese (PRC)",
- "zh-hk": "Chinese (Hong Kong SAR)",
- "zh-sg": "Chinese (Singapore)",
- "zh-tw": "Chinese (Taiwan)",
- "zu": "Zulu",
"a room": "a room",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains",
"Accept": "Accept",
@@ -133,7 +13,7 @@
"Add email address": "Add email address",
"Add phone number": "Add phone number",
"Admin": "Admin",
- "Admin tools": "Admin tools",
+ "Admin Tools": "Admin tools",
"Allow": "Allow",
"And %(count)s more...": "And %(count)s more...",
"VoIP": "VoIP",
@@ -152,24 +32,18 @@
"Always show message timestamps": "Always show message timestamps",
"Authentication": "Authentication",
"Alias (optional)": "Alias (optional)",
- "all room members": "all room members",
- "all room members, from the point they are invited": "all room members, from the point they are invited",
- "all room members, from the point they joined": "all room members, from the point they joined",
"and": "and",
"%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others",
"%(items)s and one other": "%(items)s and one other",
"%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s",
- "and %(count)s others...": {
- "other": "and %(count)s others...",
- "one": "and one other..."
- },
+ "and %(count)s others...|other": "and %(count)s others...",
+ "and %(count)s others...|one": "and one other...",
"%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing",
"%(names)s and one other are typing": "%(names)s and one other are typing",
"%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing",
"An email has been sent to": "An email has been sent to",
"A new password must be entered.": "A new password must be entered.",
"%(senderName)s answered the call.": "%(senderName)s answered the call.",
- "anyone": "anyone",
"An error has occurred.": "An error has occurred.",
"Anyone": "Anyone",
"Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests",
@@ -193,6 +67,7 @@
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts .": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts .",
"Can't load user settings": "Can't load user settings",
+ "Cannot add any more widgets": "Cannot add any more widgets",
"Change Password": "Change Password",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.",
"%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.",
@@ -203,7 +78,6 @@
"Changes to who can read history will only apply to future messages in this room": "Changes to who can read history will only apply to future messages in this room",
"Changes your display nickname": "Changes your display nickname",
"Changes colour scheme of current room": "Changes colour scheme of current room",
- "changing room on a RoomView is not supported": "changing room on a RoomView is not supported",
"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.": "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.",
"Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key",
"Clear Cache and Reload": "Clear Cache and Reload",
@@ -226,10 +100,8 @@
"Confirm your new password": "Confirm your new password",
"Continue": "Continue",
"Could not connect to the integration server": "Could not connect to the integration server",
- "%(count)s new messages": {
- "one": "%(count)s new message",
- "other": "%(count)s new messages"
- },
+ "%(count)s new messages|one": "%(count)s new message",
+ "%(count)s new messages|other": "%(count)s new messages",
"Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one",
"Create an account": "Create an account",
"Create Room": "Create Room",
@@ -257,15 +129,14 @@
"Device key:": "Device key:",
"Devices": "Devices",
"Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room",
- "Direct Chat": "Direct Chat",
"Direct chats": "Direct chats",
"Disable Notifications": "Disable Notifications",
"disabled": "disabled",
"Disable inline URL previews by default": "Disable inline URL previews by default",
- "Disable markdown formatting": "Disable markdown formatting",
"Disinvite": "Disinvite",
"Display name": "Display name",
"Displays action": "Displays action",
+ "Do you want to load widget from URL:": "Do you want to load widget from URL:",
"Don't send typing notifications": "Don't send typing notifications",
"Download %(text)s": "Download %(text)s",
"Drop File Here": "Drop File Here",
@@ -307,7 +178,6 @@
"Failed to fetch avatar URL": "Failed to fetch avatar URL",
"Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s",
"Failed to join room": "Failed to join room",
- "Failed to join the room": "Failed to join the room",
"Failed to kick": "Failed to kick",
"Failed to leave room": "Failed to leave room",
"Failed to load timeline position": "Failed to load timeline position",
@@ -340,10 +210,6 @@
"Found a bug?": "Found a bug?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s",
"Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.",
- "Guests can't set avatars. Please register.": "Guests can't set avatars. Please register.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Guest users can't create new rooms. Please register to create room and start a chat.",
- "Guest users can't upload files. Please register to upload.": "Guest users can't upload files. Please register to upload.",
- "Guests can't use labs features. Please register.": "Guests can't use labs features. Please register.",
"Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.",
"had": "had",
"Hangup": "Hangup",
@@ -364,6 +230,7 @@
"Incoming voice call from %(name)s": "Incoming voice call from %(name)s",
"Incorrect username and/or password.": "Incorrect username and/or password.",
"Incorrect verification code": "Incorrect verification code",
+ "Integrations Error": "Integrations Error",
"Interface Language": "Interface Language",
"Invalid alias format": "Invalid alias format",
"Invalid address format": "Invalid address format",
@@ -389,25 +256,40 @@
"Kick": "Kick",
"Kicks user with given id": "Kicks user with given id",
"Labs": "Labs",
+ "Ignored Users": "Ignored Users",
+ "Ignore": "Ignore",
+ "Unignore": "Unignore",
+ "User Options": "User Options",
+ "You are now ignoring %(userId)s": "You are now ignoring %(userId)s",
+ "You are no longer ignoring %(userId)s": "You are no longer ignoring %(userId)s",
+ "Unignored user": "Unignored user",
+ "Ignored user": "Ignored user",
+ "Stops ignoring a user, showing their messages going forward": "Stops ignoring a user, showing their messages going forward",
+ "Ignores a user, hiding their messages from you": "Ignores a user, hiding their messages from you",
"Last seen": "Last seen",
"Leave room": "Leave room",
"left and rejoined": "left and rejoined",
"left": "left",
"%(targetName)s left the room.": "%(targetName)s left the room.",
"Level:": "Level:",
- "List this room in %(domain)s's room directory?": "List this room in %(domain)s's room directory?",
+ "Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?",
"Local addresses for this room:": "Local addresses for this room:",
"Logged in as:": "Logged in as:",
"Login as guest": "Login as guest",
"Logout": "Logout",
"Low priority": "Low priority",
- "%(senderName)s made future room history visible to": "%(senderName)s made future room history visible to",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s made future room history visible to all room members, from the point they are invited.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s made future room history visible to all room members, from the point they joined.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s made future room history visible to all room members.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s made future room history visible to anyone.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s made future room history visible to unknown (%(visibility)s).",
"Manage Integrations": "Manage Integrations",
"Markdown is disabled": "Markdown is disabled",
"Markdown is enabled": "Markdown is enabled",
"matrix-react-sdk version:": "matrix-react-sdk version:",
"Matrix Apps": "Matrix Apps",
"Members only": "Members only",
+ "Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing",
"Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present",
"Missing room_id in request": "Missing room_id in request",
"Missing user_id in request": "Missing user_id in request",
@@ -422,7 +304,6 @@
"Never send encrypted messages to unverified devices in this room": "Never send encrypted messages to unverified devices in this room",
"Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device",
"New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)",
- "New Composer & Autocomplete": "New Composer & Autocomplete",
"New password": "New password",
"New passwords don't match": "New passwords don't match",
"New passwords must match each other.": "New passwords must match each other.",
@@ -435,6 +316,7 @@
"AM": "AM",
"PM": "PM",
"NOT verified": "NOT verified",
+ "NOTE: Apps are not end-to-end encrypted": "NOTE: Apps are not end-to-end encrypted",
"No devices with registered encryption keys": "No devices with registered encryption keys",
"No display name": "No display name",
"No more results": "No more results",
@@ -443,7 +325,7 @@
"OK": "OK",
"olm version:": "olm version:",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)",
- "Once you've followed the link it contains, click below": "Once you've followed the link it contains, click below",
+ "Once you've followed the link it contains, click below": "Once you've followed the link it contains, click below",
"Only people who have been invited": "Only people who have been invited",
"Operation failed": "Operation failed",
"Otherwise, click here to send a bug report.": "Otherwise, click here to send a bug report.",
@@ -455,9 +337,7 @@
"Phone": "Phone",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.",
- "Please Register": "Please Register",
"Power level must be positive integer.": "Power level must be positive integer.",
- "Press": "Press",
"Press to start a chat with someone": "Press to start a chat with someone",
"Privacy warning": "Privacy warning",
"Private Chat": "Private Chat",
@@ -503,7 +383,6 @@
"Search": "Search",
"Search failed": "Search failed",
"Searches DuckDuckGo for results": "Searches DuckDuckGo for results",
- "Searching known users": "Searching known users",
"Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s",
"Send a message (unencrypted)": "Send a message (unencrypted)",
"Send an encrypted message": "Send an encrypted message",
@@ -545,14 +424,13 @@
"Start Chat": "Start Chat",
"Submit": "Submit",
"Success": "Success",
- "tag as %(tagName)s": "tag as %(tagName)s",
"tag direct chat": "tag direct chat",
"Tagged as: ": "Tagged as: ",
"The default role for new room members is": "The default role for new room members is",
"The main address for this room is": "The main address for this room is",
+ "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.",
"The phone number entered looks invalid": "The phone number entered looks invalid",
"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.",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "This action cannot be performed by a guest user. Please register to be able to do this.",
"This email address is already in use": "This email address is already in use",
"This email address was not found": "This email address was not found",
"%(actionVerb)s this person?": "%(actionVerb)s this person?",
@@ -562,7 +440,6 @@
"The remote side failed to pick up": "The remote side failed to pick up",
"This Home Server does not support login using email address.": "This Home Server does not support login using email address.",
"This invitation was sent to an email address which is not associated with this account:": "This invitation was sent to an email address which is not associated with this account:",
- "There was a problem logging in.": "There was a problem logging in.",
"This room has no local addresses": "This room has no local addresses",
"This room is not recognised.": "This room is not recognised.",
"These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways",
@@ -590,7 +467,6 @@
"To send events of type": "To send events of type",
"To send messages": "To send messages",
"to start a chat with someone": "to start a chat with someone",
- "to tag as %(tagName)s": "to tag as %(tagName)s",
"to tag direct chat": "to tag direct chat",
"To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.",
@@ -601,7 +477,6 @@
"Unable to add email address": "Unable to add email address",
"Unable to create widget.": "Unable to create widget.",
"Unable to remove contact information": "Unable to remove contact information",
- "Unable to restore previous session": "Unable to restore previous session",
"Unable to verify email address.": "Unable to verify email address.",
"Unban": "Unban",
"Unbans user with given id": "Unbans user with given id",
@@ -619,17 +494,14 @@
"unknown error code": "unknown error code",
"Unknown room %(roomId)s": "Unknown room %(roomId)s",
"Unknown (user, device) pair:": "Unknown (user, device) pair:",
- "unknown": "unknown",
"Unmute": "Unmute",
"Unnamed Room": "Unnamed Room",
"Unrecognised command:": "Unrecognised command:",
"Unrecognised room alias:": "Unrecognised room alias:",
"Unverified": "Unverified",
- "Uploading %(filename)s and %(count)s others": {
- "zero": "Uploading %(filename)s",
- "one": "Uploading %(filename)s and %(count)s other",
- "other": "Uploading %(filename)s and %(count)s others"
- },
+ "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other",
+ "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others",
"uploaded a file": "uploaded a file",
"Upload avatar": "Upload avatar",
"Upload Failed": "Upload Failed",
@@ -685,7 +557,6 @@
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device",
"You have disabled URL previews by default.": "You have disabled URL previews by default.",
"You have enabled URL previews by default.": "You have enabled URL previews by default.",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "You have entered an invalid contact. Try using their Matrix ID or email address.",
"You have no visible notifications": "You have no visible notifications",
"You may wish to login with a different account, or add this email to this account.": "You may wish to login with a different account, or add this email to this account.",
"you must be a": "you must be a",
@@ -722,9 +593,10 @@
"Dec": "Dec",
"%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s",
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s": "%(weekDayName)s, %(monthName)s %(day)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Set a display name:": "Set a display name:",
- "Set a Display Name": "Set a Display Name",
"Upload an avatar:": "Upload an avatar:",
"This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.",
"Missing password.": "Missing password.",
@@ -743,14 +615,13 @@
"Encrypt room": "Encrypt room",
"There are no visible files in this room": "There are no visible files in this room",
"Room": "Room",
+ "Copied!": "Copied!",
+ "Failed to copy": "Failed to copy",
"Connectivity to the server has been lost.": "Connectivity to the server has been lost.",
"Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.",
- "Auto-complete": "Auto-complete",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.",
- "(~%(count)s results)": {
- "one": "(~%(count)s result)",
- "other": "(~%(count)s results)"
- },
+ "(~%(count)s results)|one": "(~%(count)s result)",
+ "(~%(count)s results)|other": "(~%(count)s results)",
"Cancel": "Cancel",
"or": "or",
"Active call": "Active call",
@@ -819,7 +690,6 @@
"%(oneUser)schanged their avatar": "%(oneUser)schanged their avatar",
"Please select the destination room for this message": "Please select the destination room for this message",
"Create new room": "Create new room",
- "Welcome page": "Welcome page",
"Room directory": "Room directory",
"Start chat": "Start chat",
"New Password": "New Password",
@@ -842,7 +712,6 @@
"You must join the room to see its files": "You must join the room to see its files",
"Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites",
"Start new chat": "Start new chat",
- "Guest users can't invite users. Please register.": "Guest users can't invite users. Please register.",
"Failed to invite": "Failed to invite",
"Failed to invite user": "Failed to invite user",
"Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:",
@@ -866,7 +735,6 @@
"Unable to restore session": "Unable to restore session",
"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.": "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.",
"Continue anyway": "Continue anyway",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.",
@@ -950,6 +818,7 @@
"Autocomplete Delay (ms):": "Autocomplete Delay (ms):",
"This Home server does not support groups": "This Home server does not support groups",
"Loading device info...": "Loading device info...",
+ "Message removed by %(userId)s": "Message removed by %(userId)s",
"Groups": "Groups",
"Create a new group": "Create a new group",
"Create Group": "Create Group",
@@ -964,7 +833,7 @@
"You are a member of these groups:": "You are a member of these groups:",
"Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.",
"Join an existing group": "Join an existing group",
- "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org .": "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org .",
+ "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org .": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org .",
"Featured Rooms:": "Featured Rooms:",
"Error whilst fetching joined groups": "Error whilst fetching joined groups",
"Featured Users:": "Featured Users:",
@@ -973,5 +842,72 @@
"Failed to upload image": "Failed to upload image",
"Failed to update group": "Failed to update group",
"Hide avatars in user and room mentions": "Hide avatars in user and room mentions",
- "Robot check is currently unavailable on desktop - please use a web browser ": "Robot check is currently unavailable on desktop - please use a web browser "
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s",
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s",
+ "Robot check is currently unavailable on desktop - please use a web browser ": "Robot check is currently unavailable on desktop - please use a web browser ",
+ "Description": "Description",
+ "Filter group members": "Filter group members",
+ "Filter group rooms": "Filter group rooms",
+ "Remove from group": "Remove from group",
+ "Invite new group members": "Invite new group members",
+ "Who would you like to add to this group?": "Who would you like to add to this group?",
+ "Name or matrix ID": "Name or matrix ID",
+ "Invite to Group": "Invite to Group",
+ "Unable to accept invite": "Unable to accept invite",
+ "Unable to leave room": "Unable to leave room",
+ "%(inviter)s has invited you to join this group": "%(inviter)s has invited you to join this group",
+ "You are a member of this group": "You are a member of this group",
+ "Leave": "Leave",
+ "Failed to remove user from group": "Failed to remove user from group",
+ "Failed to invite the following users to %(groupId)s:": "Failed to invite the following users to %(groupId)s:",
+ "Failed to invite users group": "Failed to invite users group",
+ "Failed to invite users to %(groupId)s": "Failed to invite users to %(groupId)s",
+ "Unable to reject invite": "Unable to reject invite",
+ "Leave Group": "Leave Group",
+ "Leave %(groupName)s?": "Leave %(groupName)s?",
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s",
+ "Robot check is currently unavailable on desktop - please use a web browser ": "Robot check is currently unavailable on desktop - please use a web browser ",
+ "Flair": "Flair",
+ "Add a Room": "Add a Room",
+ "Add a User": "Add a User",
+ "Add users to the group summary": "Add users to the group summary",
+ "Who would you like to add to this summary?": "Who would you like to add to this summary?",
+ "Add to summary": "Add to summary",
+ "Failed to add the following users to the summary of %(groupId)s:": "Failed to add the following users to the summary of %(groupId)s:",
+ "Add rooms to the group summary": "Add rooms to the group summary",
+ "Which rooms would you like to add to this summary?": "Which rooms would you like to add to this summary?",
+ "Room name or alias": "Room name or alias",
+ "You are an administrator of this group": "You are an administrator of this group",
+ "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:",
+ "Failed to remove the room from the summary of %(groupId)s": "Failed to remove the room from the summary of %(groupId)s",
+ "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.",
+ "Failed to remove a user from the summary of %(groupId)s": "Failed to remove a user from the summary of %(groupId)s",
+ "The user '%(displayName)s' could not be removed from the summary.": "The user '%(displayName)s' could not be removed from the summary.",
+ "Light theme": "Light theme",
+ "Dark theme": "Dark theme",
+ "Unknown": "Unknown",
+ "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:",
+ "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.",
+ "Add rooms to the group": "Add rooms to the group",
+ "Which rooms would you like to add to this group?": "Which rooms would you like to add to this group?",
+ "Add to group": "Add to group",
+ "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:",
+ "Unpublish": "Unpublish",
+ "This group is published on your profile": "This group is published on your profile",
+ "Publish": "Publish",
+ "This group is not published on your profile": "This group is not published on your profile",
+ "Matrix ID": "Matrix ID",
+ "Matrix Room ID": "Matrix Room ID",
+ "email address": "email address",
+ "Try using one of the following valid address types: %(validTypesList)s.": "Try using one of the following valid address types: %(validTypesList)s.",
+ "You have entered an invalid address.": "You have entered an invalid address.",
+ "Failed to remove room from group": "Failed to remove room from group",
+ "Failed to remove '%(roomName)s' from %(groupId)s": "Failed to remove '%(roomName)s' from %(groupId)s",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Are you sure you want to remove '%(roomName)s' from %(groupId)s?",
+ "Removing a room from the group will also remove it from the group page.": "Removing a room from the group will also remove it from the group page.",
+ "Related Groups": "Related Groups",
+ "Related groups for this room:": "Related groups for this room:",
+ "This room has no related groups": "This room has no related groups",
+ "New group ID (e.g. +foo:%(localDomain)s)": "New group ID (e.g. +foo:%(localDomain)s)"
}
diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json
index 0f58eef325..928f1a9d0f 100644
--- a/src/i18n/strings/en_US.json
+++ b/src/i18n/strings/en_US.json
@@ -1,125 +1,5 @@
{
"Add a widget": "Add a widget",
- "af": "Afrikaans",
- "ar-ae": "Arabic (U.A.E.)",
- "ar-bh": "Arabic (Bahrain)",
- "ar-dz": "Arabic (Algeria)",
- "ar-eg": "Arabic (Egypt)",
- "ar-iq": "Arabic (Iraq)",
- "ar-jo": "Arabic (Jordan)",
- "ar-kw": "Arabic (Kuwait)",
- "ar-lb": "Arabic (Lebanon)",
- "ar-ly": "Arabic (Libya)",
- "ar-ma": "Arabic (Morocco)",
- "ar-om": "Arabic (Oman)",
- "ar-qa": "Arabic (Qatar)",
- "ar-sa": "Arabic (Saudi Arabia)",
- "ar-sy": "Arabic (Syria)",
- "ar-tn": "Arabic (Tunisia)",
- "ar-ye": "Arabic (Yemen)",
- "be": "Belarusian",
- "bg": "Bulgarian",
- "ca": "Catalan",
- "cs": "Czech",
- "da": "Danish",
- "de-at": "German (Austria)",
- "de-ch": "German (Switzerland)",
- "de": "German",
- "de-li": "German (Liechtenstein)",
- "de-lu": "German (Luxembourg)",
- "el": "Greek",
- "en-au": "English (Australia)",
- "en-bz": "English (Belize)",
- "en-ca": "English (Canada)",
- "en": "English",
- "en-gb": "English (United Kingdom)",
- "en-ie": "English (Ireland)",
- "en-jm": "English (Jamaica)",
- "en-nz": "English (New Zealand)",
- "en-tt": "English (Trinidad)",
- "en-us": "English (United States)",
- "en-za": "English (South Africa)",
- "es-ar": "Spanish (Argentina)",
- "es-bo": "Spanish (Bolivia)",
- "es-cl": "Spanish (Chile)",
- "es-co": "Spanish (Colombia)",
- "es-cr": "Spanish (Costa Rica)",
- "es-do": "Spanish (Dominican Republic)",
- "es-ec": "Spanish (Ecuador)",
- "es-gt": "Spanish (Guatemala)",
- "es-hn": "Spanish (Honduras)",
- "es-mx": "Spanish (Mexico)",
- "es-ni": "Spanish (Nicaragua)",
- "es-pa": "Spanish (Panama)",
- "es-pe": "Spanish (Peru)",
- "es-pr": "Spanish (Puerto Rico)",
- "es-py": "Spanish (Paraguay)",
- "es": "Spanish (Spain)",
- "es-sv": "Spanish (El Salvador)",
- "es-uy": "Spanish (Uruguay)",
- "es-ve": "Spanish (Venezuela)",
- "et": "Estonian",
- "eu": "Basque (Basque)",
- "fa": "Farsi",
- "fi": "Finnish",
- "fo": "Faeroese",
- "fr-be": "French (Belgium)",
- "fr-ca": "French (Canada)",
- "fr-ch": "French (Switzerland)",
- "fr": "French",
- "fr-lu": "French (Luxembourg)",
- "ga": "Irish",
- "gd": "Gaelic (Scotland)",
- "he": "Hebrew",
- "hi": "Hindi",
- "hr": "Croatian",
- "hu": "Hungarian",
- "id": "Indonesian",
- "is": "Icelandic",
- "it-ch": "Italian (Switzerland)",
- "it": "Italian",
- "ja": "Japanese",
- "ji": "Yiddish",
- "ko": "Korean",
- "lt": "Lithuanian",
- "lv": "Latvian",
- "mk": "Macedonian (FYROM)",
- "ms": "Malaysian",
- "mt": "Maltese",
- "nl-be": "Dutch (Belgium)",
- "nl": "Dutch",
- "no": "Norwegian",
- "pl": "Polish",
- "pt-br": "Brazilian Portuguese",
- "pt": "Portuguese",
- "rm": "Rhaeto-Romanic",
- "ro-mo": "Romanian (Republic of Moldova)",
- "ro": "Romanian",
- "ru-mo": "Russian (Republic of Moldova)",
- "ru": "Russian",
- "sb": "Sorbian",
- "sk": "Slovak",
- "sl": "Slovenian",
- "sq": "Albanian",
- "sr": "Serbian",
- "sv-fi": "Swedish (Finland)",
- "sv": "Swedish",
- "sx": "Sutu",
- "sz": "Sami (Lappish)",
- "th": "Thai",
- "tn": "Tswana",
- "tr": "Turkish",
- "ts": "Tsonga",
- "uk": "Ukrainian",
- "ur": "Urdu",
- "ve": "Venda",
- "vi": "Vietnamese",
- "xh": "Xhosa",
- "zh-cn": "Chinese (PRC)",
- "zh-hk": "Chinese (Hong Kong SAR)",
- "zh-sg": "Chinese (Singapore)",
- "zh-tw": "Chinese (Taiwan)",
- "zu": "Zulu",
"AM": "AM",
"PM": "PM",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains",
@@ -146,25 +26,19 @@
"Hide removed messages": "Hide removed messages",
"Always show message timestamps": "Always show message timestamps",
"Authentication": "Authentication",
- "all room members": "all room members",
- "all room members, from the point they are invited": "all room members, from the point they are invited",
- "all room members, from the point they joined": "all room members, from the point they joined",
"an address": "an address",
"and": "and",
"%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others",
"%(items)s and one other": "%(items)s and one other",
"%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s",
- "and %(count)s others...": {
- "other": "and %(count)s others...",
- "one": "and one other..."
- },
+ "and %(count)s others...|other": "and %(count)s others...",
+ "and %(count)s others...|one": "and one other...",
"%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing",
"%(names)s and one other are typing": "%(names)s and one other are typing",
"%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing",
"An email has been sent to": "An email has been sent to",
"A new password must be entered.": "A new password must be entered.",
"%(senderName)s answered the call.": "%(senderName)s answered the call.",
- "anyone": "anyone",
"An error has occurred.": "An error has occurred.",
"Anyone": "Anyone",
"Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests",
@@ -195,7 +69,6 @@
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s changed the topic to \"%(topic)s\".",
"Changes to who can read history will only apply to future messages in this room": "Changes to who can read history will only apply to future messages in this room",
"Changes your display nickname": "Changes your display nickname",
- "changing room on a RoomView is not supported": "changing room on a RoomView is not supported",
"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.": "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.",
"Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key",
"Clear Cache and Reload": "Clear Cache and Reload",
@@ -241,7 +114,6 @@
"Device key:": "Device key:",
"Devices": "Devices",
"Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room",
- "Direct Chat": "Direct Chat",
"Direct chats": "Direct chats",
"disabled": "disabled",
"Disable inline URL previews by default": "Disable inline URL previews by default",
@@ -279,7 +151,6 @@
"Failed to delete device": "Failed to delete device",
"Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s",
"Failed to join room": "Failed to join room",
- "Failed to join the room": "Failed to join the room",
"Failed to kick": "Failed to kick",
"Failed to leave room": "Failed to leave room",
"Failed to load timeline position": "Failed to load timeline position",
@@ -311,10 +182,6 @@
"Found a bug?": "Found a bug?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s",
"Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.",
- "Guests can't set avatars. Please register.": "Guests can't set avatars. Please register.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Guest users can't create new rooms. Please register to create room and start a chat.",
- "Guest users can't upload files. Please register to upload.": "Guest users can't upload files. Please register to upload.",
- "Guests can't use labs features. Please register.": "Guests can't use labs features. Please register.",
"Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.",
"had": "had",
"Hangup": "Hangup",
@@ -354,24 +221,39 @@
"Kick": "Kick",
"Kicks user with given id": "Kicks user with given id",
"Labs": "Labs",
+ "Ignored Users": "Ignored Users",
+ "Ignore": "Ignore",
+ "Unignore": "Unignore",
+ "User Options": "User Options",
+ "You are now ignoring %(userId)s": "You are now ignoring %(userId)s",
+ "You are no longer ignoring %(userId)s": "You are no longer ignoring %(userId)s",
+ "Unignored user": "Unignored user",
+ "Ignored user": "Ignored user",
+ "Stops ignoring a user, showing their messages going forward": "Stops ignoring a user, showing their messages going forward",
+ "Ignores a user, hiding their messages from you": "Ignores a user, hiding their messages from you",
"Leave room": "Leave room",
"left and rejoined": "left and rejoined",
"left": "left",
"%(targetName)s left the room.": "%(targetName)s left the room.",
"Level": "Level",
- "List this room in %(domain)s's room directory?": "List this room in %(domain)s's room directory?",
+ "Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?",
"Local addresses for this room:": "Local addresses for this room:",
"Logged in as:": "Logged in as:",
"Login as guest": "Login as guest",
"Logout": "Logout",
"Low priority": "Low priority",
- "%(senderName)s made future room history visible to": "%(senderName)s made future room history visible to",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s made future room history visible to all room members, from the point they are invited.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s made future room history visible to all room members, from the point they joined.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s made future room history visible to all room members.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s made future room history visible to anyone.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s made future room history visible to unknown (%(visibility)s).",
"Manage Integrations": "Manage Integrations",
"Markdown is disabled": "Markdown is disabled",
"Markdown is enabled": "Markdown is enabled",
"matrix-react-sdk version:": "matrix-react-sdk version:",
"Matrix Apps": "Matrix Apps",
"Members only": "Members only",
+ "Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing",
"Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present",
"Missing room_id in request": "Missing room_id in request",
"Missing user_id in request": "Missing user_id in request",
@@ -386,7 +268,6 @@
"Never send encrypted messages to unverified devices in this room": "Never send encrypted messages to unverified devices in this room",
"Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device",
"New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)",
- "New Composer & Autocomplete": "New Composer & Autocomplete",
"New password": "New password",
"New passwords don't match": "New passwords don't match",
"New passwords must match each other.": "New passwords must match each other.",
@@ -404,7 +285,7 @@
"OK": "OK",
"olm version:": "olm version:",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)",
- "Once you've followed the link it contains, click below": "Once you've followed the link it contains, click below",
+ "Once you've followed the link it contains, click below": "Once you've followed the link it contains, click below",
"Only people who have been invited": "Only people who have been invited",
"Operation failed": "Operation failed",
"Password": "Password",
@@ -415,9 +296,7 @@
"Phone": "Phone",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.",
- "Please Register": "Please Register",
"Power level must be positive integer.": "Power level must be positive integer.",
- "Press": "Press",
"Privacy warning": "Privacy warning",
"Privileged Users": "Privileged Users",
"Profile": "Profile",
@@ -490,13 +369,11 @@
"Start Chat": "Start Chat",
"Submit": "Submit",
"Success": "Success",
- "tag as %(tagName)s": "tag as %(tagName)s",
"tag direct chat": "tag direct chat",
"Tagged as: ": "Tagged as: ",
"The default role for new room members is": "The default role for new room members is",
"The main address for this room is": "The main address for this room is",
"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.",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "This action cannot be performed by a guest user. Please register to be able to do this.",
"This email address is already in use": "This email address is already in use",
"This email address was not found": "This email address was not found",
"%(actionVerb)s this person?": "%(actionVerb)s this person?",
@@ -505,7 +382,6 @@
"The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload",
"The remote side failed to pick up": "The remote side failed to pick up",
"This Home Server does not support login using email address.": "This Home Server does not support login using email address.",
- "There was a problem logging in.": "There was a problem logging in.",
"This room has no local addresses": "This room has no local addresses",
"This room is not recognised.": "This room is not recognized.",
"These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways",
@@ -533,7 +409,6 @@
"To send events of type": "To send events of type",
"To send messages": "To send messages",
"to start a chat with someone": "to start a chat with someone",
- "to tag as %(tagName)s": "to tag as %(tagName)s",
"to tag direct chat": "to tag direct chat",
"To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.",
@@ -543,7 +418,6 @@
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).",
"Unable to add email address": "Unable to add email address",
"Unable to remove contact information": "Unable to remove contact information",
- "Unable to restore previous session": "Unable to restore previous session",
"Unable to verify email address.": "Unable to verify email address.",
"Unban": "Unban",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.",
@@ -556,7 +430,6 @@
"unknown error code": "unknown error code",
"Unknown room %(roomId)s": "Unknown room %(roomId)s",
"Unknown (user, device) pair:": "Unknown (user, device) pair:",
- "unknown": "unknown",
"Unmute": "Unmute",
"Unrecognised command:": "Unrecognized command:",
"Unrecognised room alias:": "Unrecognized room alias:",
@@ -605,7 +478,6 @@
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device",
"You have disabled URL previews by default.": "You have disabled URL previews by default.",
"You have enabled URL previews by default.": "You have enabled URL previews by default.",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "You have entered an invalid contact. Try using their Matrix ID or email address.",
"You have no visible notifications": "You have no visible notifications",
"you must be a": "you must be a",
"You need to be able to invite users to do that.": "You need to be able to invite users to do that.",
@@ -641,7 +513,6 @@
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Set a display name:": "Set a display name:",
- "Set a Display Name": "Set a Display Name",
"Upload an avatar:": "Upload an avatar:",
"This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.",
"Missing password.": "Missing password.",
@@ -662,7 +533,6 @@
"Room": "Room",
"Connectivity to the server has been lost.": "Connectivity to the server has been lost.",
"Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.",
- "Auto-complete": "Auto-complete",
"Resend all": "Resend all",
"(~%(searchCount)s results)": "(~%(searchCount)s results)",
"Cancel": "Cancel",
@@ -685,7 +555,7 @@
"quote": "quote",
"bullet": "bullet",
"numbullet": "numbullet",
- "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s joined %(repeats)s times",
+ "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)sjoined %(repeats)s times",
"%(oneUser)sjoined %(repeats)s times": "%(oneUser)sjoined %(repeats)s times",
"%(severalUsers)sjoined": "%(severalUsers)sjoined",
"%(oneUser)sjoined": "%(oneUser)sjoined",
@@ -754,7 +624,6 @@
"You must join the room to see its files": "You must join the room to see its files",
"Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites",
"Start new chat": "Start new chat",
- "Guest users can't invite users. Please register.": "Guest users can't invite users. Please register.",
"Failed to invite": "Failed to invite",
"Failed to invite user": "Failed to invite user",
"Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:",
@@ -776,7 +645,6 @@
"Unable to restore session": "Unable to restore session",
"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.": "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.",
"Continue anyway": "Continue anyway",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.",
@@ -837,23 +705,21 @@
"Accept": "Accept",
"a room": "a room",
"Add": "Add",
- "Admin tools": "Admin tools",
+ "Admin Tools": "Admin tools",
"And %(count)s more...": "And %(count)s more...",
"Alias (optional)": "Alias (optional)",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.",
"Click here to join the discussion!": "Click here to join the discussion!",
"Close": "Close",
- "%(count)s new messages.one": "%(count)s new message",
- "%(count)s new messages.other": "%(count)s new messages",
+ "%(count)s new messages|one": "%(count)s new message",
+ "%(count)s new messages|other": "%(count)s new messages",
"Custom": "Custom",
"Decline": "Decline",
- "Disable markdown formatting": "Disable markdown formatting",
"Disable Notifications": "Disable Notifications",
"Enable Notifications": "Enable Notifications",
"Create new room": "Create new room",
"Room directory": "Room directory",
"Start chat": "Start chat",
- "Welcome page": "Welcome page",
"Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one",
"Drop File Here": "Drop File Here",
"Encrypted by a verified device": "Encrypted by a verified device",
@@ -879,7 +745,6 @@
"Room contains unknown devices": "Room contains unknown devices",
"%(roomName)s does not exist.": "%(roomName)s does not exist.",
"%(roomName)s is not accessible at this time.": "%(roomName)s is not accessible at this time.",
- "Searching known users": "Searching known users",
"Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s",
"Send anyway": "Send anyway",
"Set": "Set",
@@ -895,9 +760,9 @@
"unknown caller": "unknown caller",
"Unnamed Room": "Unnamed Room",
"Unverified": "Unverified",
- "Uploading %(filename)s and %(count)s others.zero": "Uploading %(filename)s",
- "Uploading %(filename)s and %(count)s others.one": "Uploading %(filename)s and %(count)s other",
- "Uploading %(filename)s and %(count)s others.other": "Uploading %(filename)s and %(count)s others",
+ "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other",
+ "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others",
"Upload new:": "Upload new:",
"%(user)s is a": "%(user)s is a",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)",
@@ -911,8 +776,8 @@
"You must register to use this functionality": "You must register to use this functionality",
"Your home server does not support device management.": "Your home server does not support device management.",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.",
- "(~%(count)s results).one": "(~%(count)s result)",
- "(~%(count)s results).other": "(~%(count)s results)",
+ "(~%(count)s results)|one": "(~%(count)s result)",
+ "(~%(count)s results)|other": "(~%(count)s results)",
"New Password": "New Password",
"Device Name": "Device Name",
"Start chatting": "Start chatting",
@@ -940,5 +805,53 @@
"Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.",
"Encryption key request": "Encryption key request",
"Updates": "Updates",
- "Check for update": "Check for update"
+ "Check for update": "Check for update",
+ "Allow": "Allow",
+ "Cannot add any more widgets": "Cannot add any more widgets",
+ "Changes colour scheme of current room": "Changes color scheme of current room",
+ "Define the power level of a user": "Define the power level of a user",
+ "Do you want to load widget from URL:": "Do you want to load widget from URL:",
+ "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Hide join/leave messages (invites/kicks/bans unaffected)",
+ "Hide avatar and display name changes": "Hide avatar and display name changes",
+ "Integrations Error": "Integrations Error",
+ "NOTE: Apps are not end-to-end encrypted": "NOTE: Apps are not end-to-end encrypted",
+ "Sets the room topic": "Sets the room topic",
+ "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.",
+ "To get started, please pick a username!": "To get started, please pick a username!",
+ "Unable to create widget.": "Unable to create widget.",
+ "Unbans user with given id": "Unbans user with given id",
+ "You are not in this room.": "You are not in this room.",
+ "You do not have permission to do that in this room.": "You do not have permission to do that in this room.",
+ "Autocomplete Delay (ms):": "Autocomplete Delay (ms):",
+ "This Home server does not support groups": "This Home server does not support groups",
+ "Loading device info...": "Loading device info...",
+ "Message removed by %(userId)s": "Message removed by %(userId)s",
+ "Groups": "Groups",
+ "Create a new group": "Create a new group",
+ "Create Group": "Create Group",
+ "Group Name": "Group Name",
+ "Example": "Example",
+ "Create": "Create",
+ "Group ID": "Group ID",
+ "+example:%(domain)s": "+example:%(domain)s",
+ "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s",
+ "Room creation failed": "Room creation failed",
+ "You are a member of these groups:": "You are a member of these groups:",
+ "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.",
+ "Join an existing group": "Join an existing group",
+ "Featured Rooms:": "Featured Rooms:",
+ "Error whilst fetching joined groups": "Error while fetching joined groups",
+ "Featured Users:": "Featured Users:",
+ "Edit Group": "Edit Group",
+ "Automatically replace plain text Emoji": "Automatically replace plain text Emoji",
+ "Failed to upload image": "Failed to upload image",
+ "Failed to update group": "Failed to update group",
+ "Hide avatars in user and room mentions": "Hide avatars in user and room mentions",
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s",
+ "Robot check is currently unavailable on desktop - please use a web browser ": "Robot check is currently unavailable on desktop - please use a web browser ",
+ "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple",
+ "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s",
+ "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org .": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org ."
}
diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json
index 91cd6c3450..0967ef424b 100644
--- a/src/i18n/strings/eo.json
+++ b/src/i18n/strings/eo.json
@@ -1,15 +1 @@
-{
- "ar-ae": "la araba (Unuiĝintaj Arabaj Emirlandoj)",
- "ar-bh": "la araba (Bareijno)",
- "ar-dz": "la araba (Alĝerio)",
- "ar-eg": "la araba (Egiptio)",
- "ar-iq": "la araba (Irako)",
- "ar-jo": "la araba (Jordanio)",
- "ar-kw": "la araba (Kuvayto)",
- "ar-lb": "la araba (Libano)",
- "ar-ly": "la araba (Libio)",
- "ar-ma": "la araba (Maroko)",
- "ar-om": "la araba (Omano)",
- "ar-qa": "la araba (Kataro)",
- "ar-sa": "la araba (Sauda Arabio)"
-}
+{}
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index 1f6b26403c..bc2391a5c7 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -1,124 +1,4 @@
{
- "af": "Afrikáans",
- "ar-ae": "Árabe (Emiratos Árabes Unidos)",
- "ar-bh": "Árabe (Baréin)",
- "ar-dz": "Árabe (Argelia)",
- "ar-eg": "Árabe (Egipto)",
- "ar-iq": "Árabe (Irak)",
- "ar-jo": "Árabe (Jordania)",
- "ar-kw": "Árabe (Kuwait)",
- "ar-lb": "Árabe (Líbano)",
- "ar-ly": "Árabe (Libia)",
- "ar-ma": "Árabe (Marruecos)",
- "ar-om": "Árabe (Omán)",
- "ar-qa": "Árabe (Catar)",
- "ar-sa": "Árabe (Arabia Saudita)",
- "ar-sy": "Árabe (Siria)",
- "ar-tn": "Árabe (Túnez)",
- "ar-ye": "Árabe (Yemen)",
- "be": "Bielorrusia",
- "bg": "Bulgaria",
- "ca": "Catalán",
- "cs": "Checo",
- "da": "Danés",
- "de-at": "Alemán (Austria)",
- "de-ch": "Alemán (Suiza)",
- "de": "Alemán",
- "de-li": "Alemán (Liechtenstein)",
- "de-lu": "Alemán (Luxemburgo)",
- "el": "Griego",
- "en-au": "Inglés (Australia)",
- "en-bz": "Inglés (Belice)",
- "en-ca": "Inglés (Canadá)",
- "en": "Inglés",
- "en-gb": "Inglés (Reino Unido)",
- "en-ie": "Inglés (Irlanda)",
- "en-jm": "Inglés (Jamaica)",
- "en-nz": "Inglés (Nueva Zelanda)",
- "en-tt": "Inglés (Trinidad y Tobago)",
- "en-us": "Inglés (Estados Unidos)",
- "en-za": "Inglés (Sudáfrica)",
- "es-ar": "Español (Argentina)",
- "es-bo": "Español (Bolivia)",
- "es-cl": "Español (Chile)",
- "es-co": "Español (Colombia)",
- "es-cr": "Español (Costa Rica)",
- "es-do": "Español (República Dominicana)",
- "es-ec": "Español (Ecuador)",
- "es-gt": "Español (Guatemala)",
- "es-hn": "Español (Honduras)",
- "es-mx": "Español (México)",
- "es-ni": "Español (Nicaragua)",
- "es-pa": "Español (Panamá)",
- "es-pe": "Español (Perú)",
- "es-pr": "Español (Puerto Rico)",
- "es-py": "Español (Paraguay)",
- "es": "Español (España)",
- "es-sv": "Español (El Salvador)",
- "es-uy": "Español (Uruguay)",
- "es-ve": "Español (Venezuela)",
- "et": "Estonio",
- "eu": "Vasco",
- "fa": "Persa",
- "fi": "Finés",
- "fo": "Feroés",
- "fr-be": "Francés (Bélgica)",
- "fr-ca": "Francés (Canadá)",
- "fr-ch": "Francés (Suiza)",
- "fr": "Francés",
- "fr-lu": "Francés (Luxemburgo)",
- "ga": "Irlandés",
- "gd": "Gaélico (Escocia)",
- "he": "Hebreo",
- "hi": "Hindi",
- "hr": "Croata",
- "hu": "Húngaro",
- "id": "Indonesio",
- "is": "Islandés",
- "it-ch": "Italiano (Suiza)",
- "it": "Italiano",
- "ja": "Japonés",
- "ji": "Yidis",
- "ko": "Coreano",
- "lt": "Lituano",
- "lv": "Letón",
- "mk": "Macedonio",
- "ms": "Malayo",
- "mt": "Maltés",
- "nl-be": "Holandés (Bélgica)",
- "nl": "Holandés",
- "no": "Noruego",
- "pl": "Polaco",
- "pt-br": "Portugués (Brasil)",
- "pt": "Portugués",
- "rm": "Retorrománico",
- "ro-mo": "Rumano (República de Moldavia)",
- "ro": "Rumano",
- "ru-mo": "Ruso (República de Moldavia)",
- "ru": "Ruso",
- "sb": "Sorbio",
- "sk": "Eslovaco",
- "sl": "Esloveno",
- "sq": "Albanés",
- "sr": "Serbio",
- "sv-fi": "Sueco (Finlandia)",
- "sv": "Sueco",
- "sx": "Sotho",
- "sz": "Sami (Lapón)",
- "th": "Tailandés",
- "tn": "Setsuana",
- "tr": "Turco",
- "ts": "Songa",
- "uk": "Ucraniano",
- "ur": "Urdú",
- "ve": "Venda",
- "vi": "Vietnamita",
- "xh": "Josa",
- "zh-cn": "Chino Mandarín",
- "zh-hk": "Chino (Hong Kong RAE)",
- "zh-sg": "Chino (Singapur)",
- "zh-tw": "Chino (Taiwanés)",
- "zu": "Zulú",
"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",
"accept": "Aceptar",
"%(targetName)s accepted an invitation.": "%(targetName)s ha aceptado una invitación.",
@@ -132,25 +12,19 @@
"Algorithm": "Algoritmo",
"Always show message timestamps": "Siempre mostrar la hora del mensaje",
"Authentication": "Autenticación",
- "all room members": "Todos los miembros de la sala",
- "all room members, from the point they are invited": "Todos los miembros de la sala, desde el momento en que son invitados",
- "all room members, from the point they joined": "Todos los miembros de la sala, desde el momento en que se han unido",
"an address": "una dirección",
"and": "y",
"%(items)s and %(remaining)s others": "%(items)s y %(remaining)s otros",
"%(items)s and one other": "%(items)s y otro",
"%(items)s and %(lastItem)s": "%(items)s y %(lastItem)s",
- "and %(count)s others...": {
- "other": "y %(count)s otros...",
- "one": "y otro..."
- },
+ "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",
"%(names)s and one other are typing": "%(names)s y otro están escribiendo",
"%(names)s and %(count)s others are typing": "%(names)s y %(count)s otros están escribiendo",
"An email has been sent to": "Un correo ha sido enviado a",
"A new password must be entered.": "Una nueva clave debe ser ingresada.",
"%(senderName)s answered the call.": "%(senderName)s atendió la llamada.",
- "anyone": "nadie",
"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",
@@ -164,7 +38,7 @@
"Banned users": "Usuarios bloqueados",
"Bans user with given id": "Bloquear usuario por ID",
"Blacklisted": "En lista negra",
- "Bug Report": "Reporte de error",
+ "Bug Report": "Reporte de fallo",
"Bulk Options": "Opciones masivas",
"Call Timeout": "Tiempo de espera de la llamada",
"Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "No se puede conectar con el servidor - Por favor verifique su conexión y asegúrese de que su certificado SSL del servidor sea confiable.",
@@ -178,7 +52,6 @@
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s ha cambiado el tema de la sala 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 room on a RoomView is not supported": "cambiando la sala en un RoomView no esta soportado",
"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",
@@ -218,7 +91,6 @@
"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",
- "Direct Chat": "Conversación directa",
"Direct chats": "Conversaciones directas",
"Disable inline URL previews by default": "Desactivar previsualización de enlaces por defecto",
"Disinvite": "Deshacer invitación",
@@ -251,7 +123,6 @@
"Failed to delete device": "Falló al borrar el dispositivo",
"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 the room": "Falló al unirse a la sala",
"Failed to kick": "Falló al expulsar",
"Failed to leave room": "Falló al dejar la sala",
"Failed to load timeline position": "Falló al cargar el historico",
@@ -281,10 +152,6 @@
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Por seguridad, al cerrar la sesión borrará cualquier clave de encriptación de extremo a extremo en este navegador. Si quieres ser capaz de descifrar tu historial de conversación, para las futuras sesiones en Riot, por favor exporta las claves de la sala para protegerlas.",
"Found a bug?": "¿Encontraste un error?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s a %(toPowerLevel)s",
- "Guests can't set avatars. Please register.": "Invitados no puedes establecer avatares. Por favor regístrate.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Usuarios invitados no pueden crear nuevas salas. Por favor regístrate para crear la sala y iniciar la conversación.",
- "Guest users can't upload files. Please register to upload.": "Usuarios invitados no puedes subir archivos. Por favor regístrate para subir tus archivos.",
- "Guests can't use labs features. Please register.": "Invitados no puedes usar las características en desarrollo. Por favor regístrate.",
"Guests cannot join this room even if explicitly invited.": "Invitados no pueden unirse a esta sala aun cuando han sido invitados explícitamente.",
"had": "tuvo",
"Hangup": "Colgar",
@@ -308,7 +175,7 @@
"is a": "es un",
"'%(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 esta escribiendo",
+ "%(displayName)s is typing": "%(displayName)s está escribiendo",
"Sign in with": "Quiero iniciar sesión con",
"Join Room": "Unirte a la sala",
"joined and left": "unido y dejado",
@@ -331,7 +198,7 @@
"Low priority": "Baja prioridad",
"Accept": "Aceptar",
"Add": "Añadir",
- "Admin tools": "Herramientas de administración",
+ "Admin Tools": "Herramientas de administración",
"VoIP": "Voz IP",
"No Microphones detected": "No se ha detectado micrófono",
"No Webcams detected": "No se ha detectado cámara",
@@ -343,8 +210,8 @@
"Anyone": "Cualquiera",
"Click here to join the discussion!": "¡Pulse aquí para unirse a la conversación!",
"Close": "Cerrar",
- "%(count)s new messages.one": "%(count)s mensaje nuevo",
- "%(count)s new messages.other": "%(count)s mensajes nuevos",
+ "%(count)s new messages|one": "%(count)s mensaje nuevo",
+ "%(count)s new messages|other": "%(count)s mensajes nuevos",
"Create a new chat or reuse an existing one": "Cree una nueva conversación o reutilice una existente",
"Custom": "Personalizado",
"Custom level": "Nivel personalizado",
@@ -377,7 +244,11 @@
"Jump to first unread message.": "Ir al primer mensaje sin leer.",
"Last seen": "Visto por última vez",
"Level:": "Nivel:",
- "%(senderName)s made future room history visible to": "%(senderName)s ha configurado el historial de la sala visible para",
+ "%(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).",
"a room": "una sala",
"Something went wrong!": "¡Algo ha fallado!",
"were banned": "fueron expulsados",
@@ -400,7 +271,6 @@
"%(oneUser)schanged their avatar": "%(oneUser)s cambió su avatar",
"Please select the destination room for this message": "Por favor, seleccione la sala destino para este mensaje",
"Create new room": "Crear nueva sala",
- "Welcome page": "Página de bienvenida",
"Start chat": "Comenzar chat",
"New Password": "Nueva contraseña",
"Analytics": "Analíticas",
@@ -415,7 +285,6 @@
"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",
- "Guest users can't invite users. Please register.": "Los invitados no pueden invitar a otros usuarios. Por favor, regístrese.",
"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:",
@@ -442,7 +311,6 @@
"Scroll to unread messages": "Ir al primer mensaje sin leer",
"Search": "Búsqueda",
"Search failed": "Falló la búsqueda",
- "Searching known users": "Buscando usuarios conocidos",
"Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s el %(dateTime)s",
"Send a message (unencrypted)": "Enviar un mensaje (sin cifrar)",
"Send an encrypted message": "Enviar un mensaje cifrado",
@@ -480,7 +348,6 @@
"Start Chat": "Comenzar la conversación",
"Submit": "Enviar",
"Success": "Éxito",
- "tag as %(tagName)s": "etiquetar como %(tagName)s",
"tag direct chat": "etiquetar la conversación directa",
"Tagged as: ": "Etiquetado como: ",
"The default role for new room members is": "El nivel por defecto para los nuevos miembros de esta sala es",
@@ -496,11 +363,9 @@
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "No se puede conectar al servidor - compruebe su conexión, asegúrese de que el certificado SSL del servidor 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.",
"Device key:": "Clave del dispositivo:",
- "Disable markdown formatting": "Desactivar el formato Markdown",
"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 voice or video .": "Conecte con voz o vídeo .",
- "List this room in %(domain)s's room directory?": "¿Mostrar esta sala en el directorio de %(domain)s?",
"Manage Integrations": "Gestionar integraciones",
"Markdown is disabled": "Markdown está desactivado",
"Markdown is enabled": "Markdown está activado",
@@ -549,9 +414,7 @@
"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.",
- "Please Register": "Por favor, regístrese",
"Power level must be positive integer.": "El nivel debe ser un entero positivo.",
- "Press": "Pulse",
"Privacy warning": "Alerta de privacidad",
"Private Chat": "Conversación privada",
"Privileged Users": "Usuarios con privilegios",
@@ -587,7 +450,6 @@
"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 action cannot be performed by a guest user. Please register to be able to do this.": "Esto no puede ser hecho por un invitado. Por favor, regístrese para poder hacerlo.",
"This email address is already in use": "Dirección e-mail en uso",
"This email address was not found": "Dirección e-mail no encontrada",
"%(actionVerb)s this person?": "¿%(actionVerb)s a esta persona?",
@@ -597,7 +459,6 @@
"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:",
- "There was a problem logging in.": "Hubo un problema identificándose.",
"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",
@@ -634,7 +495,6 @@
"Thursday": "Jueves",
"Friday": "Viernes",
"Saturday": "Sábado",
- "New Composer & Autocomplete": "Nuevo compositor & Autocompletar",
"Start verification": "Comenzar la verificación",
"Skip": "Saltar",
"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",
@@ -648,6 +508,147 @@
"To send events of type": "Para enviar eventos de tipo",
"To send messages": "Para enviar mensajes",
"to start a chat with someone": "para empezar a charlar con alguien",
- "to tag as %(tagName)s": "para etiquetar como %(tagName)s",
- "to tag direct chat": "para etiquetar como charla directa"
+ "to tag direct chat": "para etiquetar como charla directa",
+ "Add a widget": "Añadir widget",
+ "Allow": "Permitir",
+ "Changes colour scheme of current room": "Cambia el esquema de colores de esta sala",
+ "Delete widget": "Eliminar widget",
+ "Define the power level of a user": "Definir el nivel de poder de los usuarios",
+ "Edit": "Editar",
+ "Enable automatic language detection for syntax highlighting": "Activar la detección automática del lenguaje para resaltar la sintaxis",
+ "Hide Apps": "Ocultar aplicaciones",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Ocultar mensajes de entrada/salida (no afecta invitaciones/kicks/bans)",
+ "Hide avatar and display name changes": "Ocultar cambios de avatar y nombre visible",
+ "Matrix Apps": "Aplicaciones Matrix",
+ "Once you've followed the link it contains, click below": "Cuando haya seguido el enlace que contiene, haga click debajo",
+ "Sets the room topic": "Configura el tema de la sala",
+ "Show Apps": "Mostrar aplicaciones",
+ "To get started, please pick a username!": "Para empezar, ¡por favor elija un nombre de usuario!",
+ "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Se ha intentado cargar cierto punto en la cronología de esta sala, pero no tiene permiso para ver el mensaje solicitado.",
+ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Se ha intentado cargar cierto punto en la cronología de esta sala, pero no se ha podido encontrarlo.",
+ "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",
+ "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 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",
+ "Unable to load device list": "No se ha podido cargar la lista de dispositivos",
+ "Undecryptable": "No se puede descifrar",
+ "Unencrypted room": "Sala sin cifrado",
+ "Unencrypted message": "Mensaje no cifrado",
+ "unknown caller": "Persona que llama desconocida",
+ "unknown device": "dispositivo desconocido",
+ "Unknown room %(roomId)s": "Sala desconocida %(roomId)s",
+ "Unknown (user, device) pair:": "Pareja desconocida (usuario, dispositivo):",
+ "Unnamed Room": "Sala sin nombre",
+ "Unverified": "Sin verificar",
+ "Uploading %(filename)s and %(count)s others|zero": "Subiendo %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Subiendo %(filename)s y %(count)s otros",
+ "Uploading %(filename)s and %(count)s others|other": "Subiendo %(filename)s y %(count)s otros",
+ "Upload avatar": "Subir avatar",
+ "Upload Failed": "Error al subir",
+ "Upload Files": "Subir archivos",
+ "Upload file": "Subir archivo",
+ "Upload new:": "Subir nuevo:",
+ "Usage": "Uso",
+ "Use compact timeline layout": "Usar diseño de cronología compacto",
+ "Use with caution": "Usar con precaución",
+ "User ID": "Identificación de usuario",
+ "User Interface": "Interfaz de usuario",
+ "%(user)s is a": "%(user)s es un",
+ "User name": "Nombre de usuario",
+ "Username invalid: %(errMessage)s": "Nombre de usuario no válido: %(errMessage)s",
+ "Users": "Usuarios",
+ "User": "Usuario",
+ "Verification Pending": "Verificación pendiente",
+ "Verification": "Verificación",
+ "verified": "verificado",
+ "Verified": "Verificado",
+ "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 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!": "¡Advertencia!",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "AVISO: 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 comunicar?",
+ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s ha retirado la invitación de %(targetName)s.",
+ "Would you like to accept or decline this invitation?": "¿Quiere aceptar o rechazar esta invitación?",
+ "You already have existing direct chats with this user:": "Ya tiene chats directos 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 to make a room or to browse the directory": "¡Todavía no participa en ninguna sala! Pulsa para crear una sala o para explorar el directorio",
+ "You are trying to access %(roomName)s.": "Está tratando de 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?",
+ "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.",
+ "unencrypted": "no cifrado",
+ "Unmute": "desactivar el silencio",
+ "Unrecognised command:": "comando no reconocido:",
+ "Unrecognised room alias:": "alias de sala no reconocido:",
+ "uploaded a file": "cargo un archivo",
+ "%(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!",
+ "You cannot place VoIP calls in this browser.": "no puede realizar llamadas de voz 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 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 disabled URL previews by default.": "Ha deshabilitado la vista previa de URL por defecto.",
+ "You have enabled URL previews by default.": "Ha habilitado 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 must be a": "usted debe ser un",
+ "You must register to use this functionality": "Usted debe ser un registrar 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 e-mail parece no estar asociado con una Id Matrix en este Homeserver.",
+ "Your password has been reset": "Su contraseña ha sido 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 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.",
+ "Sun": "Dom",
+ "Mon": "Lun",
+ "Tue": "Mar",
+ "Wed": "Mie",
+ "Thu": "Jue",
+ "Fri": "Vie",
+ "Sat": "Sab",
+ "Jan": "Ene",
+ "Feb": "Feb",
+ "Mar": "Mar",
+ "Apr": "Abr",
+ "May": "May",
+ "Jun": "Jun",
+ "Jul": "Jul",
+ "Aug": "August"
}
diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json
index 664af7ba4c..9f3d06ec52 100644
--- a/src/i18n/strings/eu.json
+++ b/src/i18n/strings/eu.json
@@ -1,145 +1,20 @@
{
- "af": "Afrikaans",
- "ar-ae": "Arabiera (Arabiar Emirerri Batuak)",
- "ar-bh": "Arabiera (Bahrain)",
- "ar-dz": "Arabiera (Algeria)",
- "ar-eg": "Arabiera (Egipto)",
- "ar-iq": "Arabiera (Irak)",
- "ar-jo": "Arabiera (Jordania)",
- "ar-kw": "Arabiera (Kuwait)",
- "ar-lb": "Arabiera (Libano)",
- "ar-ly": "Arabiera (Libia)",
- "ar-ma": "Arabiera (Maroko)",
- "ar-om": "Arabiera (Oman)",
- "ar-qa": "Arabiera (Qatar)",
- "ar-sa": "Arabiera (Saudi Arabia)",
- "Cancel": "Utzi",
- "ar-sy": "Arabiera (Siria)",
- "ar-tn": "Arabiera (Tunisia)",
- "ar-ye": "Arabiera (Yemen)",
- "be": "Bielorrusiera",
- "bg": "Bulgariera",
- "ca": "Katalana",
- "cs": "Txekiera",
- "da": "Daniera",
- "de-at": "Alemana (Austria)",
- "de-ch": "Alemana (Suitza)",
- "de": "Alemana",
- "de-li": "Alemana (Liechtenstein)",
- "de-lu": "Alemana (Luxenburgo)",
- "el": "Greziera",
- "en-au": "Ingelesa (Australia)",
- "en-bz": "Ingelesa (Belize)",
- "en-ca": "Ingelesa (Kanada)",
- "en": "Ingelesa",
- "en-gb": "Ingelesa (Erresuma batua)",
- "en-ie": "Ingelesa (Irlanda)",
- "en-jm": "Ingelesa (Jamaika)",
- "en-nz": "Ingelesa (Zeelanda Berria)",
- "en-tt": "Ingelesa (Trinidad)",
- "en-us": "Ingelesa (Estatu Batuak)",
- "en-za": "Ingelesa (Hego Afrika)",
- "es-ar": "Espainiera (Argentina)",
- "es-bo": "Espainiera (Bolivia)",
- "es-cl": "Espainiera (Txile)",
- "es-co": "Espainiera (Kolonbia)",
- "es-cr": "Espainiera (Costa Rica)",
- "es-do": "Espainiera (Dominikar Errepublika)",
- "es-ec": "Espainiera (Ekuador)",
- "es-gt": "Espainiera (Guatemala)",
- "es-hn": "Espainiera (Honduras)",
- "es-mx": "Espainiera (Mexiko)",
- "es-ni": "Espainiera (Nikaragua)",
- "es-pa": "Espainiera (Panama)",
- "es-pe": "Espainiera (Peru)",
- "es-pr": "Espainiera (Puerto Rico)",
- "es-py": "Espainiera (Paraguay)",
- "es": "Espainiera (Espainia)",
- "es-sv": "Espainiera (El Salvador)",
- "es-uy": "Espainiera (Uruguai)",
- "es-ve": "Espainiera (Venezuela)",
- "et": "Estoniera",
- "eu": "Euskara",
- "fa": "Farsiera",
- "fi": "Finlandiera",
- "fo": "Faroera",
- "fr-be": "Frantsesa (Belgika)",
- "fr-ca": "Frantsesa (Kanada)",
- "fr-ch": "Frantsesa (Suitza)",
- "fr": "Frantsesa",
- "fr-lu": "Frantsesa (Luxenburgo)",
- "ga": "Irlandera",
- "gd": "Gaelikoa (Eskozia)",
- "he": "Hebreera",
- "hi": "Hindi",
- "hr": "Kroaziera",
- "hu": "Hungariera",
- "id": "Indonesiera",
- "is": "Islandiera",
- "it-ch": "Italiera (Suitza)",
- "it": "Italiera",
- "ja": "Japoniera",
- "ji": "Yiddish",
- "ko": "Korearra",
- "lt": "Lituaniera",
- "lv": "Letoniera",
- "mk": "Mazedoniera (FYROM)",
- "ms": "Malaysiera",
- "mt": "Maltera",
- "nl-be": "Nederlandera (Belgika)",
- "nl": "Nederlandera",
- "no": "Norvegiera",
- "pl": "Poloniera",
- "pt-br": "Brasilgo portugalera",
- "pt": "Portugalera",
- "rm": "Erretorromaniera",
- "ro-mo": "Errumaniera (Moldavia)",
- "ro": "Errumaniera",
- "ru-mo": "Errusiera (Moldavia)",
- "ru": "Errusiera",
- "sb": "Sorbiera",
- "sk": "Eslovakiera",
- "sl": "Esloveniera",
- "sq": "Albaniera",
- "sr": "Serbiera",
- "sv-fi": "Suediera (Finlandia)",
- "sv": "Suediera",
- "sx": "Sutu",
- "sz": "Sami (Laponiera)",
- "th": "Thailandiera",
- "tn": "Tswanera",
- "tr": "Turkiera",
- "ts": "Tsonga",
- "uk": "Ukrainera",
- "ur": "Urdu",
- "ve": "Vendera",
- "vi": "Vietnamera",
- "xh": "Xhosera",
- "zh-cn": "Txinera (PRC)",
- "zh-hk": "Txinera (Hong Kong)",
- "zh-sg": "Txinera (Singapur)",
- "zh-tw": "Txinera (Taiwan)",
- "zu": "Zulu",
"a room": "gela bat",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Mezu bat bidali da +%(msisdn)s zenbakira. Sartu hemen mezuko egiaztaketa kodea",
"Accept": "Onartu",
"%(targetName)s accepted an invitation.": "%(targetName)s erabiltzaileak gonbidapena onartu du.",
"Close": "Itxi",
"Create new room": "Sortu gela berria",
- "Welcome page": "Ongi etorri orria",
"Continue": "Jarraitu",
- "Direct Chat": "Txat zuzena",
"Drop here %(toAction)s": "Jaregin hona %(toAction)s",
"Error": "Errorea",
"Failed to change password. Is your password correct?": "Pasahitza aldatzean huts egin du. Zuzena da pasahitza?",
"Failed to forget room %(errCode)s": "Huts egin du %(errCode)s gela ahaztean",
- "Failed to join the room": "Huts egin du gelara elkartzean",
"Favourite": "Gogokoa",
"Mute": "Mututu",
"Notifications": "Jakinarazpenak",
"OK": "Ados",
"Operation failed": "Eragiketak huts egin du",
- "Please Register": "Erregistratu",
"Remove": "Kendu",
"Search": "Bilatu",
"Settings": "Ezarpenak",
@@ -212,7 +87,6 @@
"Hide read receipts": "Ezkutatu irakurtze-agiria",
"Don't send typing notifications": "Ez bidali idatzi bitarteko jakinarazpenak",
"Always show message timestamps": "Erakutsi beti mezuen denbora-zigilua",
- "Disable markdown formatting": "Desgaitu markdown formatua",
"Name": "Izena",
"Device Name": "Gailuaren izena",
"Last seen": "Azkenekoz ikusia",
@@ -274,7 +148,6 @@
"Success": "Arrakasta",
"For security, this session has been signed out. Please sign in again.": "Segurtasunagatik saio hau amaitu da. Hasi saioa berriro.",
"Found a bug?": "Akats bat aurkitu duzu?",
- "Guests can't use labs features. Please register.": "Bisitariek ezin dituzte laborategiko ezaugarriak erabili. Erregistratu.",
"Guests cannot join this room even if explicitly invited.": "Bisitariak ezin dira gela honetara elkartu ez bazaie zuzenean gonbidatu.",
"Hangup": "Eseki",
"Homeserver is": "Hasiera zerbitzaria:",
@@ -288,7 +161,7 @@
"Add": "Gehitu",
"Add a topic": "Gehitu gai bat",
"Admin": "Kudeatzailea",
- "Admin tools": "Kudeaketa tresnak",
+ "Admin Tools": "Kudeaketa tresnak",
"And %(count)s more...": "Eta %(count)s gehiago...",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Media baimenak falta dira, egin klik eskatzeko.",
@@ -301,15 +174,11 @@
"Camera": "Kamera",
"Hide removed messages": "Ezkutatu kendutako mezuak",
"Alias (optional)": "Ezizena (aukerazkoa)",
- "all room members": "gelako kide guztiak",
- "all room members, from the point they are invited": "gelako kide guztiak, gonbidapena egiten zaienetik",
- "all room members, from the point they joined": "gelako kide guztiak, elkartzen direnetik",
"and one other...": "eta beste bat...",
"%(names)s and %(lastPerson)s are typing": "%(names)s eta %(lastPerson)s idazten ari dira",
"%(names)s and one other are typing": "%(names)s eta beste inor idazten ari dira",
"%(names)s and %(count)s others are typing": "%(names)s eta beste %(count)s idazten ari dira",
"An email has been sent to": "E-mail bat bidali da hona:",
- "anyone": "edonor",
"An error has occurred.": "Errore bat gertatu da.",
"Are you sure?": "Ziur zaude?",
"Are you sure you want to leave the room '%(roomName)s'?": "Ziur '%(roomName)s' gela utzi nahi duzula?",
@@ -337,8 +206,8 @@
"Confirm password": "Berretsi pasahitza",
"Conference calls are not supported in this client": "Bezero honek ez ditu konferentzia deiak onartzen",
"Could not connect to the integration server": "Ezin izan da integrazio zerbitzarira konektatu",
- "%(count)s new messages.one": "mezu berri %(count)s",
- "%(count)s new messages.other": "%(count)s mezu berri",
+ "%(count)s new messages|one": "mezu berri %(count)s",
+ "%(count)s new messages|other": "%(count)s mezu berri",
"Create a new chat or reuse an existing one": "Sortu txat berria edo berrerabili aurreko bat",
"Create an account": "Sortu kontua",
"Create Room": "Sortu gela",
@@ -370,7 +239,7 @@
"%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s erabiltzaileak gelaren izena kendu du.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s erabiltzaileak gaia aldatu du beste honetara: \"%(topic)s\".",
"Changes to who can read history will only apply to future messages in this room": "Historiala irakurtzeko baimenen aldaketak gela honetara hemendik aurrera heldutako mezuei aplikatuko zaizkie",
- "Clear Cache and Reload": "Garbitu cache eta birkargatu",
+ "Clear Cache and Reload": "Garbitu cachea eta birkargatu",
"Devices will not yet be able to decrypt history from before they joined the room": "Gailuek ezin izango dute taldera elkartu aurretiko historiala deszifratu",
"Disable inline URL previews by default": "Desgaitu URLen aurrebista lehenetsita",
"Disinvite": "Kendu gonbidapena",
@@ -421,9 +290,6 @@
"Forgot your password?": "Pasahitza ahaztu duzu?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s %(fromPowerLevel)s mailatik %(toPowerLevel)s mailara",
"Guest access is disabled on this Home Server.": "Bisitarien sarbidea desgaituta dago hasiera zerbitzari honetan.",
- "Guests can't set avatars. Please register.": "Bisitariek ezin dituzte abatarrak ezarri. Erregistratu zaitez.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Bisitariek ezin dituzte gela berriak sortu. Erregistratu gela sortu eta txat bat hasteko.",
- "Guest users can't upload files. Please register to upload.": "Bisitariek ezin dituzte fitxategiak igo. Erregistratu igotzeko.",
"Hide Text Formatting Toolbar": "Ezkutatu testu-formatuaren tresna-barra",
"Incoming call from %(name)s": "%(name)s erabiltzailearen deia jasotzen",
"Incoming video call from %(name)s": "%(name)s erabiltzailearen bideo deia jasotzen",
@@ -436,7 +302,6 @@
"%(senderName)s changed their profile picture.": "%(senderName)s erabiltzaileak bere profileko argazkia aldatu du.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s erabiltzaileak %(powerLevelDiffText)s erabiltzailearen botere maila aldatu du.",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s erabiltzaileak gelaren izena aldatu du, orain %(roomName)s da.",
- "changing room on a RoomView is not supported": "ez da onartzen gela ikuspegi batean gelaz aldatzea",
"Drop here to tag %(section)s": "Jaregin hona %(section)s atalari etiketa jartzeko",
"Incoming voice call from %(name)s": "%(name)s erabiltzailearen deia jasotzen",
"Incorrect username and/or password.": "Erabiltzaile-izen edo pasahitz okerra.",
@@ -464,11 +329,14 @@
"left": "atera da",
"%(targetName)s left the room.": "%(targetName)s erabiltzailea gelatik atera da.",
"Level:": "Maila:",
- "List this room in %(domain)s's room directory?": "Gela hau %(domain)s's domeinuko gelen direktorioan zerrendatu?",
"Local addresses for this room:": "Gela honen tokiko helbideak:",
"Logged in as:": "Saioa hasteko erabiltzailea:",
"Login as guest": "Hasi saioa bisitari gisa",
- "%(senderName)s made future room history visible to": "%(senderName)s erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du hauentzat:",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du hauentzat gelako kide guztiak, gonbidapena egiten zaienetik.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du hauentzat gelako kide guztiak, elkartzen direnetik.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du hauentzat gelako kide guztiak.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du hauentzat edonor.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du hauentzat ezezaguna (%(visibility)s).",
"Manage Integrations": "Kudeatu interakzioak",
"Markdown is disabled": "Markdown desgaituta dago",
"Markdown is enabled": "Markdown gaituta dago",
@@ -482,7 +350,6 @@
"Never send encrypted messages to unverified devices in this room": "Ez bidali inoiz zifratutako mezuak egiaztatu gabeko gailuetara gela honetan",
"Never send encrypted messages to unverified devices in this room from this device": "Ez bidali inoiz zifratutako mezuak egiaztatu gabeko gailuetara gela honetan gailu honetatik",
"New address (e.g. #foo:%(localDomain)s)": "Helbide berria (adib. #foo:%(localDomain)s)",
- "New Composer & Autocomplete": "Konposatzaile berria eta osatze automatikoa",
"New passwords don't match": "Pasahitz berriak ez datoz bat",
"New passwords must match each other.": "Pasahitz berriak berdinak izan behar dira.",
"not set": "ezarri gabe",
@@ -496,7 +363,7 @@
"No users have specific privileges in this room": "Ez dago gela honetan baimen zehatzik duen erabiltzailerik",
"olm version:": "olm bertsioa:",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Behin gela batean zifratzea gaituta ezin da gero desgaitu (oraingoz)",
- "Once you've followed the link it contains, click below": "Behin dakarren esteka jarraitu duzula, egin klik azpian",
+ "Once you've followed the link it contains, click below": "Behin dakarren esteka jarraitu duzula, egin klik azpian",
"Otherwise, click here to send a bug report.": "Bestela, bidali arazte-txosten bat .",
"Server may be unavailable, overloaded, or you hit a bug.": "Agian zerbitzaria ez dago eskuragarri, edo gainezka dago, edo akats bat aurkitu duzu.",
"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.": "Oraingoz pasahitza aldatzeak gailu guztietako muturretik muturrerako zifratze-gakoak berrezarriko ditu, eta ezin izango dituzu zifratutako txatetako historialak irakurri ez badituzu aurretik zure gelako gakoak esportatzen eta aldaketa eta gero berriro inportatzen. Etorkizunean hau hobetuko da.",
@@ -505,7 +372,6 @@
"Permissions": "Baimenak",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s erabiltzaileak %(callType)s dei bat hasi du.",
"Power level must be positive integer.": "Botere maila osoko zenbaki positibo bat izan behar da.",
- "Press": "Sakatu",
"Press to start a chat with someone": "Sakatu norbaitekin txat bat hasteko",
"Privacy warning": "Pribatutasun abisua",
"Private Chat": "Txat pribatua",
@@ -531,7 +397,7 @@
"%(senderName)s removed their profile picture.": "%(senderName)s erabiltzaileak bere profileko argazkia kendu du.",
"Remove %(threePid)s?": "Kendu %(threePid)s?",
"%(senderName)s requested a VoIP conference.": "%(senderName)s erabiltzaileak VoIP konferentzia bat eskatu du.",
- "Report it": "Salatu",
+ "Report it": "Eman berri",
"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.": "Oraingoz pasahitza aldatzeak gailu guztietako muturretik muturrerako zifratze-gakoak berrezarriko ditu, eta ezin izango dituzu zifratutako txatetako historialak irakurri ez badituzu aurretik zure gelako gakoak esportatzen eta aldaketa eta gero berriro inportatzen.",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Une honetan egiaztatu gabeko gailuak blokeatzen ari zara, gailu hauetara mezuak bidali ahal izateko egiaztatu behar dituzu.",
"restore": "berreskuratu",
@@ -549,7 +415,6 @@
"Scroll to unread messages": "Korritu irakurri gabeko mezuetara",
"Search failed": "Bilaketak huts egin du",
"Searches DuckDuckGo for results": "DuckDuckGo-n bilatzen ditu emaitzak",
- "Searching known users": "Erabiltzaile ezagunen bila",
"Seen by %(userName)s at %(dateTime)s": "%(userName)s erabiltzaileak ikusia %(dateTime)s(e)an",
"Send a message (unencrypted)": "Bidali mezua (zifratu gabea)",
"Send an encrypted message": "Bidali mezu zifratua",
@@ -577,14 +442,12 @@
"since they were invited": "gonbidatu zaienetik",
"Some of your messages have not been sent.": "Zure mezu batzuk ez dira bidali.",
"Sorry, this homeserver is using a login which is not recognised ": "Hasiera zerbitzari honek ezagutzen ez den saio bat erabiltzen du ",
- "tag as %(tagName)s": "jarri %(tagName)s etiketa",
"tag direct chat": "jarri etiketa txat zuzenari",
"Tagged as: ": "Jarritako etiketa: ",
"The default role for new room members is": "Gelako kide berrien lehenetsitako rola:",
"The main address for this room is": "Gela honen helbide nagusia:",
"The phone number entered looks invalid": "Sartutako telefono zenbakia ez dirudi baliozkoa",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Eman duzun sinadura-gakoa %(userId)s erabiltzailearen %(deviceId)s gailutik jasotako bera da. Gailua egiaztatuta gisa markatu da.",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "Bisitari batek ezin du ekintza hau burutu. Erregistratu hau egin ahal izateko.",
"This email address was not found": "Ez da e-mail helbide hau aurkitu",
"%(actionVerb)s this person?": "%(actionVerb)s pertsona hau?",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' fitxategiak hasiera zerbitzarian igoerei ezarritako tamaina-muga gainditzen du",
@@ -592,7 +455,6 @@
"The remote side failed to pick up": "Urruneko aldeak hartzean huts egin du",
"This Home Server does not support login using email address.": "Hasiera zerbitzari honek ez du e-mail helbidearekin saioa hastea onartzen.",
"This invitation was sent to an email address which is not associated with this account:": "Gonbidapen hau kontu honekin lotuta ez dagoen e-mail helbide batera bidali da:",
- "There was a problem logging in.": "Arazo bat egon da saioa hastean.",
"This room is not recognised.": "Ez da gela hau ezagutzen.",
"These are experimental features that may break in unexpected ways": "Hauek ezaugarri esperimentalak dira eta agian ez dabiltza behar bezala",
"The visibility of existing history will be unchanged": "Aurreko historialaren ikusgaitasuna ez da aldatuko",
@@ -617,7 +479,6 @@
"To send events of type": "Mota honetako gertaerak bidaltzea:",
"To send messages": "Mezuak bidaltzea",
"to start a chat with someone": "norbaitekin txat bat hastea",
- "to tag as %(tagName)s": "%(tagName)s gisa etiketatzea",
"to tag direct chat": "txat zuzena etiketatzea",
"To use it, just wait for autocomplete results to load and tab through them.": "Erabiltzeko, itxaron osatze automatikoaren emaitzak kargatu arte eta gero tabuladorearekin hautatu.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Gela honen denbora-lerroko puntu zehatz bat kargatzen saiatu zara, baina ez duzu mezu zehatz hori ikusteko baimenik.",
@@ -627,7 +488,6 @@
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s erabiltzaileak muturretik muturrerako (algorithm %(algorithm)s) zifratzea aktibatu du.",
"Unable to add email address": "Ezin izan da e-mail helbidea gehitu",
"Unable to remove contact information": "Ezin izan da kontaktuaren informazioa kendu",
- "Unable to restore previous session": "Ezin izan da aurreko saioa berreskuratu",
"Unable to verify email address.": "Ezin izan da e-mail helbidea egiaztatu.",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s erabiltzaileak debekua kendu dio %(targetName)s erabiltzaileari.",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Ezin izan da ziurtatu gonbidapen hau zure kontuarekin lotutako helbide batera bidali zela.",
@@ -642,15 +502,14 @@
"Unknown command": "Agindu ezezaguna",
"Unknown room %(roomId)s": "%(roomId)s gela ezezaguna da",
"Unknown (user, device) pair:": "Erabiltzaile eta gailu bikote ezezaguna:",
- "unknown": "ezezaguna",
"Unmute": "Audioa aktibatu",
"Unnamed Room": "Izen gabeko gela",
"Unrecognised command:": "Agindu ezezaguna:",
"Unrecognised room alias:": "Gelaren ezizen ezezaguna:",
"Unverified": "Egiaztatu gabea",
- "Uploading %(filename)s and %(count)s others.zero": "%(filename)s igotzen",
- "Uploading %(filename)s and %(count)s others.one": "%(filename)s eta beste %(count)s igotzen",
- "Uploading %(filename)s and %(count)s others.other": "%(filename)s eta beste %(count)s igotzen",
+ "Uploading %(filename)s and %(count)s others|zero": "%(filename)s igotzen",
+ "Uploading %(filename)s and %(count)s others|one": "%(filename)s eta beste %(count)s igotzen",
+ "Uploading %(filename)s and %(count)s others|other": "%(filename)s eta beste %(count)s igotzen",
"uploaded a file": "fitxategi bat igo du",
"Upload avatar": "Igo abatarra",
"Upload Failed": "Igoerak huts egin du",
@@ -696,7 +555,6 @@
"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": "Saioa amaitu duzu eta ez dituzu jakinarazpenak jasoko. Jakinarazpenak jaso nahi badituzu hasi saioa berriro gailu bakoitzean",
"You have disabled URL previews by default.": "Lehenetsita URLak aurreikustea desgaitu duzu.",
"You have enabled URL previews by default.": "Lehenetsita URLak aurreikustea gaitu duzu.",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "Kontaktu baliogabea sartu duzu. Saiatu bere Matrix ID-a edo e-mail helbidea erabiltzen.",
"You have no visible notifications": "Ez daukazu jakinarazpen ikusgairik",
"You may wish to login with a different account, or add this email to this account.": "Agian beste kontu batekin hasi nahi duzu saioa, edo e-mail hau kontu honetara gehitu.",
"you must be a": "hau izan behar duzu:",
@@ -735,7 +593,6 @@
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(fullYear)sko %(monthName)sk %(day)s %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Set a display name:": "Ezarri pantaila-izena:",
- "Set a Display Name": "Ezarri pantaila-izena",
"Upload an avatar:": "Igo abatarra:",
"This server does not support authentication with a phone number.": "Zerbitzari honek ez du telefono zenbakia erabiliz autentifikatzea onartzen.",
"Missing password.": "Pasahitza falta da.",
@@ -753,10 +610,9 @@
"Encrypt room": "Zifratu gela",
"There are no visible files in this room": "Ez dago fitxategi ikusgairik gela honetan",
"Sent messages will be stored until your connection has returned.": "Bidalitako mezuak zure konexioa berreskuratu arte gordeko dira.",
- "Auto-complete": "Osatze automatikoa",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Birbidali guztiak edo baztertu guztiak orain. Mezuak banaka aukeratu ditzakezu ere birbidali ala baztertzeko.",
- "(~%(count)s results).one": "(~%(count)s emaitza)",
- "(~%(count)s results).other": "(~%(count)s emaitza)",
+ "(~%(count)s results)|one": "(~%(count)s emaitza)",
+ "(~%(count)s results)|other": "(~%(count)s emaitza)",
"bold": "lodia",
"italic": "etzana",
"strike": "marratua",
@@ -781,7 +637,7 @@
"%(oneUser)sleft and rejoined %(repeats)s times": "Erabiltzaile %(oneUser)s %(repeats)s aldiz atera eta berriro elkartu da",
"%(severalUsers)sleft and rejoined": "%(severalUsers)s erabiltzaile atera eta berriro elkartu dira",
"%(oneUser)sleft and rejoined": "Erabiltzaile %(oneUser)s atera eta berriro sartu da",
- "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers) erabiltzaileen gonbidapenak %(repeats)s aldiz atzera bota dira",
+ "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)s erabiltzaileen gonbidapenak %(repeats)s aldiz atzera bota dira",
"%(oneUser)shad their invitation withdrawn %(repeats)s times": "Erabiltzaile %(oneUser)sen gonbidapena %(repeats)s aldiz bota da atzera",
"%(severalUsers)shad their invitations withdrawn": "%(severalUsers)s erabiltzaileen gonbidapena atzera bota da",
"%(oneUser)shad their invitation withdrawn": "Erabiltzaile %(oneUser)sen gonbidapena atzera bota da",
@@ -826,7 +682,6 @@
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Esportatutako fitxategia pasaesaldi batez babestuko da. Pasaesaldia bertan idatzi behar duzu, fitxategia deszifratzeko.",
"You must join the room to see its files": "Gelara elkartu behar zara bertako fitxategiak ikusteko",
"Start new chat": "Hasi txat berria",
- "Guest users can't invite users. Please register.": "Bisitariek ezin dituzte erabiltzaileak gonbidatu, erregistratu zaitez.",
"Failed to invite": "Huts egin du ganbidapenak",
"Failed to invite user": "Huts egin du erabiltzailea gonbidatzean",
"Failed to invite the following users to the %(roomName)s room:": "Huts egin du honako erabiltzaile hauek %(roomName)s gelara gonbidatzean:",
@@ -844,7 +699,6 @@
"Unable to restore session": "Ezin izan da saioa berreskuratu",
"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.": "Aurretik Riot bertsio berriago bat erabili baduzu, zure saioa bertsio honekin bateraezina izan daiteke. Itxi leiho hau eta itzuli bertsio berriagora.",
"Continue anyway": "Jarraitu hala ere",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Zure pantaila izena geletan hitz egiten duzunean besteek ikusten dutena da. Zein nahi duzu?",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Gailu bakoitzaren egiaztaketa prozesua jarraitzea aholkatzen dizugu, benetako jabeari dagozkiela baieztatzeko, baina mezua egiaztatu gabe birbidali dezakezu ere.",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" gelan aurretik ikusi ez dituzun gailuak daude.",
"Unknown devices": "Gailu ezezagunak",
@@ -886,7 +740,7 @@
"for %(amount)sh": "%(amount)sh",
"for %(amount)sd": "%(amount)se",
"Updates": "Eguneraketak",
- "Check for update": "Egiaztatu eguneraketa",
+ "Check for update": "Bilatu ekuneraketa",
"Start chatting": "Hasi txateatzen",
"Start Chatting": "Hasi txateatzen",
"Click on the button below to start chatting!": "Egin klik beheko botoian txateatzen hasteko!",
@@ -914,5 +768,70 @@
"Encryption key request": "Zifratze-gakoa eskatuta",
"Deops user with given id": "Emandako ID-a duen erabiltzailea mailaz jaisten du",
"had": "zuen",
- "Disable Peer-to-Peer for 1:1 calls": "Desgaitu P2P biren arteko deietan"
+ "Disable Peer-to-Peer for 1:1 calls": "Desgaitu P2P biren arteko deietan",
+ "Add a widget": "Gehitu trepeta bat",
+ "Allow": "Baimendu",
+ "and %(count)s others...|other": "eta beste %(count)s...",
+ "and %(count)s others...|one": "eta beste bat...",
+ "Cannot add any more widgets": "Ezin dira trepeta gehiago gehitu",
+ "Changes colour scheme of current room": "Gela honen kolore eskema aldatzen du",
+ "Delete widget": "Ezabatu trepeta",
+ "Define the power level of a user": "Zehaztu erabiltzaile baten botere maila",
+ "Do you want to load widget from URL:": "Trepeta bat kargatu nahi duzu URL honetatik:",
+ "Edit": "Editatu",
+ "Enable automatic language detection for syntax highlighting": "Gaitu hizkuntza antzemate automatikoa sintaxia nabarmentzeko",
+ "Hide Apps": "Ezkutatu aplikazioak",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Ezkutatu elkartze/irtete mezuak (gonbidapenak/ateratzeak/debekuak ez dira aldatzen)",
+ "Hide avatar and display name changes": "Ezkutatu abatarra eta pantaila-izen aldaketak",
+ "Integrations Error": "Integrazio errorea",
+ "Publish this room to the public in %(domain)s's room directory?": "Argitaratu gela hau publikora %(domain)s domeinuko gelen direktorioan?",
+ "Matrix Apps": "Matrix Aplikazioak",
+ "AM": "AM",
+ "PM": "PM",
+ "NOTE: Apps are not end-to-end encrypted": "OHARRA: Aplikazioek ez dute muturretik muturrerako zifratzea",
+ "Revoke widget access": "Indargabetu trepetaren sarbidea",
+ "Sets the room topic": "Gelaren gaia ezartzen du",
+ "Show Apps": "Erakutsi aplikazioak",
+ "The maximum permitted number of widgets have already been added to this room.": "Gehienez onartzen diren trepeta kopurua gehitu da gela honetara.",
+ "To get started, please pick a username!": "Hasteko, hautatu erabiltzaile-izen bat!",
+ "Unable to create widget.": "Ezin izan da trepeta sortu.",
+ "Unbans user with given id": "ID zehatz bat duen erabiltzaileari debekua kentzen dio",
+ "You are not in this room.": "Ez zaude gela honetan.",
+ "You do not have permission to do that in this room.": "Ez duzu gela honetan hori egiteko baimenik.",
+ "Autocomplete Delay (ms):": "Osatze automatikoaren atzerapena (ms):",
+ "This Home server does not support groups": "Hasiera zerbitzari honek ez ditu taldeak onartzen",
+ "Loading device info...": "Gailuaren informazioa kargatzen...",
+ "Groups": "Taldeak",
+ "Create a new group": "Sortu talde berria",
+ "Create Group": "Sortu taldea",
+ "Group Name": "Taldearen izena",
+ "Example": "Adibidea",
+ "Create": "Sortu",
+ "Group ID": "Taldearen IDa",
+ "+example:%(domain)s": "+adibidea:%(domain)s",
+ "Room creation failed": "Taldea sortzeak huts egin du",
+ "You are a member of these groups:": "Talde hauetako kidea zara:",
+ "Join an existing group": "Elkartu badagoen talde batetara",
+ "Featured Rooms:": "Nabarmendutako gelak:",
+ "Featured Users:": "Nabarmendutako erabiltzaileak:",
+ "Edit Group": "Editatu taldea",
+ "Failed to update group": "Taldea eguneratzeak huts egin du",
+ "Group IDs must be of the form +localpart:%(domain)s": "Taldeen IDek forma hau dute +partelokala:%(domain)s",
+ "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Une honetan zure hasiera zerbitzarian besterik ezin dituzu sortu taldeak: erabili %(domain)s bukaera duen talde ID bat",
+ "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Sortu talde bat zure komunitatea adierazteko! Zehaztu talde multzo bat eta zure hasiera horri pertsonalizatua zure espazioa markatzeko Matrix unibertsoan.",
+ "Error whilst fetching joined groups": "Errorea elkartutako taldeak eskuratzean",
+ "Automatically replace plain text Emoji": "Automatikoki ordezkatu Emoji testu soila",
+ "Failed to upload image": "Irudia igotzeak huts egin du",
+ "Hide avatars in user and room mentions": "Ezkutatu abatarrak erabiltzaile eta gelen aipamenetan",
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s trepeta gehitu du %(senderName)s erabiltzaileak",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s trepeta kendu du %(senderName)s erabiltzaileak",
+ "Verifies a user, device, and pubkey tuple": "Erabiltzaile, gailu eta gako publiko multzoa egiaztatzen du",
+ "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org .": "Dagoen talde batetara elkartzeko taldearen identifikatzailea ezagutu behar duzu, honen antza du: +adibidea:matrix.org .",
+ "Robot check is currently unavailable on desktop - please use a web browser ": "Robot egiaztaketa orain ez dago eskuragarri mahaigainean - erabili web nabigatzailea ",
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s trepeta aldatu du %(senderName)s erabiltzaileak",
+ "%(weekDayName)s, %(monthName)s %(day)s": "%(weekDayName)s, %(monthName)sk %(day)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(fullYear)sko %(monthName)sk %(day)s",
+ "Copied!": "Kopiatuta!",
+ "Failed to copy": "Kopiak huts egin du",
+ "Cancel": "Utzi"
}
diff --git a/src/i18n/strings/fa.json b/src/i18n/strings/fa.json
index 9e26dfeeb6..0967ef424b 100644
--- a/src/i18n/strings/fa.json
+++ b/src/i18n/strings/fa.json
@@ -1 +1 @@
-{}
\ No newline at end of file
+{}
diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json
new file mode 100644
index 0000000000..a59e5b1edd
--- /dev/null
+++ b/src/i18n/strings/fi.json
@@ -0,0 +1,341 @@
+{
+ "a room": "huone",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Numeroon +%(msisdn)s on lähetetty tekstiviesti. Ole hyvä ja syötä sen sisältämä varmennuskoodi",
+ "Accept": "Hyväksy",
+ "Cancel": "Peruuta",
+ "Close": "Sulje",
+ "Create new room": "Luo uusi huone",
+ "Custom Server Options": "Omat palvelinasetukset",
+ "Dismiss": "Hylkää",
+ "Drop here %(toAction)s": "Pudota tänne %(toAction)s",
+ "Error": "Virhe",
+ "Failed to forget room %(errCode)s": "Huoneen unohtaminen epäonnistui %(errCode)s",
+ "Favourite": "Suosikki",
+ "Mute": "Vaimenna",
+ "Notifications": "Ilmoitukset",
+ "Operation failed": "Toiminto epäonnistui",
+ "Remove": "Poista",
+ "Room directory": "Huonehakemisto",
+ "Search": "Haku",
+ "Settings": "Asetukset",
+ "Start chat": "Aloita keskustelu",
+ "unknown error code": "tuntematon virhekoodi",
+ "Sunday": "Sunnuntai",
+ "Monday": "Maanantai",
+ "Tuesday": "Tiistai",
+ "Wednesday": "Keskiviikko",
+ "Thursday": "Torstai",
+ "Friday": "Perjantai",
+ "Saturday": "Lauantai",
+ "Failed to change password. Is your password correct?": "Salasanan muuttaminen epäonnistui. Onko salasanasi oikein?",
+ "Continue": "Jatka",
+ "powered by Matrix": "Matrix-pohjainen",
+ "Active call (%(roomName)s)": "Aktivoi puhelu (%(roomName)s)",
+ "Add": "Lisää",
+ "Add a topic": "Lisää aihe",
+ "Add email address": "Lisää sähköpostiosoite",
+ "Add phone number": "Lisää puhelinnumero",
+ "Admin": "Ylläpitäjä",
+ "Admin tools": "Ylläpitotyökalut",
+ "Allow": "Salli",
+ "And %(count)s more...": "Ja %(count)s lisää...",
+ "VoIP": "VoIP",
+ "Missing Media Permissions, click here to request.": "Mediaoikeudet puuttuvat. Klikkaa tästä pyytääksesi oikeudet.",
+ "No Microphones detected": "Mikrofonia ei löytynyt",
+ "No Webcams detected": "Webkameraa ei löytynyt",
+ "No media permissions": "Ei mediaoikeuksia",
+ "You may need to manually permit Riot to access your microphone/webcam": "Sinun täytyy ehkä manuaalisesti sallia mikrofonin/webkameran käyttö",
+ "Default Device": "Oletuslaite",
+ "Microphone": "Mikrofoni",
+ "Camera": "Kamera",
+ "Advanced": "Kehittyneet",
+ "Algorithm": "Algoritmi",
+ "Hide removed messages": "Piilota poistetut viestit",
+ "Always show message timestamps": "Näytä aina viestien aikaleimat",
+ "Authentication": "Autentikointi",
+ "Alias (optional)": "Alias (valinnainen)",
+ "and": "ja",
+ "%(items)s and %(remaining)s others": "%(items)s ja %(remaining)s lisää",
+ "%(items)s and one other": "%(items)s ja yksi lisää",
+ "%(items)s and %(lastItem)s": "%(items)s ja %(lastItem)s",
+ "and %(count)s others....other": "ja %(count)s lisää...",
+ "and %(count)s others....one": "ja yksi lisää...",
+ "%(names)s and %(lastPerson)s are typing": "%(names)s ja %(lastPerson)s kirjoittavat",
+ "%(names)s and one other are typing": "%(names)s ja yksi muu kirjoittavat",
+ "%(names)s and %(count)s others are typing": "%(names)s ja %(count)s muuta kirjoittavat",
+ "An email has been sent to": "Sähköposti on lähetetty osoitteeseen",
+ "A new password must be entered.": "Sinun täytyy syöttää uusi salasana.",
+ "%(senderName)s answered the call.": "%(senderName)s vastasi puheluun.",
+ "An error has occurred.": "Virhe.",
+ "Anyone": "Kaikki",
+ "Anyone who knows the room's link, apart from guests": "Kaikki jotka tietävät huoneen osoitteen, paitsi vieraat",
+ "Anyone who knows the room's link, including guests": "Kaikki jotka tietävät huoneen osoitteen, mukaanlukien vieraat",
+ "Are you sure?": "Oletko varma?",
+ "Are you sure you want to leave the room '%(roomName)s'?": "Oletko varma että haluat poistua huoneesta '%(roomName)s'?",
+ "Are you sure you want to reject the invitation?": "Oletko varma että haluat hylätä kutsun?",
+ "Are you sure you want to upload the following files?": "Oletko varma että haluat ladata seuraavat tiedostot?",
+ "Attachment": "Liite",
+ "Autoplay GIFs and videos": "Toista automaattisesti GIF-animaatiot ja videot",
+ "%(senderName)s banned %(targetName)s.": "%(senderName)s antoi porttikiellon käyttäjälle %(targetName)s.",
+ "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Yhdistäminen kotipalvelimeen epäonnistui. Ole hyvä ja tarkista verkkoyhteytesi ja varmista että kotipalvelimen SSL-sertifikaatti on luotettu, ja että jokin selaimen lisäosa ei estä pyyntöjen lähettämisen.",
+ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts .": "Yhdistäminen kotipalveluun HTTP:n avulla ei ole mahdollista kun selaimen osoitepalkissa on HTTPS URL. Käytä joko HTTPS tai salli turvattomat skriptit .",
+ "Can't load user settings": "Käyttäjäasetusten lataaminen epäonnistui",
+ "Change Password": "Muuta salasana",
+ "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s muutti näyttönimensä %(oldDisplayName)s -> %(displayName)s.",
+ "%(senderName)s changed their profile picture.": "%(senderName)s muutti profiilikuvansa.",
+ "%(targetName)s accepted an invitation.": "%(targetName)s hyväksyi kutsun.",
+ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s hyväksyi kutsun käyttäjän %(displayName)s puolesta.",
+ "Account": "Tili",
+ "and %(count)s others...|other": "ja %(count)s lisää...",
+ "and %(count)s others...|one": "ja yksi lisää...",
+ "Ban": "Anna porttikielto",
+ "Banned users": "Porttikiellon saanneet käyttäjät",
+ "Bans user with given id": "Antaa porttikiellon käyttäjälle jolla on annettu tunniste",
+ "Bug Report": "Virheraportti",
+ "Bulk Options": "Bulkkiasetukset",
+ "Changes your display nickname": "Muuttaa näyttönimesi",
+ "Changes colour scheme of current room": "Muuttaa tamänhetkisen huoneen väritystä",
+ "Clear Cache and Reload": "Puhdista välimuisti ja lataa uudelleen",
+ "Clear Cache": "Puhdista välimuisti",
+ "Click here to fix": "Paina tästä korjataksesi",
+ "Click to mute audio": "Paina mykistääksesi äänet",
+ "Click to mute video": "Paina mykistääksesi video",
+ "click to reveal": "paina näyttääksesi",
+ "Click to unmute video": "Paina poistaaksesi videomykistyksen",
+ "Click to unmute audio": "Paina poistaaksesi äänimykistyksen",
+ "Command error": "Komentovirhe",
+ "Commands": "Komennot",
+ "Conference call failed.": "Konferenssipuhelu epäonnistui",
+ "Conference calling is in development and may not be reliable.": "Konferenssipuhelut ovat vielä kehityksen alla ja saattavat toimia epäluotettavasti",
+ "Conference calls are not supported in encrypted rooms": "Konferenssipuhelut eivät ole mahdollisia salatuissa huoneissa",
+ "Conference calls are not supported in this client": "Tämä asiakasohjelma ei tue konferenssipuheluja",
+ "Confirm password": "Varmista salasana",
+ "Confirm your new password": "Varmista uusi salasanasi",
+ "Could not connect to the integration server": "Yhteys integraatiopalvelimeen epäonnistui",
+ "Create a new chat or reuse an existing one": "Luo uusi keskustelu tai uudelleenkäytä vanha",
+ "Create an account": "Luo tili",
+ "Create Room": "Luo huone",
+ "Cryptography": "Salaus",
+ "Current password": "Nykyinen salasana",
+ "Custom": "Mukautettu",
+ "Custom level": "Mukautettu taso",
+ "/ddg is not a command": "/ddg ei ole komento",
+ "Deactivate Account": "Deaktivoi tili",
+ "Deactivate my account": "Deaktivoi tilini",
+ "Decline": "Hylkää",
+ "Decryption error": "Virhe salauksen purkamisessa",
+ "Delete": "Poista",
+ "demote": "alenna",
+ "Default": "Oletusarvo",
+ "Device already verified!": "Laite on jo varmennettu!",
+ "Device ID": "Laitetunniste",
+ "Device ID:": "Laitetunniste:",
+ "device id: ": "laitetunniste:",
+ "Device key:": "Laiteavain:",
+ "Devices": "Laitteet",
+ "Direct chats": "Suorat viestittelyt",
+ "Disable Notifications": "Ota ilmoitukset pois käytöstä",
+ "disabled": "pois käytöstä",
+ "Disinvite": "Peru kutsu",
+ "Display name": "Näyttönimi",
+ "Download %(text)s": "Lataa %(text)s",
+ "Drop File Here": "Pudota tiedosto tähän",
+ "Ed25519 fingerprint": "Ed25519 sormenjälki",
+ "Edit": "Muokkaa",
+ "Email": "Sähköposti",
+ "Email address": "Sähköpostiosoite",
+ "Email address (optional)": "Sähköpostiosoite (valinnainen)",
+ "Email, name or matrix ID": "Sähköpostiosoite, nimi, tai Matrix tunniste",
+ "Emoji": "Emoji",
+ "Enable encryption": "Ota salaus käyttöön",
+ "Enable Notifications": "Ota ilmoitukset käyttöön",
+ "enabled": "käytössä",
+ "Encrypted by a verified device": "Varmennetun laitteen salaama",
+ "Encrypted by an unverified device": "Varmentamattoman laiteen salaama",
+ "Encrypted room": "Salattu huone",
+ "Encryption is enabled in this room": "Salaus on kytketty päälle tässä huoneessa",
+ "Encryption is not enabled in this room": "Salaus ei ole kytketty päälle tässä huoneessa",
+ "End-to-end encryption information": "Päästä päähän-salauksen tiedot",
+ "Enter Code": "Syötä koodi",
+ "Enter passphrase": "Syötä salasana",
+ "Error decrypting attachment": "Liitteen salauksen purku epäonnistui",
+ "Event information": "Tapahtumatiedot",
+ "Export": "Vie",
+ "Export E2E room keys": "Vie huoneen päästä päähän-salauksen (E2E) avaimet ",
+ "Failed to ban user": "Porttikiellon antaminen epäonnistui",
+ "Failed to delete device": "Laitten poistamine epäonnistui",
+ "Failed to fetch avatar URL": "Avatar URL:n haku epäonnistui",
+ "Failed to join room": "Huoneeseen liittyminen epäonnistui",
+ "Failed to kick": "Huoneesta poistaminen epäonnistui",
+ "Failed to leave room": "Huoneesta poistuminen epäonnistui",
+ "Failed to load timeline position": "Aikajanapaikan lataaminen epäonnistui",
+ "Failed to mute user": "Käyttäjän mykistäminen epäonnistui",
+ "Failed to register as guest:": "Vieraana rekisteröityminen epäonnistui",
+ "Failed to reject invite": "Kutsun hylkääminen epäonnistui",
+ "Failed to reject invitation": "Kutsun hylkääminen epäonnistui",
+ "Failed to save settings": "Asetusten tallentaminen epäonnistui",
+ "Failed to send email": "Sähköpostin lähettäminen epäonnistui",
+ "Failed to send request.": "Pyynnön lähettäminen epäonnistui",
+ "Failed to set display name": "Näyttönimen asettaminen epäonnistui",
+ "Failed to set up conference call": "Konferenssipuhelun alustus epäonnistui",
+ "Failed to toggle moderator status": "Moderaattoriasetuksen muuttaminen epäonnistui",
+ "Failed to unban": "Porttikiellon poistaminen epäonnistui",
+ "Failed to upload file": "Tiedoston lataaminen epäonnistui",
+ "Failed to upload profile picture!": "Profiilikuvan lataaminen epäonnistui",
+ "Failed to verify email address: make sure you clicked the link in the email": "Varmenna sähköpostiosoitteesi: varmista että klikkasit sähköpostissa olevaa linkkiä",
+ "Failure to create room": "Huoneen luominen epäonnistui",
+ "favourite": "suosikki",
+ "Favourites": "Suosikit",
+ "Fill screen": "Täytä näyttö",
+ "Filter room members": "Suodata huoneen jäsenet",
+ "Forget room": "Unohda huone",
+ "Forgot your password?": "Unohditko salasanasi?",
+ "For security, this session has been signed out. Please sign in again.": "Turvallisuussyistä tämä istunto on vanhentunut. Ole hyvä ja kirjaudu uudestaan.",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Turvallusuussyistä uloskirjautuminen poistaa kaikki päästä päähän-salausavaimet tästä selaimesta. Jos haluat purkaa keskustelujen salaukset tulevaisuudessa pitää sinun viedä purkuavaimet ja pitää ne turvallisesti tallessa.",
+ "Found a bug?": "Löysitkö virheen?",
+ "had": "oli",
+ "Hide Apps": "Piilota sovellukset",
+ "Hide read receipts": "Piilota lukukuittaukset",
+ "Hide Text Formatting Toolbar": "Piilota tekstinmuotoilutyökalupalkki",
+ "Homeserver is": "Kotipalvelin on",
+ "Identity Server is": "Identiteettipalvelin on",
+ "I have verified my email address": "Olen varmistanut sähköpostiosoitteeni",
+ "Import": "Tuo",
+ "Import E2E room keys": "Tuo päästä päähän-salaus (E2E) huoneavaimet",
+ "Incoming call from %(name)s": "Saapuva puhelu käyttäjältä %(name)s",
+ "Incoming video call from %(name)s": "Saapuva videopuhelu käyttäjältä %(name)s",
+ "Incoming voice call from %(name)s": "Saapuva äänipuhelu käyttäjältä %(name)s",
+ "Incorrect username and/or password.": "Virheellinen käyttäjänimi ja/tai salasana",
+ "Incorrect verification code": "Virheellinen varmennuskoodi",
+ "Integrations Error": "Integraatiovirhe",
+ "Interface Language": "Käyttöliittymän kieli",
+ "Invalid alias format": "Aliaksen muoto on virheellinen",
+ "Invalid address format": "Osoitteen muoto on virheellinen",
+ "Invalid Email Address": "Virheellinen sähköpostiosoite",
+ "Invite new room members": "Kutsu lisää jäseniä huoneeseen",
+ "Invited": "Kutsuttu",
+ "Invites": "Kutsuu",
+ "Invites user with given id to current room": "Kutsuu annetun käyttäjätunnisteen mukaisen käyttäjän huoneeseen",
+ "Sign in with": "Kirjaudu käyttäen",
+ "Join Room": "Liity huoneeseen",
+ "joined and left": "liittyi ja poistui",
+ "joined": "liittyi",
+ "Joins room with given alias": "Liittyy huoneeseen jolla on annettu alias",
+ "Jump to first unread message.": "Hyppää ensimmäiseen lukemattomaan viestiin",
+ "Kick": "Poista huoneesta",
+ "Kicks user with given id": "Poistaa käyttäjätunnisteen mukaisen käyttäjän huoneesta",
+ "Labs": "Laboratorio",
+ "Last seen": "Viimeksi nähty",
+ "Leave room": "Poistu huoneesta",
+ "left and rejoined": "poistui ja liittyi jälleen",
+ "left": "poistui",
+ "Level:": "Taso:",
+ "Local addresses for this room:": "Tämän huoneen paikalliset osoitteet:",
+ "Logged in as:": "Kirjautunut käyttäjänä:",
+ "Login as guest": "Kirjaudu vieraana",
+ "Logout": "Kirjaudu ulos",
+ "Low priority": "Alhainen prioriteetti",
+ "Manage Integrations": "Hallinoi integraatioita",
+ "Markdown is disabled": "Markdown on pois päältä",
+ "Markdown is enabled": "Mardown on päällä",
+ "matrix-react-sdk version:": "Matrix-react-sdk versio:",
+ "Matrix Apps": "Matrix ohjelmat",
+ "Members only": "Vain jäsenet",
+ "Message not sent due to unknown devices being present": "Viestiä ei lähetetty koska paikalla on tuntemattomia laitteita",
+ "Mobile phone number": "Matkapuhelinnumero",
+ "Mobile phone number (optional)": "Matkapuhelinnumero (valinnainen)",
+ "Moderator": "Moderaattori",
+ "my Matrix ID": "minun Matrix tunniste",
+ "Name": "Nimi",
+ "New password": "Uusi salasana",
+ "New passwords don't match": "Uudet salasanat eivät täsmää",
+ "New passwords must match each other.": "Uusien salasanojen on vastattava toisiaan",
+ "not set": "ei asetettu",
+ "not specified": "ei määritetty",
+ "(not supported by this browser)": "(ei tuettu tässä selaimessa)",
+ "": "",
+ "AM": "AM",
+ "PM": "PM",
+ "NOT verified": "EI varmennettu",
+ "NOTE: Apps are not end-to-end encrypted": "Huom: Ohjelmat eivät ole päästä päähän-salattuja",
+ "No display name": "Ei näyttönimeä",
+ "No more results": "Ei enempää tuloksia",
+ "No results": "Ei tuloksia",
+ "OK": "OK",
+ "olm version:": "olm versio:",
+ "Once encryption is enabled for a room it cannot be turned off again (for now)": "Kun salaus on kytketty päälle sitä ei enää voi kytkeä pois (toistaiseksi)",
+ "Only people who have been invited": "Vain kutsun saanneet käyttäjät",
+ "Password": "Salasana",
+ "Password:": "Salasana:",
+ "Passwords can't be empty": "Salasanat eivät voi olla tyhjiä",
+ "People": "Henkilöt",
+ "Permissions": "Oikeudet",
+ "Phone": "Puhelin",
+ "Privacy warning": "Yksityisyysvaroitus",
+ "Private Chat": "Yksityinen keskustelu",
+ "Profile": "Profiili",
+ "Public Chat": "Julkinen keskustelu",
+ "Reason": "Syy",
+ "Reason: %(reasonText)s": "Syy: %(reasonText)s",
+ "Register": "Rekisteröi",
+ "rejected": "hylätty",
+ "Reject invitation": "Hylkää kutsu",
+ "Rejoin": "Liity uudestaan",
+ "Remove Contact Information?": "Poista yhteystiedot?",
+ "Results from DuckDuckGo": "DuckDuckGo:n tulokset",
+ "Return to login screen": "Palaa kirjautumissivulle",
+ "riot-web version:": "Riot-web versio:",
+ "Room Colour": "Huoneen väri",
+ "Room contains unknown devices": "Huone sisältää tuntemattomia laitteita",
+ "Room name (optional)": "Huoneen nimi (valinnainen)",
+ "Rooms": "Huoneet",
+ "Save": "Tallenna",
+ "Scroll to bottom of page": "Vieritä sivun loppuun",
+ "Scroll to unread messages": "Vieritä lukemattomiin viesteihin",
+ "Search failed": "Haku epäonnistui",
+ "Searches DuckDuckGo for results": "Hakee DuckDuckGo:n avulla",
+ "Send a message (unencrypted)": "Lähetä viesti (salaamaton)",
+ "Send an encrypted message": "Lähetä salattu viesti",
+ "Send anyway": "Lähetä kuitenkin",
+ "Sender device information": "Lähettäjän laitteen tiedot",
+ "Send Invites": "Lähetä kutsu",
+ "sent an image": "lähetti kuvan",
+ "sent a video": "lähetti videon",
+ "Server error": "Palvelinvirhe",
+ "Session ID": "Istuntotunniste",
+ "Set": "Aseta",
+ "Sets the room topic": "Asettaa huoneen aiheen",
+ "Show panel": "Näytä paneeli",
+ "Sign in": "Kirjaudu sisään",
+ "Sign out": "Kirjaudu ulos",
+ "since they joined": "liittymisestä lähtien",
+ "since they were invited": "kutsusta lähtien",
+ "Some of your messages have not been sent.": "Jotkut viesteistäsi ei ole lähetetty",
+ "Someone": "Joku",
+ "Start a chat": "Aloita keskustelu",
+ "Start Chat": "Aloita keskustelu",
+ "Submit": "Lähetä",
+ "This email address is already in use": "Tämä sähköpostiosoite on jo käytössä",
+ "This email address was not found": "Sähköpostiosoitetta ei löytynyt",
+ "The remote side failed to pick up": "Toinen osapuoli ei vastannut",
+ "This room has no local addresses": "Tällä huoneella ei ole paikallista osoitetta",
+ "This room": "Tämä huone",
+ "This room is not accessible by remote Matrix servers": "Tähän huoneeseen ei voi päästä ulkopuolisilta Matrix-palvelimilta",
+ "This room's internal ID is": "Huoneen sisäinen tunniste on",
+ "Unban": "Poista porttikielto",
+ "Undecryptable": "Salauksen purku ei ole mahdollista",
+ "Unencrypted room": "Salaamaton huone",
+ "unencrypted": "salaamaton",
+ "Unencrypted message": "Salaamaton viesti",
+ "unknown caller": "tuntematon soittaja",
+ "unknown device": "tuntematon laite",
+ "Unknown room %(roomId)s": "Tuntematon huone %(roomId)s",
+ "Unknown (user, device) pair:": "Tuntematon (käyttäjä,laite) -pari.",
+ "Unmute": "Poista mykistys",
+ "Unnamed Room": "Nimeämätön huone",
+ "Unrecognised command:": "Tuntematon komento:",
+ "Unrecognised room alias:": "Tuntematon huonealias:",
+ "Unverified": "Varmentamaton",
+ "Uploading %(filename)s and %(count)s others|zero": "Ladataan %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Ladataan %(filename)s ja %(count)s muuta"
+}
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 9b5ff58d9e..585e47f5a3 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1,126 +1,4 @@
{
- "af": "Afrikaans",
- "ar-ae": "Arabic (U.A.E.)",
- "ar-bh": "Arabic (Bahrain)",
- "ar-dz": "Arabic (Algeria)",
- "ar-eg": "Arabic (Egypt)",
- "ar-iq": "Arabic (Iraq)",
- "ar-jo": "Arabic (Jordan)",
- "ar-kw": "Arabic (Kuwait)",
- "ar-lb": "Arabic (Lebanon)",
- "ar-ly": "Arabic (Libya)",
- "ar-ma": "Arabic (Morocco)",
- "ar-om": "Arabic (Oman)",
- "ar-qa": "Arabic (Qatar)",
- "ar-sa": "Arabic (Saudi Arabia)",
- "ar-sy": "Arabic (Syria)",
- "ar-tn": "Arabic (Tunisia)",
- "ar-ye": "Arabic (Yemen)",
- "be": "Belarusian",
- "bg": "Bulgarian",
- "ca": "Catalan",
- "cs": "Czech",
- "da": "Danish",
- "de-at": "German (Austria)",
- "de-ch": "German (Switzerland)",
- "de": "German",
- "de-li": "German (Liechtenstein)",
- "de-lu": "German (Luxembourg)",
- "el": "Greek",
- "en-au": "English (Australia)",
- "en-bz": "English (Belize)",
- "en-ca": "English (Canada)",
- "en": "English",
- "en-gb": "English (United Kingdom)",
- "en-ie": "English (Ireland)",
- "en-jm": "English (Jamaica)",
- "en-nz": "English (New Zealand)",
- "en-tt": "English (Trinidad)",
- "en-us": "English (United States)",
- "en-za": "English (South Africa)",
- "es-ar": "Spanish (Argentina)",
- "es-bo": "Spanish (Bolivia)",
- "es-cl": "Spanish (Chile)",
- "es-co": "Spanish (Colombia)",
- "es-cr": "Spanish (Costa Rica)",
- "es-do": "Spanish (Dominican Republic)",
- "es-ec": "Spanish (Ecuador)",
- "es-gt": "Spanish (Guatemala)",
- "es-hn": "Spanish (Honduras)",
- "es-mx": "Spanish (Mexico)",
- "es-ni": "Spanish (Nicaragua)",
- "es-pa": "Spanish (Panama)",
- "es-pe": "Spanish (Peru)",
- "es-pr": "Spanish (Puerto Rico)",
- "es-py": "Spanish (Paraguay)",
- "es": "Spanish (Spain)",
- "es-sv": "Spanish (El Salvador)",
- "es-uy": "Spanish (Uruguay)",
- "es-ve": "Spanish (Venezuela)",
- "et": "Estonian",
- "eu": "Basque (Basque)",
- "fa": "Farsi",
- "fi": "Finnish",
- "fo": "Faeroese",
- "fr-be": "French (Belgium)",
- "fr-ca": "French (Canada)",
- "fr-ch": "French (Switzerland)",
- "fr": "French",
- "fr-lu": "French (Luxembourg)",
- "ga": "Irish",
- "gd": "Gaelic (Scotland)",
- "he": "Hebrew",
- "hi": "Hindi",
- "hr": "Croatian",
- "hu": "Hungarian",
- "id": "Indonesian",
- "is": "Icelandic",
- "it-ch": "Italian (Switzerland)",
- "it": "Italian",
- "ja": "Japanese",
- "ji": "Yiddish",
- "ko": "Coréen",
- "lt": "Lithuanian",
- "lv": "Latvian",
- "mk": "Macedonian (FYROM)",
- "ms": "Malaysian",
- "mt": "Maltese",
- "nl-be": "Dutch (Belgium)",
- "nl": "Dutch",
- "no": "Norwegian",
- "pl": "Polish",
- "pt-br": "Brazilian Portuguese",
- "pt": "Portuguese",
- "rm": "Rhaeto-Romanic",
- "ro-mo": "Romanian (Republic of Moldova)",
- "ro": "Romanian",
- "ru-mo": "Russian (Republic of Moldova)",
- "ru": "Russian",
- "sb": "Sorbian",
- "sk": "Slovak",
- "sl": "Slovenian",
- "sq": "Albanian",
- "sr": "Serbe",
- "sv-fi": "Swedish (Finland)",
- "sv": "Swedish",
- "sx": "Sutu",
- "sz": "Sami (Lappish)",
- "th": "Thai",
- "tn": "Tswana",
- "tr": "Turkish",
- "ts": "Tsonga",
- "uk": "Ukrainian",
- "ur": "Urdu",
- "ve": "Venda",
- "vi": "Vietnamese",
- "xh": "Xhosa",
- "zh-cn": "Chinese (PRC)",
- "zh-hk": "Chinese (Hong Kong SAR)",
- "zh-sg": "Chinese (Singapore)",
- "zh-tw": "Chinese (Taiwan)",
- "zu": "Zulu",
- "anyone": "n'importe qui",
- "Direct Chat": "Discussion Directe",
"Direct chats": "Conversations directes",
"Disable inline URL previews by default": "Désactiver l’aperçu des URLs",
"Disinvite": "Désinviter",
@@ -150,7 +28,6 @@
"Failed to change power level": "Échec du changement de niveau d'autorité",
"Failed to delete device": "Échec de la suppression de l'appareil",
"Failed to forget room %(errCode)s": "Échec lors de l'oubli du salon %(errCode)s",
- "Please Register": "Veuillez vous enregistrer",
"Remove": "Supprimer",
"was banned": "a été banni(e)",
"was invited": "a été invité(e)",
@@ -170,7 +47,6 @@
"Favourite": "Favoris",
"Notifications": "Notifications",
"Settings": "Paramètres",
- "Failed to join the room": "Échec de l'adhésion au salon",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un message texte a été envoyé à +%(msisdn)s. Merci d'entrer le code de vérification qu'il contient",
"accept": "Accepter",
"%(targetName)s accepted an invitation.": "%(targetName)s a accepté une invitation.",
@@ -180,9 +56,6 @@
"Admin": "Admin",
"Advanced": "Avancé",
"Algorithm": "Algorithme",
- "all room members": "tous les membres du salon",
- "all room members, from the point they are invited": "tous les membres du salon, depuis le moment où ils ont été invités",
- "all room members, from the point they joined": "tous les membres du salon, depuis le moment où ils ont joint",
"an address": "une adresse",
"and": "et",
"%(items)s and %(remaining)s others": "%(items)s et %(remaining)s autres",
@@ -191,10 +64,8 @@
"%(names)s and %(lastPerson)s are typing": "%(names)s et %(lastPerson)s sont en train d'écrire",
"%(names)s and one other are typing": "%(names)s et un autre sont en train d'écrire",
"%(names)s and %(count)s others are typing": "%(names)s et %(count)s d'autres sont en train d'écrire",
- "and %(count)s others...": {
- "other": "et %(count)s autres...",
- "one": "et un autre..."
- },
+ "and %(count)s others...|other": "et %(count)s autres...",
+ "and %(count)s others...|one": "et un autre...",
"An email has been sent to": "Un e-mail a été envoyé à",
"A new password must be entered.": "Un nouveau mot de passe doit être entré.",
"Anyone who knows the room's link, apart from guests": "Tout ceux qui connaissent le lien du salon, à part les visiteurs",
@@ -273,7 +144,7 @@
"Failed to send request.": "Erreur lors de l'envoi de la requête.",
"Failed to set display name": "Échec lors de l'enregistrement du nom d'affichage",
"Failed to set up conference call": "Échec lors de l’établissement de l’appel",
- "Failed to toggle moderator status": "Échec lors de l’établissement du statut de modérateur",
+ "Failed to toggle moderator status": "Échec lors de l’activation du statut de modérateur",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s a accepté l’invitation de %(displayName)s.",
"Access Token:": "Jeton d’accès :",
"Always show message timestamps": "Toujours afficher l'heure des messages",
@@ -288,17 +159,15 @@
"favourite": "favoris",
"Favourites": "Favoris",
"Fill screen": "Plein écran",
- "Filter room members": "Filtrer les membres par nom",
+ "Filter room members": "Filtrer les membres du salon",
"Forget room": "Oublier le salon",
"Forgot your password?": "Mot de passe perdu ?",
"For security, this session has been signed out. Please sign in again.": "Par sécurité, la session a expiré. Merci de vous authentifier à nouveau.",
"Found a bug?": "Trouvé un problème ?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s à %(toPowerLevel)s",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Les visiteurs ne peuvent créer de nouveaux salons. Merci de vous enregistrer pour commencer une discussion.",
- "Guest users can't upload files. Please register to upload.": "Les visiteurs ne peuvent pas télécharger de fichier. Veuillez vous enregistrer pour télécharger.",
"had": "avait",
"Hangup": "Raccrocher",
- "Hide read receipts": "Cacher les accusés de réception",
+ "Hide read receipts": "Cacher les accusés de lecture",
"Hide Text Formatting Toolbar": "Cacher la barre de formatage de texte",
"Historical": "Historique",
"Homeserver is": "Le homeserver est",
@@ -321,10 +190,10 @@
"%(displayName)s is typing": "%(displayName)s est en train d'écrire",
"Sign in with": "Je veux m'identifier avec",
"Join Room": "Rejoindre le salon",
- "joined and left": "a joint et quitté",
- "joined": "a joint",
- "%(targetName)s joined the room.": "%(targetName)s a joint le salon.",
- "Joins room with given alias": "Joint le salon avec l'alias défini",
+ "joined and left": "a rejoint et quitté",
+ "joined": "a rejoint",
+ "%(targetName)s joined the room.": "%(targetName)s a rejoint le salon.",
+ "Joins room with given alias": "Rejoint le salon avec l'alias défini",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s a expulsé %(targetName)s.",
"Kick": "Expulser",
"Kicks user with given id": "Expulse l'utilisateur avec l'ID donné",
@@ -339,7 +208,11 @@
"Login as guest": "S'identifier en tant que visiteur",
"Logout": "Se déconnecter",
"Low priority": "Priorité basse",
- "%(senderName)s made future room history visible to": "%(senderName)s a rendu l'historique visible de",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s a rendu l'historique visible à tous les membres du salon, depuis le moment où ils ont été invités.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s a rendu l'historique visible à tous les membres du salon, depuis le moment où ils ont rejoint.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s a rendu l'historique visible à tous les membres du salon.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s a rendu l'historique visible à n'importe qui.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s a rendu l'historique visible à inconnu (%(visibility)s).",
"Manage Integrations": "Gestion des intégrations",
"Markdown is disabled": "Le formatage \"Markdown\" est désactivé",
"Markdown is enabled": "Le formatage “Markdown” est activé",
@@ -357,14 +230,13 @@
"Never send encrypted messages to unverified devices in this room": "Ne jamais envoyer de message chiffré aux appareils non-vérifiés dans ce salon",
"Never send encrypted messages to unverified devices in this room from this device": "Ne jamais envoyer de message chiffré aux appareils non-vérifiés dans ce salon depuis cet appareil",
"New address (e.g. #foo:%(localDomain)s)": "Nouvelle adresse (par ex. #foo:%(localDomain)s)",
- "New Composer & Autocomplete": "Nouveau compositeur & Autocomplétion",
"New password": "Nouveau mot de passe",
"New passwords don't match": "Les mots de passe ne correspondent pas",
"New passwords must match each other.": "Les nouveaux mots de passe doivent être identiques.",
"none": "aucun",
"not set": "non défini",
"not specified": "non spécifié",
- "(not supported by this browser)": "(non supporté par cet explorateur)",
+ "(not supported by this browser)": "(non supporté par ce navigateur)",
"": "",
"NOT verified": "NON vérifié",
"No devices with registered encryption keys": "Pas d’appareil avec des clés de chiffrement enregistrées",
@@ -383,28 +255,25 @@
"Operation failed": "L'opération a échoué",
"Bulk Options": "Options de masse",
"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.": "Changer le mot de passe réinitialise actuellement les clés de chiffrement sur tous les appareils, rendant l’historique chiffré illisible, à moins d’exporter les clés du salon en avance de phase puis de les ré-importer. Ceci sera amélioré prochainement.",
- "Default": "Défaut",
+ "Default": "Par défaut",
"Email address": "Adresse e-mail",
"Error decrypting attachment": "Erreur lors du déchiffrement de la pièce jointe",
"Failed to set avatar.": "Erreur lors de la définition de la photo de profil.",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Par sécurité une déconnexion supprimera toutes les clés de chiffrement de ce navigateur. Si vous voulez être capable de déchiffrer l’historique de votre conversation lors de sessions futures de Riot, merci d’exporter les clés pour le salon.",
- "Guests can't set avatars. Please register.": "Les visiteurs ne peuvent définir de photo de profil. Merci de vous enregistrer.",
- "Guests can't use labs features. Please register.": "Les visiteurs ne peuvent utiliser les fonctionalités du laboratoire. Merci de vous enregistrer.",
"Guests cannot join this room even if explicitly invited.": "Les visiteurs ne peuvent rejoindre ce salon, même si explicitement invités.",
"Invalid file%(extra)s": "Fichier %(extra)s invalide",
"Mute": "Couper le son",
"No users have specific privileges in this room": "Aucun utilisateur n’a de privilège spécifique dans ce salon",
"olm version:": "version de olm :",
- "Once you've followed the link it contains, click below": "Une fois que vous aurez suivi le lien qu’il contient, cliquez ci-dessous",
+ "Once you've followed the link it contains, click below": "Une fois que vous aurez suivi le lien qu’il contient, cliquez ci-dessous",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s a placé un appel %(callType)s.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Veuillez vérifier vos e-mails et cliquer sur le lien que vous avez reçu. Puis cliquez sur continuer.",
"Power level must be positive integer.": "Le niveau d'autorité doit être un entier positif.",
- "Press": "Cliquer",
"Privacy warning": "Alerte de confidentialité",
- "Privileged Users": "Utilisateur Privilégié",
+ "Privileged Users": "Utilisateur privilégié",
"Profile": "Profil",
"Reason": "Raison",
- "Revoke Moderator": "Révoquer le Modérateur",
+ "Revoke Moderator": "Révoquer le modérateur",
"Refer a friend to Riot:": "Recommander Riot à un ami :",
"rejected": "rejeté",
"%(targetName)s rejected the invitation.": "%(targetName)s a rejeté l’invitation.",
@@ -414,17 +283,17 @@
"%(senderName)s removed their profile picture.": "%(senderName)s a supprimé sa photo de profil.",
"Remove %(threePid)s?": "Supprimer %(threePid)s ?",
"%(senderName)s requested a VoIP conference.": "%(senderName)s a demandé une conférence audio.",
- "Report it": "Le rapporter",
+ "Report it": "Le signaler",
"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.": "Réinitialiser le mot de passe va réinitialiser les clés de chiffrement sur tous les appareils, rendant l’historique chiffré illisible, à moins que vous ayez exporté les clés du salon en avance de phase puis que vous les ré-importiez. Cela sera amélioré prochainement.",
- "restore": "restorer",
+ "restore": "restaurer",
"Return to app": "Retourner à l’application",
"Return to login screen": "Retourner à l’écran d’identification",
- "Riot does not have permission to send you notifications - please check your browser settings": "Riot n’a pas la permission de vous envoyer des notifications - Merci de vérifier les paramètres de votre explorateur",
- "Riot was not given permission to send notifications - please try again": "Riot n’a pas reçu la permission de vous envoyer des notifications - Merci d’essayer à nouveau",
+ "Riot does not have permission to send you notifications - please check your browser settings": "Riot n’a pas la permission de vous envoyer des notifications - merci de vérifier les paramètres de votre navigateur",
+ "Riot was not given permission to send notifications - please try again": "Riot n’a pas reçu la permission de vous envoyer des notifications - merci d’essayer à nouveau",
"riot-web version:": "Version de riot-web :",
"Room %(roomId)s not visible": "Le salon %(roomId)s n'est pas visible",
"Room Colour": "Couleur du salon",
- "Room name (optional)": "Nom du salon (optionnel)",
+ "Room name (optional)": "Nom du salon (facultatif)",
"Rooms": "Salons",
"Scroll to bottom of page": "Aller en bas de la page",
"Scroll to unread messages": "Aller aux messages non-lus",
@@ -433,7 +302,7 @@
"Searches DuckDuckGo for results": "Recherche des résultats dans DuckDuckGo",
"Send a message (unencrypted)": "Envoyer un message (non chiffré)",
"Send an encrypted message": "Envoyer un message chiffré",
- "Sender device information": "Information de l'appareil de l'expéditeur",
+ "Sender device information": "Informations de l'appareil de l'expéditeur",
"Send Invites": "Envoyer les invitations",
"Send Reset Email": "Envoyer l'e-mail de réinitialisation",
"sent an image": "a envoyé une image",
@@ -443,7 +312,7 @@
"Server error": "Erreur du serveur",
"Server may be unavailable or overloaded": "Le serveur semble être inaccessible ou surchargé",
"Server may be unavailable, overloaded, or search timed out :(": "Le serveur semble être inaccessible, surchargé ou la recherche a expiré :(",
- "Server may be unavailable, overloaded, or the file too big": "Le serveur semble être inaccessible, surchargé ou le fichier trop important",
+ "Server may be unavailable, overloaded, or the file too big": "Le serveur semble être inaccessible, surchargé ou le fichier est trop volumineux",
"Server may be unavailable, overloaded, or you hit a bug.": "Le serveur semble être indisponible, surchargé, ou vous avez rencontré un problème.",
"Server unavailable, overloaded, or something else went wrong.": "Le serveur semble être inaccessible, surchargé ou quelque chose s'est mal passé.",
"Session ID": "Identifiant de session",
@@ -460,15 +329,13 @@
"Some of your messages have not been sent.": "Certains de vos messages n’ont pas été envoyés.",
"Someone": "Quelqu'un",
"Sorry, this homeserver is using a login which is not recognised ": "Désolé, ce homeserver utilise un identifiant qui n’est pas reconnu ",
- "Start a chat": "Démarrer une conversation",
- "Start Chat": "Démarrer une conversation",
+ "Start a chat": "Démarrer une discussion",
+ "Start Chat": "Démarrer une discussion",
"Submit": "Soumettre",
"Success": "Succès",
- "tag as %(tagName)s": "marquer comme %(tagName)s",
- "tag direct chat": "marquer comme conversation directe",
+ "tag direct chat": "marquer comme discussion directe",
"The default role for new room members is": "Le rôle par défaut des nouveaux membres est",
"The main address for this room is": "L'adresse principale pour ce salon est",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "Cette action ne peut être effectuée par un visiteur. Merci de vous enregistrer afin de pouvoir effectuer cette action.",
"This email address is already in use": "Cette adresse e-mail est déjà utilisée",
"This email address was not found": "Cette adresse e-mail n’a pas été trouvée",
"%(actionVerb)s this person?": "%(actionVerb)s cette personne ?",
@@ -502,8 +369,7 @@
"to restore": "pour restaurer",
"To send events of type": "Pour envoyer des évènements du type",
"To send messages": "Pour envoyer des messages",
- "to start a chat with someone": "pour démarrer une conversation avec quelqu’un",
- "to tag as %(tagName)s": "pour marquer comme %(tagName)s",
+ "to start a chat with someone": "pour démarrer une discussion avec quelqu’un",
"to tag direct chat": "pour marquer comme conversation directe",
"To use it, just wait for autocomplete results to load and tab through them.": "Pour l’utiliser, attendez simplement que les résultats de l’auto-complétion s’affichent et défilez avec la touche Tab.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Un instant donné de la chronologie n’a pu être chargé car vous n’avez pas la permission de le visualiser.",
@@ -513,7 +379,6 @@
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s a activé le chiffrement de bout-en-bout (algorithme %(algorithm)s).",
"Unable to add email address": "Impossible d'ajouter l'adresse e-mail",
"Unable to remove contact information": "Impossible de supprimer les informations du contact",
- "Unable to restore previous session": "Impossible de rétablir la session précédente",
"Unable to verify email address.": "Impossible de vérifier l’adresse e-mail.",
"Unban": "Amnistier (annuler le bannissement)",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s a amnistié %(targetName)s.",
@@ -524,7 +389,6 @@
"unencrypted": "non chiffré",
"unknown device": "appareil inconnu",
"Unknown room %(roomId)s": "Salon inconnu %(roomId)s",
- "unknown": "inconnu",
"Unmute": "Activer le son",
"uploaded a file": "téléchargé un fichier",
"Upload avatar": "Télécharger une photo de profil",
@@ -565,7 +429,7 @@
"You have no visible notifications": "Vous n'avez pas de notifications visibles",
"you must be a": "vous devez être un",
"You need to be able to invite users to do that.": "Vous devez être capable d’inviter des utilisateurs pour faire ça.",
- "You need to be logged in.": "Vous devez être connecté.",
+ "You need to be logged in.": "Vous devez être identifié.",
"You need to enter a user name.": "Vous devez entrer un nom d’utilisateur.",
"You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Vous devez vous connecter à nouveau pour générer les clés de chiffrement pour cet appareil, et soumettre la clé publique à votre homeserver. Cette action ne se reproduira pas ; veuillez nous excuser pour la gêne occasionnée.",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Votre adresse e-mail ne semble pas associée à un identifiant Matrix sur ce homeserver.",
@@ -574,8 +438,7 @@
"You seem to be in a call, are you sure you want to quit?": "Vous semblez avoir un appel en cours, êtes-vous sûr(e) de vouloir quitter ?",
"You seem to be uploading files, are you sure you want to quit?": "Vous semblez être en train de télécharger des fichiers, êtes-vous sûr(e) de vouloir quitter ?",
"You should not yet trust it to secure data": "Vous ne pouvez pas encore lui faire confiance pour sécuriser vos données",
- "changing room on a RoomView is not supported": "changer de salon sur un RoomView n'est pas supporté",
- "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Vous ne pourrez pas défaire ce changement car vous promouvez l’utilisateur aux mêmes pouvoirs que vous.",
+ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Vous ne pourrez pas annuler ce changement car vous promouvez l’utilisateur au même niveau d'autorité que le vôtre.",
"Sun": "Dim",
"Mon": "Lun",
"Tue": "Mar",
@@ -619,7 +482,6 @@
"Room": "Salon",
"Connectivity to the server has been lost.": "La connectivité au serveur a été perdue.",
"Sent messages will be stored until your connection has returned.": "Les messages envoyés seront stockés jusqu’à ce que votre connection revienne.",
- "Auto-complete": "Auto-complétion",
"Resend all": "Tout renvoyer",
"(~%(searchCount)s results)": "(~%(searchCount)s résultats)",
"Cancel": "Annuler",
@@ -648,11 +510,11 @@
"%(oneUser)sleft and rejoined": "%(oneUser)sa quitté et à nouveau joint le salon",
"%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)sont rejeté leurs invitations %(repeats)s fois",
"%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)sa rejeté son invitation %(repeats)s fois",
- "%(severalUsers)srejected their invitations": "%(severalUsers)sont rejeté leurs invitations",
+ "%(severalUsers)srejected their invitations": "%(severalUsers)sont rejeté leur invitation",
"%(oneUser)srejected their invitation": "%(oneUser)sa rejeté son invitation",
- "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)sont vu leurs invitations rétractées %(repeats)s fois",
+ "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)sont vu leur invitation rétractée %(repeats)s fois",
"%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)sa vu son invitation rétractée %(repeats)s fois",
- "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)sont vu leurs invitations rétractées",
+ "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)sont vu leur invitation rétractée",
"%(oneUser)shad their invitation withdrawn": "%(oneUser)sa vu son invitation rétractée",
"were invited %(repeats)s times": "ont été invité(e)s %(repeats)s fois",
"was invited %(repeats)s times": "a été invité(e) %(repeats)s fois",
@@ -692,8 +554,7 @@
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Le fichier exporté est protégé par une phrase secrète. Vous devez entrer cette phrase secrète ici pour déchiffrer le fichier.",
"You must join the room to see its files": "Vous devez joindre le salon pour voir ses fichiers",
"Reject all %(invitedRooms)s invites": "Rejeter la totalité des %(invitedRooms)s invitations",
- "Start new chat": "Démarrer une nouvelle conversation",
- "Guest users can't invite users. Please register.": "Les visiteurs ne peuvent inviter d’autres utilisateurs. Merci de vous enregistrer.",
+ "Start new chat": "Démarrer une nouvelle discussion",
"Failed to invite": "Echec de l'invitation",
"Failed to invite user": "Echec lors de l'invitation de l'utilisateur",
"Failed to invite the following users to the %(roomName)s room:": "Echec lors de l’invitation des utilisateurs suivants dans le salon %(roomName)s :",
@@ -702,7 +563,7 @@
"Unknown error": "Erreur inconnue",
"Incorrect password": "Mot de passe incorrect",
"This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Ceci rendra votre compte inutilisable de manière permanente. Vous ne pourrez pas enregistrer à nouveau le même identifiant utilisateur.",
- "This action is irreversible.": "Cette action est irreversible.",
+ "This action is irreversible.": "Cette action est irréversible.",
"To continue, please enter your password.": "Pour continuer, merci d'entrer votre mot de passe.",
"To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Pour vérifier que vous pouvez faire confiance à cet appareil, merci de contacter son propriétaire par un autre moyen (par ex. en personne ou par téléphone) et demandez lui si la clé qu’il/elle voit dans ses Paramètres Utilisateur pour cet appareil correspond à la clé ci-dessous :",
"Device name": "Nom de l'appareil",
@@ -715,9 +576,8 @@
"Unable to restore session": "Impossible de restaurer la session",
"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 vous avez utilisé une version plus récente de Riot précédemment, votre session risque d’être incompatible avec cette version. Fermez cette fenêtre et retournez à la version plus récente.",
"Continue anyway": "Continuer quand même",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Votre nom d’affichage est la manière dont vous allez apparaître pour les autres quand vous parlerez dans les salons. Que voulez-vous qu’il soit ?",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Vous êtes en train d’ajouter à la liste noire des appareils non-vérifiés ; pour envoyer des messages à ces appareils vous devez les vérifier.",
- "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Nous vous recommandons d’effectuer le process de vérification pour tous les appareils afin de confirmer qu’ils appartiennent à leurs propriétaires légitimes, mais vous pouvez renvoyer le(s) message(s) sans vérifier si vous préférez.",
+ "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Nous vous recommandons d’effectuer le processus de vérification pour tous les appareils afin de confirmer qu’ils appartiennent à leurs propriétaires légitimes, mais vous pouvez renvoyer le(s) message(s) sans vérifier si vous préférez.",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contient des appareils que vous n'avez encore jamais vus.",
"Unknown devices": "Appareils inconnus",
"Unknown Address": "Adresse inconnue",
@@ -771,7 +631,6 @@
"Removed or unknown message type": "Type de message inconnu ou supprimé",
"disabled": "désactivé",
"enabled": "activé",
- "Set a Display Name": "Définir un nom d’affichage",
"for %(amount)ss": "depuis %(amount)ss",
"for %(amount)sm": "depuis %(amount)sm",
"for %(amount)sh": "depuis %(amount)sh",
@@ -782,19 +641,18 @@
"Device already verified!": "Appareil déjà vérifié !",
"Export": "Exporter",
"Failed to register as guest:": "Échec de l’inscription en tant que visiteur :",
- "Guest access is disabled on this Home Server.": "L’accès en tant que visiteur est désactivé sur ce serveur.",
+ "Guest access is disabled on this Home Server.": "L’accès en tant que visiteur est désactivé sur ce homeserver.",
"Import": "Importer",
"Incorrect username and/or password.": "Nom d’utilisateur et/ou mot de passe incorrect.",
"Results from DuckDuckGo": "Résultats de DuckDuckGo",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Les clés de signature que vous avez transmises correspondent aux clés que vous avez reçues de l’appareil %(deviceId)s de %(userId)s. L’appareil est vérifié.",
"This Home Server does not support login using email address.": "Ce serveur ne supporte pas l’identification par e-mail.",
- "There was a problem logging in.": "Un problème a été rencontré lors de l’identification.",
"Unknown (user, device) pair:": "Couple (utilisateur, appareil) inconnu :",
"Unrecognised command:": "Commande non-reconnue :",
"Unrecognised room alias:": "Alias de salon non-reconnu :",
"Use compact timeline layout": "Utiliser l'affichage compact",
"Verified key": "Clé vérifiée",
- "WARNING: Device already verified, but keys do NOT MATCH!": "ATTENTION : Appareil déjà vérifié mais les clés NE CORRESPONDENT PAS !",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "ATTENTION : appareil déjà vérifié mais les clés NE CORRESPONDENT PAS !",
"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!": "ATTENTION : ERREUR DE VÉRIFICATION DES CLÉS ! La clé de signature pour %(userId)s et l'appareil %(deviceId)s est “%(fprint)s” et ne correspond pas à la clé “%(fingerprint)s” qui a été fournie. Cela peut signifier que vos communications sont interceptées !",
"VoIP": "Voix sur IP",
"Missing Media Permissions, click here to request.": "Manque de permissions pour les médias, cliquer ici pour les demander.",
@@ -810,10 +668,9 @@
"Are you sure you want to leave the room '%(roomName)s'?": "Êtes-vous sûr de vouloir quitter le salon '%(roomName)s' ?",
"Custom level": "Niveau personnalisé",
"Device ID:": "Identifiant de l'appareil :",
- "device id: ": "Identifiant appareil : ",
+ "device id: ": "identifiant appareil : ",
"Device key:": "Clé de l’appareil :",
"Email address (optional)": "Adresse e-mail (facultatif)",
- "List this room in %(domain)s's room directory?": "Lister ce salon dans le répertoire de %(domain)s ?",
"Mobile phone number (optional)": "Numéro de téléphone (facultatif)",
"Password:": "Mot de passe :",
"Register": "S'inscrire",
@@ -822,23 +679,20 @@
"Tagged as: ": "Étiquetter comme : ",
"You have disabled URL previews by default.": "Vous avez désactivé les aperçus d’URL par défaut.",
"You have enabled URL previews by default.": "Vous avez activé les aperçus d’URL par défaut.",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "Vous avez entré un contact invalide. Essayez d’utiliser leur identifiant Matrix ou leur adresse email.",
"Hide removed messages": "Cacher les messages supprimés",
"Add": "Ajouter",
- "%(count)s new messages.one": "%(count)s nouveau message",
- "%(count)s new messages.other": "%(count)s nouveaux messages",
- "Disable markdown formatting": "Désactiver le formattage markdown",
- "Error: Problem communicating with the given homeserver.": "Erreur : Problème de communication avec le homeserveur.",
+ "%(count)s new messages|one": "%(count)s nouveau message",
+ "%(count)s new messages|other": "%(count)s nouveaux messages",
+ "Error: Problem communicating with the given homeserver.": "Erreur : problème de communication avec le homeserver.",
"Failed to fetch avatar URL": "Échec lors de la récupération de l’URL de l’avatar",
"The phone number entered looks invalid": "Le numéro de téléphone entré semble être invalide",
"This room is private or inaccessible to guests. You may be able to join if you register.": "Ce salon est privé ou interdits aux visiteurs. Vous pourrez peut-être le joindre si vous vous enregistrez.",
- "Uploading %(filename)s and %(count)s others.zero": "Téléchargement de %(filename)s",
- "Uploading %(filename)s and %(count)s others.one": "Téléchargement de %(filename)s et %(count)s autre",
- "Uploading %(filename)s and %(count)s others.other": "Téléchargement de %(filename)s et %(count)s autres",
+ "Uploading %(filename)s and %(count)s others|zero": "Téléchargement de %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Téléchargement de %(filename)s et %(count)s autre",
+ "Uploading %(filename)s and %(count)s others|other": "Téléchargement de %(filename)s et %(count)s autres",
"You must register to use this functionality": "Vous devez vous inscrire pour utiliser cette fonctionnalité",
- "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Tout renvoyer or tout annuler maintenant. Vous pouvez aussi sélectionner des messages individuels à envoyer ou annuler.",
+ "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Tout renvoyer ou tout annuler maintenant. Vous pouvez aussi sélectionner des messages individuels à envoyer ou annuler.",
"Create new room": "Créer un nouveau salon",
- "Welcome page": "Page d'accueil",
"Room directory": "Répertoire des salons",
"Start chat": "Démarrer une discussion",
"New Password": "Nouveau mot de passe",
@@ -856,23 +710,23 @@
"Accept": "Accepter",
"Active call (%(roomName)s)": "Appel en cours (%(roomName)s)",
"Admin tools": "Outils d'administration",
- "Alias (optional)": "Alias (optionnel)",
+ "Alias (optional)": "Alias (facultatif)",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Impossible de se connecter au homeserver - veuillez vérifier votre connexion, assurez vous que vous faites confiance au certificat SSL de votre homeserver , et qu'aucune extension de navigateur ne bloque les requêtes.",
"Click here to join the discussion!": "Cliquer ici pour joindre la discussion !",
"Close": "Fermer",
"Custom": "Personnaliser",
- "Decline": "Décliner",
- "Disable Notifications": "Désactiver les Notifications",
- "Drop File Here": "Déposer le Fichier Ici",
- "Enable Notifications": "Activer les Notifications",
+ "Decline": "Refuser",
+ "Disable Notifications": "Désactiver les notifications",
+ "Drop File Here": "Déposer le fichier Ici",
+ "Enable Notifications": "Activer les notifications",
"Failed to upload profile picture!": "Échec du téléchargement de la photo de profil !",
"Incoming call from %(name)s": "Appel entrant de %(name)s",
"Incoming video call from %(name)s": "Appel vidéo entrant de %(name)s",
"Incoming voice call from %(name)s": "Appel vocal entrant de %(name)s",
"No display name": "Pas de nom d'affichage",
"Otherwise, click here to send a bug report.": "Sinon, cliquer ici pour envoyer un rapport d'erreur.",
- "Private Chat": "Conversation Privée",
- "Public Chat": "Conversation Publique",
+ "Private Chat": "Conversation privée",
+ "Public Chat": "Conversation publique",
"Reason: %(reasonText)s": "Raison: %(reasonText)s",
"Rejoin": "Rejoindre",
"Room contains unknown devices": "Le salon contient des appareils inconnus",
@@ -897,9 +751,9 @@
"You have been banned from %(roomName)s by %(userName)s.": "Vous avez été bannis de %(roomName)s par %(userName)s.",
"You have been kicked from %(roomName)s by %(userName)s.": "Vous avez été expulsé de %(roomName)s by %(userName)s.",
"You may wish to login with a different account, or add this email to this account.": "Vous souhaiteriez peut-être vous identifier avec un autre compte, ou ajouter cette e-mail à votre compte.",
- "Your home server does not support device management.": "Votre home server ne supporte pas la gestion d'appareils.",
- "(~%(count)s results).one": "(~%(count)s résultat)",
- "(~%(count)s results).other": "(~%(count)s résultats)",
+ "Your home server does not support device management.": "Votre homeserver ne supporte pas la gestion d'appareils.",
+ "(~%(count)s results)|one": "(~%(count)s résultat)",
+ "(~%(count)s results)|other": "(~%(count)s résultats)",
"Device Name": "Nom de l'appareil",
"Encrypted by a verified device": "Chiffré par un appareil vérifié",
"Encrypted by an unverified device": "Chiffré par un appareil non vérifié",
@@ -912,12 +766,11 @@
"Join as voice or video .": "Joindre avec audio ou vidéo .",
"Last seen": "Vu pour la dernière fois",
"Level:": "Niveau :",
- "Searching known users": "Recherche d'utilisateurs connus",
"Set": "Défini",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (pouvoir %(powerLevelNumber)s)",
"(could not connect media)": "(impossible de se connecter au média)",
"(no answer)": "(pas de réponse)",
- "(unknown failure: %(reason)s)": "(erreur inconnue: %(reason)s)",
+ "(unknown failure: %(reason)s)": "(erreur inconnue : %(reason)s)",
"Your browser does not support the required cryptography extensions": "Votre navigateur ne supporte pas les extensions cryptographiques nécessaires",
"Not a valid Riot keyfile": "Fichier de clé Riot non valide",
"Authentication check failed: incorrect password?": "Erreur d’identification: mot de passe incorrect ?",
@@ -925,7 +778,7 @@
"Do you want to set an email address?": "Souhaitez-vous configurer une adresse e-mail ?",
"This will allow you to reset your password and receive notifications.": "Ceci va vous permettre de réinitialiser votre mot de passe et de recevoir des notifications.",
"Press to start a chat with someone": "Cliquez sur pour entamer une discussion avec quelqu'un",
- "You're not in any rooms yet! Press to make a room or to browse the directory": "Vous n'avez pas encore rejoint de salle ! Cliquez sur pour créer une salle ou sur pour explorer l'annuaire",
+ "You're not in any rooms yet! Press to make a room or to browse the directory": "Vous n'avez pas encore rejoint de salon ! Cliquez sur pour créer un salon ou sur pour explorer le répertoire",
"To return to your account in future you need to set a password": "Pour pouvoir accéder à votre compte dans le futur, vous devez enregistrer un mot de passe",
"Skip": "Passer",
"Start verification": "Commencer la vérification",
@@ -935,5 +788,58 @@
"Your unverified device '%(displayName)s' is requesting encryption keys.": "Votre appareil non vérifié '%(displayName)s' demande des clés de chiffrement.",
"Encryption key request": "Requête de clé de chiffrement",
"Updates": "Mises à jour",
- "Check for update": "Rechercher une mise à jour"
+ "Check for update": "Rechercher une mise à jour",
+ "Add a widget": "Ajouter un widget",
+ "Allow": "Autoriser",
+ "Changes colour scheme of current room": "Change le jeu de couleur du salon",
+ "Delete widget": "Supprimer le widget",
+ "Define the power level of a user": "Définir le niveau de privilèges d'un utilisateur",
+ "Edit": "Modifier",
+ "Enable automatic language detection for syntax highlighting": "Activer la détection automatique de langue pour la correction orthographique",
+ "Hide Apps": "Masquer les applications",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Masquer les messages d'arrivée/départ (n'affecte pas les invitations/exclusions/bannissements)",
+ "Hide avatar and display name changes": "Masquer les changements d'avatar et de nom",
+ "Matrix Apps": "Matrix Apps",
+ "Revoke widget access": "Désactiver les accès du widget",
+ "Sets the room topic": "Configure le sujet du salon",
+ "Show Apps": "Afficher les applications",
+ "To get started, please pick a username!": "Pour débuter, choisissez un nom d'utilisateur !",
+ "Unable to create widget.": "Impossible de créer le widget.",
+ "Unbans user with given id": "Amnistie l'utilisateur à partir de son identifiant",
+ "You are not in this room.": "Vous n'êtes pas dans ce salon.",
+ "You do not have permission to do that in this room.": "Vous n'avez pas la permission d'effectuer cette action dans ce salon.",
+ "Autocomplete Delay (ms):": "Délai pour l'autocomplétion (ms) :",
+ "This Home server does not support groups": "Ce homeserver ne supporte pas les groupes",
+ "Loading device info...": "Chargement des informations sur l'appareil...",
+ "Groups": "Groupes",
+ "Create a new group": "Créer un nouveau groupe",
+ "Create Group": "Créer le groupe",
+ "Group Name": "Nom du groupe",
+ "Example": "Exemple",
+ "Create": "Créer",
+ "Group ID": "Identifiant du groupe",
+ "+example:%(domain)s": "+exemple:%(domain)s",
+ "Group IDs must be of the form +localpart:%(domain)s": "Les identifiants de groupe doivent être au format +localpart:%(domain)s",
+ "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Il n'est pas encore possible de créer des groupes sur votre propre homeserver : utilisez un identifiant de groupe terminant par %(domain)s",
+ "Room creation failed": "Impossible de créer le salon",
+ "You are a member of these groups:": "Vous êtes membre des groupes suivants :",
+ "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Créez un groupe pour représenter votre communauté ! Définissez un jeu de salons et votre propre page d'accueil pour marquer votre espace dans l'univers Matrix.",
+ "Join an existing group": "Rejoindre un groupe existant",
+ "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org .": "Pour rejoindre un groupe existant, vous devez connaître l'identifiant de ce groupe ; il ressemblera à +exemple:matrix.org .",
+ "Featured Rooms:": "Salons mis en avant :",
+ "Error whilst fetching joined groups": "Erreur en récupérant la liste des groupes",
+ "Featured Users:": "Utilisateurs mis en avant :",
+ "Edit Group": "Modifier le groupe",
+ "Automatically replace plain text Emoji": "Remplacer automatiquement le texte par des Emoji",
+ "Failed to upload image": "Impossible de télécharger l'image",
+ "Failed to update group": "Impossible de modifier le groupe",
+ "Hide avatars in user and room mentions": "Masquer les avatars dans les mentions d'utilisateur et de salon",
+ "Do you want to load widget from URL:": "Charger un widget venant de l’URL :",
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget ajouté par %(senderName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget supprimé par %(senderName)s",
+ "Publish this room to the public in %(domain)s's room directory?": "Publier ce salon dans le l'annuaire public de %(domain)s ?",
+ "Integrations Error": "Erreur d'intégration",
+ "Cannot add any more widgets": "Impossible d'ajouter plus de widgets",
+ "The maximum permitted number of widgets have already been added to this room.": "Le nombre maximum de widgets autorisés a déjà été atteint pour ce salon.",
+ "NOTE: Apps are not end-to-end encrypted": "NOTE : Les applications ne sont pas chiffrées de bout en bout"
}
diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json
index 2d9daecc49..0967ef424b 100644
--- a/src/i18n/strings/he.json
+++ b/src/i18n/strings/he.json
@@ -1,21 +1 @@
-{
- "ar-ae": "ערבית (U.A.E)",
- "ar-bh": "ערבית (בחריין)",
- "ar-dz": "ערבית (אלג'יריה)",
- "ar-eg": "ערבית (מצריים)",
- "ar-iq": "ערבית (עיראק)",
- "ar-jo": "ערבית (ירדן)",
- "af": "אפריקאית",
- "ar-kw": "ערבית (כווית)",
- "ar-lb": "ערבית (לבנון)",
- "ar-ly": "ערבית (לוב)",
- "ar-ma": "ערבית (מרוקו)",
- "ar-om": "ערבית (אומן)",
- "ar-qa": "ערבית (קטאר)",
- "ar-sa": "ערבית (ערב הסעודית)",
- "ar-sy": "ערבית (סוריה)",
- "ar-tn": "ערבית (תוניסיה)",
- "ar-ye": "ערבית (תימן)",
- "be": "בלארוסית",
- "bg": "בולגרית"
-}
+{}
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index acad67ada0..2c34e05b1a 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -3,17 +3,14 @@
"Search": "Keresés",
"OK": "Rendben",
"Custom Server Options": "Egyedi szerver beállítások",
- "Direct Chat": "Közvetlen csevegés",
"Dismiss": "Eltűntet",
"Drop here %(toAction)s": "%(toAction)s -t húzd ide",
"Error": "Hiba",
"Failed to forget room %(errCode)s": "Nem lehet eltávolítani a szobát: %(errCode)s",
- "Failed to join the room": "Nem lehet csatlakozni a szobához",
"Favourite": "Kedvenc",
"Mute": "Elnémít",
"Notifications": "Értesítések",
"Operation failed": "Művelet sikertelen",
- "Please Register": "Regisztrálj",
"powered by Matrix": "Matrixon alapul",
"Remove": "Törlés",
"Settings": "Beállítások",
@@ -25,123 +22,6 @@
"Thursday": "Csütörtök",
"Friday": "Péntek",
"Saturday": "Szombat",
- "af": "Afrikaans",
- "ar-ae": "Arabic (U.A.E.)",
- "ar-bh": "Arab (Bahrain)",
- "ar-dz": "Arab (Algeria)",
- "ar-eg": "Arab (Egypt)",
- "ar-iq": "Arab (Iraq)",
- "ar-jo": "Arab (Jordan)",
- "ar-kw": "Arab (Kuwait)",
- "ar-lb": "Arab (Lebanon)",
- "ar-ly": "Arab (Libya)",
- "ar-ma": "Arab (Morocco)",
- "ar-om": "Arab (Oman)",
- "ar-qa": "Arab (Qatar)",
- "ar-sa": "Arab (Saudi Arabia)",
- "ar-sy": "Arab (Syria)",
- "ar-tn": "Arab (Tunisia)",
- "ar-ye": "Arab (Yemen)",
- "be": "Belorusz",
- "bg": "Bolgár",
- "ca": "Katalán",
- "cs": "Cseh",
- "da": "Dán",
- "de-at": "Német (Osztrák)",
- "de-ch": "Német (Svájci)",
- "de": "Német",
- "de-li": "Német (Lichtenstein)",
- "de-lu": "Német (Luxemburg)",
- "el": "Görög",
- "en-au": "Angol (Ausztrál)",
- "en-bz": "Angol (Belize)",
- "en-ca": "Angol (Kanada)",
- "en": "Angol",
- "en-gb": "Angol (Egyesült Királyság)",
- "en-ie": "Angol (Ír)",
- "en-jm": "Angol (Jamaika)",
- "en-nz": "Angol (Új-Zéland)",
- "en-tt": "Angol (Trinidad)",
- "en-us": "Angol (Egyesült Államok)",
- "en-za": "Angol (Dél-Afrika)",
- "es-ar": "Spanyol (Argentína)",
- "es-bo": "Spanyol (Bolívia)",
- "es-cl": "Spanyol (Chile)",
- "es-co": "Spanyol (Kolumbia)",
- "es-cr": "Spanyol (Costa Rica)",
- "es-do": "Spanyol (Dominikai Köztársaság)",
- "es-ec": "Spanyol (Ecuador)",
- "es-gt": "Spanyol (Guatemala)",
- "es-hn": "Spanyol (Honduras)",
- "es-mx": "Spanyol (Mexikó)",
- "es-ni": "Spanyol (Nicaragua)",
- "es-pa": "Spanyol (Panama)",
- "es-pe": "Spanyol (Peru)",
- "es-pr": "Spanyol (Puerto Rico)",
- "es-py": "Spanyol (Paraguay)",
- "es": "Spanyol (Spanyol)",
- "es-sv": "Spanyol (El Salvador)",
- "es-uy": "Spanyol (Uruguay)",
- "es-ve": "Spanyol (Venezuela)",
- "et": "Észt",
- "eu": "Baszk (Baszk)",
- "fa": "Perzsa",
- "fi": "Finn",
- "fo": "Feröer",
- "fr-be": "Francia (Belgium)",
- "fr-ca": "Francia (Kanada)",
- "fr-ch": "Francia (Svájc)",
- "fr": "Francia",
- "fr-lu": "Francia (Luxemburg)",
- "ga": "Ír",
- "gd": "Gall (Skót)",
- "he": "Héber",
- "hi": "Hindu",
- "hr": "Horvát",
- "hu": "Magyar",
- "id": "Indonéz",
- "is": "Izland",
- "it-ch": "Olasz (Svájc)",
- "it": "Olasz",
- "ja": "Japán",
- "ji": "Jiddis",
- "ko": "Korea",
- "lt": "Litván",
- "lv": "Lett",
- "mk": "Macedónia (FYROM)",
- "ms": "Maláj",
- "mt": "Málta",
- "nl-be": "Holland (Belgium)",
- "nl": "Holland",
- "no": "Norvég",
- "pl": "Lengyel",
- "pt-br": "Portugál (Brazil)",
- "pt": "Portugál",
- "ro-mo": "Román (Moldova)",
- "ro": "Román",
- "ru-mo": "Orosz (Moldova)",
- "ru": "Orosz",
- "sk": "Szlovák",
- "sl": "Szlovén",
- "sq": "Albán",
- "sr": "Szerb",
- "sv-fi": "Svéd (Finn)",
- "sv": "Svéd",
- "sx": "Sutu",
- "sz": "Sami (Lapp)",
- "th": "Thai",
- "tr": "Török",
- "ts": "Tsonga",
- "uk": "Ukrán",
- "ur": "Urdu",
- "ve": "Venda",
- "vi": "Vietnám",
- "xh": "Xhosa",
- "zh-cn": "Kína (PRC)",
- "zh-hk": "Kína (Hong Kong SAR)",
- "zh-sg": "Kína (Szingapúr)",
- "zh-tw": "Kína (Tajvan)",
- "zu": "Zulu",
"A registered account is required for this action": "Regisztrált fiókra van szükség ehhez a művelethez",
"a room": "egy szoba",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Elküldtük a szöveges üzenetet ide: +%(msisdn)s. Kérlek add meg az ellenőrző kódot ami benne van",
@@ -156,7 +36,7 @@
"Add email address": "E-mail cím megadása",
"Add phone number": "Telefonszám megadása",
"Admin": "Adminisztrátor",
- "Admin tools": "Admin. eszközök",
+ "Admin Tools": "Admin. eszközök",
"And %(count)s more...": "És még %(count)s...",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Hiányzó Média jogosultság, kattintson ide az igényléshez.",
@@ -173,7 +53,6 @@
"Always show message timestamps": "Üzenet időbélyeg folyamatos megjelenítése",
"Authentication": "Azonosítás",
"Alias (optional)": "Becenév (opcionális)",
- "all room members": "minden szoba tagság",
"Failed to change password. Is your password correct?": "Nem sikerült megváltoztatni a jelszót. Helyesen írtad be a jelszavadat?",
"Continue": "Folytatás",
"Create new room": "Új szoba létrehozása",
@@ -183,24 +62,18 @@
"Close": "Bezár",
"Room directory": "Szobák listája",
"Start chat": "Csevegés indítása",
- "Welcome page": "Üdvözlő oldal",
- "all room members, from the point they are invited": "minden résztvevő a szobában, amióta meg van hívva",
- "all room members, from the point they joined": "minden résztvevő a szobában, amióta csatlakozott",
"and": "és",
"%(items)s and %(remaining)s others": "%(items)s és még: %(remaining)s",
"%(items)s and one other": "%(items)s és még egy",
"%(items)s and %(lastItem)s": "%(items)s és %(lastItem)s",
- "and %(count)s others...": {
- "other": "és még: %(count)s ...",
- "one": "és még egy..."
- },
+ "and %(count)s others...|other": "és még: %(count)s ...",
+ "and %(count)s others...|one": "és még egy...",
"%(names)s and %(lastPerson)s are typing": "%(names)s és %(lastPerson)s írnak",
"%(names)s and one other are typing": "%(names)s és még valaki ír",
"%(names)s and %(count)s others are typing": "%(names)s és %(count)s ember ír",
"An email has been sent to": "Az e-mail ide lett küldve:",
"A new password must be entered.": "Új jelszót kell megadni.",
"%(senderName)s answered the call.": "%(senderName)s felvette a telefont.",
- "anyone": "bárki",
"An error has occurred.": "Hiba történt.",
"Anyone": "Bárki",
"Anyone who knows the room's link, apart from guests": "A vendégeken kívül bárki aki ismeri a szoba link-jét",
@@ -219,8 +92,8 @@
"Bug Report": "Hiba jelentés",
"Bulk Options": "Tömeges beállítások",
"Call Timeout": "Hívás időtúllépés",
- "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nem lehet kapcsolódni az egyedi szerverhez - ellenőrizd a kapcsolatot, biztosítsd, hogy a egyedi szerver tanúsítványa hiteles legyen, és a böngésző kiterjesztések ne blokkolják a kéréseket.",
- "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts .": "Nem lehet csatlakozni az egyedi szerverhez HTTP-n keresztül ha HTTPS van a böngésző címsorában. Vagy használj HTTPS-t vagy engedélyezd a nem biztonságos script-et .",
+ "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nem lehet kapcsolódni a saját szerverhez - ellenőrizd a kapcsolatot, biztosítsd, hogy a saját szerver tanúsítványa hiteles legyen, és a böngésző kiterjesztések ne blokkolják a kéréseket.",
+ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts .": "Nem lehet csatlakozni a saját szerverhez HTTP-n keresztül ha HTTPS van a böngésző címsorában. Vagy használj HTTPS-t vagy engedélyezd a nem biztonságos script-et .",
"Can't load user settings": "A felhasználói beállítások nem tölthetők be",
"Change Password": "Jelszó megváltoztatása",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s megváltoztatta a nevét erről: %(oldDisplayName)s erre: %(displayName)s.",
@@ -231,7 +104,6 @@
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s megváltoztatta a témát erre \"%(topic)s\".",
"Changes to who can read history will only apply to future messages in this room": "Változtatások a napló olvasási jogosultságon csak a szoba új üzeneteire fog vonatkozni",
"Changes your display nickname": "Becenév megváltoztatása",
- "changing room on a RoomView is not supported": "Szoba nézetben nem lehet szobát váltani",
"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.": "Jelszó megváltoztatása jelenleg alaphelyzetbe állítja a titkosításnál használt kulcsokat minden készüléken, ezzel a régi titkosított üzenetek olvashatatlanok lesznek hacsak először nem mented ki a kulcsokat és újra betöltöd. A jövőben ezen javítunk.",
"Claimed Ed25519 fingerprint key": "Igényelt Ed25519 ujjlenyomat kulcs",
"Clear Cache and Reload": "Gyorsítótár törlése és újratöltés",
@@ -252,8 +124,8 @@
"Confirm password": "Jelszó megerősítése",
"Confirm your new password": "Új jelszó megerősítése",
"Could not connect to the integration server": "Az integrációs szerverhez nem lehet kapcsolódni",
- "%(count)s new messages.one": "%(count)s új üzenet",
- "%(count)s new messages.other": "%(count)s új üzenet",
+ "%(count)s new messages|one": "%(count)s új üzenet",
+ "%(count)s new messages|other": "%(count)s új üzenet",
"Create a new chat or reuse an existing one": "Új csevegés indítása vagy egy meglévő használata",
"Create an account": "Fiók készítése",
"Create Room": "Szoba készítése",
@@ -282,7 +154,6 @@
"Disable Notifications": "Értesítések tiltása",
"disabled": "letiltva",
"Disable inline URL previews by default": "Beágyazott URL előnézet alapértelmezetten tiltva",
- "Disable markdown formatting": "Markdown formázás tiltva",
"Disinvite": "Meghívás visszavonása",
"Display name": "Megjelenített név",
"Displays action": "Tevékenységek megjelenítése",
@@ -311,7 +182,7 @@
"Enter Code": "Kód megadása",
"Enter passphrase": "Jelmondat megadása",
"Error decrypting attachment": "Csatolmány visszafejtése sikertelen",
- "Error: Problem communicating with the given homeserver.": "Hiba: Probléma van az egyedi szerverrel való kommunikációval.",
+ "Error: Problem communicating with the given homeserver.": "Hiba: Probléma van az saját szerverrel való kommunikációval.",
"Event information": "Esemény információ",
"Existing Call": "Hívás folyamatban",
"Export": "Mentés",
@@ -351,11 +222,7 @@
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "A biztonság érdekében a kilépéskor a ponttól pontig való (E2E) titkosításhoz szükséges kulcsok törlésre kerülnek a böngészőből. Ha a régi üzeneteket továbbra is el szeretnéd olvasni, kérlek mentsed ki a szobákhoz tartozó kulcsot.",
"Found a bug?": "Hibát találtál?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s : %(fromPowerLevel)s -> %(toPowerLevel)s",
- "Guest access is disabled on this Home Server.": "Vendég belépés tiltva van az Otthoni szerveren.",
- "Guests can't set avatars. Please register.": "A vendégek nem tudnak avatar képet beállítani. Kérlek regisztrálj.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Vendégek nem készíthetnek szobákat. Kérlek regisztrálj, hogy szobát tudják nyitni és el tudj kezdeni csevegni.",
- "Guest users can't upload files. Please register to upload.": "Vendégek nem tölthetnek fel fájlokat. A feltöltéshez kérlek regisztrálj.",
- "Guests can't use labs features. Please register.": "Vendégek nem használhatnak labor funkciókat. Kérlek regisztrálj.",
+ "Guest access is disabled on this Home Server.": "Vendég belépés tiltva van a Saját szerveren.",
"Guests cannot join this room even if explicitly invited.": "Vendégek akkor sem csatlakozhatnak ehhez a szobához ha külön meghívók kaptak.",
"had": "van",
"Hangup": "Megszakít",
@@ -363,7 +230,7 @@
"Hide Text Formatting Toolbar": "Szövegformázási menü elrejtése",
"Historical": "Archív",
"Home": "Kezdőlap",
- "Homeserver is": "Egyedi szerver:",
+ "Homeserver is": "Saját szerver:",
"Identity Server is": "Azonosítási szerver:",
"I have verified my email address": "Ellenőriztem az e-mail címemet",
"Import": "Betöltés",
@@ -404,13 +271,16 @@
"left": "kilépett",
"%(targetName)s left the room.": "%(targetName)s elhagyta a szobát.",
"Level:": "Szint:",
- "List this room in %(domain)s's room directory?": "%(domain)s szobát feltüntessük a szobák listájában?",
"Local addresses for this room:": "A szoba helyi címe:",
"Logged in as:": "Bejelentkezve mint:",
"Login as guest": "Belépés vendégként",
"Logout": "Kilép",
"Low priority": "Alacsony prioritás",
- "%(senderName)s made future room history visible to": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik:",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik minden résztvevő a szobában, amióta meg van hívva.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik minden résztvevő a szobában, amióta csatlakozott.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik minden szoba tagság.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik bárki.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik ismeretlen (%(visibility)s).",
"Manage Integrations": "Integrációk kezelése",
"Markdown is disabled": "Markdown kikapcsolva",
"Markdown is enabled": "Markdown engedélyezett",
@@ -429,7 +299,6 @@
"Never send encrypted messages to unverified devices in this room": "Soha ne küldj titkosított üzenetet ebből a szobából ellenőrizetlen eszközre",
"Never send encrypted messages to unverified devices in this room from this device": "Soha ne küldj titkosított üzenetet ebből a szobából ellenőrizetlen eszközre erről az eszközről",
"New address (e.g. #foo:%(localDomain)s)": "Új cím (e.g. #foo:%(localDomain)s)",
- "New Composer & Autocomplete": "Új szerkesztő és automatikus kiegészítés",
"New password": "Új jelszó",
"New passwords don't match": "Az új jelszavak nem egyeznek",
"New passwords must match each other.": "Az új jelszavaknak meg kell egyezniük egymással.",
@@ -446,7 +315,7 @@
"No users have specific privileges in this room": "Egy felhasználónak sincsenek specifikus jogosultságai ebben a szobában",
"olm version:": "olm verzió:",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Ha egyszer bekapcsolod a titkosítást a szobába utána nem lehet kikapcsolni (egyenlőre)",
- "Once you've followed the link it contains, click below": "Miután a linket követted, kattints alulra",
+ "Once you've followed the link it contains, click below": "Miután a linket követted, kattints alulra",
"Only people who have been invited": "Csak akiket meghívtak",
"Otherwise, click here to send a bug report.": "Különben hiba jelentés küldéséhez kattints ide .",
"Password": "Jelszó",
@@ -458,7 +327,6 @@
"%(senderName)s placed a %(callType)s call.": "%(senderName)s %(callType)s hívást kezdeményezett.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Ellenőrizd az e-mail-edet és kattints a benne lévő linkre. Ha ez megvan, kattints a folytatásra.",
"Power level must be positive integer.": "A szintnek pozitív egésznek kell lennie.",
- "Press": "Nyomd meg",
"Private Chat": "Privát csevegés",
"Privileged Users": "Privilegizált felhasználók",
"Profile": "Profil",
@@ -498,7 +366,6 @@
"Scroll to unread messages": "Olvasatlan üzenetekhez görget",
"Search failed": "Keresés sikertelen",
"Searches DuckDuckGo for results": "Keresés DuckDuckGo-val",
- "Searching known users": "Ismert felhasználók keresése",
"Seen by %(userName)s at %(dateTime)s": "%(userName)s %(dateTime)s időpontban látta",
"Send a message (unencrypted)": "Üzenet küldése (titkosítás nélkül)",
"Send an encrypted message": "Titkosított üzenet küldése",
@@ -531,32 +398,29 @@
"since they were invited": "onnantól, hogy meg lett hívva",
"Some of your messages have not been sent.": "Néhány üzeneted nem lett elküldve.",
"Someone": "Valaki",
- "Sorry, this homeserver is using a login which is not recognised ": "Bocs, ez az egyedi szerver olyan beléptetést használ ami nem ismert ",
+ "Sorry, this homeserver is using a login which is not recognised ": "Bocs, ez a saját szerver olyan beléptetést használ ami nem ismert ",
"Start a chat": "Csevegés indítása",
"Start authentication": "Azonosítás indítása",
"Start Chat": "Csevegés indítása",
"Submit": "Elküld",
"Success": "Sikeres",
- "tag as %(tagName)s": "címke beállítása: %(tagName)s",
"tag direct chat": "megjelölés közvetlen csevegésnek",
"Tagged as: ": "Címkék: ",
"The default role for new room members is": "Az alapértelmezett szerep új tagoknak:",
"The main address for this room is": "A szoba elsődleges címe:",
"The phone number entered looks invalid": "A megadott telefonszám érvénytelennek tűnik",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Az általad megadott aláíró kulcs megegyezik %(userId)s felhasználótól kapott kulccsal amit %(deviceId)s eszközhöz használ. Az eszköz ellenőrzöttnek jelölve.",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "Ezt nem teheti vendég felhasználó. Kérlek regisztrálj, hogy megtehesd.",
"This email address is already in use": "Ez az e-mail cím már használatban van",
"This email address was not found": "Az e-mail cím nem található",
"%(actionVerb)s this person?": "Ezt a felhasználót %(actionVerb)s?",
"The email address linked to your account must be entered.": "A fiókodhoz kötött e-mail címet add meg.",
"Press to start a chat with someone": "Nyomd meg a gombot ha szeretnél csevegni valakivel",
"Privacy warning": "Magánéleti figyelmeztetés",
- "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' fájl túllépte az Otthoni szerverben beállított feltöltési méret határt",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' fájl túllépte a Saját szerverben beállított feltöltési méret határt",
"The file '%(fileName)s' failed to upload": "'%(fileName)s' fájl feltöltése sikertelen",
"The remote side failed to pick up": "A hívott fél nem vette fel",
- "This Home Server does not support login using email address.": "Az Otthoni szerver nem támogatja a belépést e-mail címmel.",
+ "This Home Server does not support login using email address.": "A Saját szerver nem támogatja a belépést e-mail címmel.",
"This invitation was sent to an email address which is not associated with this account:": "A meghívó olyan e-mail címre lett küldve ami nincs összekötve ezzel a fiókkal:",
- "There was a problem logging in.": "Hiba történt a bejelentkezésnél.",
"This room has no local addresses": "Ennek a szobának nincs helyi címe",
"This room is not recognised.": "Ez a szoba nem ismerős.",
"These are experimental features that may break in unexpected ways": "Ezek kísérleti funkciók amik kiszámíthatatlanok lehetnek",
@@ -582,7 +446,6 @@
"To send events of type": "Az alábbi típusú üzenetek küldéséhez",
"To send messages": "Üzenetek küldéséhez",
"to start a chat with someone": "csevegés indításához valakivel",
- "to tag as %(tagName)s": "megjelölni mint: %(tagName)s",
"to tag direct chat": "megjelölni közvetlen csevegésnek",
"To use it, just wait for autocomplete results to load and tab through them.": "A használatához csak várd meg az automatikus kiegészítéshez a találatok betöltését és TAB-bal választhatsz közülük.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Megpróbáltam betölteni a szoba megadott időpontjának megfelelő adatait, de nincs jogod a kérdéses üzenetek megjelenítéséhez.",
@@ -592,7 +455,6 @@
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s bekapcsolta a titkosítást ponttól pontig (algoritmus %(algorithm)s).",
"Unable to add email address": "Az e-mail címet nem sikerült hozzáadni",
"Unable to remove contact information": "A névjegy információkat nem sikerült törölni",
- "Unable to restore previous session": "Az előző kapcsolat visszaállítása sikertelen",
"Unable to verify email address.": "Az e-mail cím ellenőrzése sikertelen.",
"Unban": "Kitiltás visszavonása",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s visszaengedte %(targetName)s felhasználót.",
@@ -607,15 +469,14 @@
"unknown device": "ismeretlen eszköz",
"Unknown room %(roomId)s": "Ismeretlen szoba %(roomId)s",
"Unknown (user, device) pair:": "Ismeretlen (felhasználó, eszköz) pár:",
- "unknown": "ismeretlen",
"Unmute": "Némítás kikapcsolása",
"Unnamed Room": "Névtelen szoba",
"Unrecognised command:": "Ismeretlen parancs:",
"Unrecognised room alias:": "Ismeretlen szoba becenév:",
"Unverified": "Nem ellenőrzött",
- "Uploading %(filename)s and %(count)s others.zero": "%(filename)s feltöltése",
- "Uploading %(filename)s and %(count)s others.one": "%(filename)s és még %(count)s db másik feltöltése",
- "Uploading %(filename)s and %(count)s others.other": "%(filename)s és még %(count)s db másik feltöltése",
+ "Uploading %(filename)s and %(count)s others|zero": "%(filename)s feltöltése",
+ "Uploading %(filename)s and %(count)s others|one": "%(filename)s és még %(count)s db másik feltöltése",
+ "Uploading %(filename)s and %(count)s others|other": "%(filename)s és még %(count)s db másik feltöltése",
"uploaded a file": "fájl feltöltése",
"Upload avatar": "Avatar kép feltöltése",
"Upload Failed": "Feltöltés sikertelen",
@@ -668,7 +529,6 @@
"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": "Kijelentkeztél minden eszközről így nem fogsz \"push\" értesítéseket kapni. Az értesítések engedélyezéséhez jelentkezz vissza mindegyik eszközön",
"You have disabled URL previews by default.": "Az URL előnézet alapból tiltva van.",
"You have enabled URL previews by default.": "Az URL előnézet alapból engedélyezve van.",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "Érvénytelen kapcsolatot adtál meg. Próbáld meg a Matrix azonosítóját vagy e-mail címét használni.",
"You have no visible notifications": "Nincsenek látható értesítéseid",
"You may wish to login with a different account, or add this email to this account.": "Lehet, hogy más fiókba szeretnél belépni vagy ezt az e-mail címet szeretnéd ehhez a fiókhoz kötni.",
"you must be a": "szükséges szerep:",
@@ -676,7 +536,7 @@
"You need to be able to invite users to do that.": "Hogy ezt csinálhasd meg kell tudnod hívni felhasználókat.",
"You need to be logged in.": "Be kell jelentkezz.",
"You need to enter a user name.": "Be kell írnod a felhasználói nevet.",
- "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ez az e-mail cím, úgy néz ki, nincs összekötve a Matrix azonosítóval ezen az egyedi szerveren.",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ez az e-mail cím, úgy néz ki, nincs összekötve a Matrix azonosítóval ezen a saját szerveren.",
"Your password has been reset": "A jelszavad visszaállítottuk",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "A jelszavadat sikeresen megváltoztattuk. Nem kapsz \"push\" értesítéseket amíg a többi eszközön vissza nem jelentkezel",
"to demote": "a hozzáférési szint csökkentéséhez",
@@ -685,7 +545,7 @@
"You seem to be uploading files, are you sure you want to quit?": "Úgy tűnik fájlokat töltesz fel, biztosan kilépsz?",
"You should not yet trust it to secure data": "Még ne bízz meg a titkosításban",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Nem leszel képes visszavonni ezt a változtatást mivel a felhasználót ugyanarra a szintre emeled amin te vagy.",
- "Your home server does not support device management.": "Az Otthoni szervered nem támogatja az eszközök kezelését.",
+ "Your home server does not support device management.": "A Saját szervered nem támogatja az eszközök kezelését.",
"Sun": "Vas",
"Mon": "Hé",
"Tue": "K",
@@ -709,7 +569,6 @@
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Set a display name:": "Megjelenítési név beállítása:",
- "Set a Display Name": "Megjelenítési név beállítása",
"Upload an avatar:": "Avatar kép feltöltése:",
"This server does not support authentication with a phone number.": "Ez a szerver nem támogatja a telefonszámmal való azonosítást.",
"Missing password.": "Hiányzó jelszó.",
@@ -730,10 +589,9 @@
"Room": "Szoba",
"Connectivity to the server has been lost.": "A szerverrel a kapcsolat megszakadt.",
"Sent messages will be stored until your connection has returned.": "Az elküldött üzenetek addig lesznek tárolva amíg a kapcsolatod újra elérhető lesz.",
- "Auto-complete": "Automatikus kiegészítés",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Most újraküldöd mind vagy eldobod mind . Újraküldésre vagy eldobásra egyenként is kiválaszthatod az üzeneteket.",
- "(~%(count)s results).one": "(~%(count)s db eredmény)",
- "(~%(count)s results).other": "(~%(count)s db eredmény)",
+ "(~%(count)s results)|one": "(~%(count)s db eredmény)",
+ "(~%(count)s results)|other": "(~%(count)s db eredmény)",
"or": "vagy",
"Active call": "Folyamatban lévő hívás",
"bold": "félkövér",
@@ -744,7 +602,7 @@
"quote": "idézet",
"bullet": "lista",
"numbullet": "számozott lista",
- "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s %(repeats)s alkalommal léptek be",
+ "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s%(repeats)s alkalommal léptek be",
"%(oneUser)sjoined %(repeats)s times": "%(oneUser)s %(repeats)s alkalommal lépett be",
"%(severalUsers)sjoined": "%(severalUsers)s csatlakozott",
"%(oneUser)sjoined": "%(oneUser)s csatlakozott",
@@ -810,7 +668,6 @@
"You must join the room to see its files": "Ahhoz hogy lásd a fájlokat be kell lépned a szobába",
"Reject all %(invitedRooms)s invites": "Minden %(invitedRooms)s meghívó elutasítása",
"Start new chat": "Új csevegés indítása",
- "Guest users can't invite users. Please register.": "Vendég felhasználók nem tudnak másokat meghívni. Kérlek regisztrálj.",
"Failed to invite": "Meghívás sikertelen",
"Failed to invite user": "Felhasználó meghívása sikertelen",
"Failed to invite the following users to the %(roomName)s room:": "Az alábbi felhasználókat nem sikerült meghívni a(z) %(roomName)s szobába:",
@@ -837,7 +694,7 @@
"Verify...": "Ellenőrzés...",
"ex. @bob:example.com": "pl.: @bob:example.com",
"Add User": "Felhasználó hozzáadás",
- "This Home Server would like to make sure you are not a robot": "Az Otthoni szerver meg szeretne győződni arról, hogy nem vagy robot",
+ "This Home Server would like to make sure you are not a robot": "A Saját szerver meg szeretne győződni arról, hogy nem vagy robot",
"Sign in with CAS": "Belépés CAS-sal",
"Please check your email to continue registration.": "Ellenőrizd az e-mailedet a regisztráció folytatásához.",
"Token incorrect": "Helytelen token",
@@ -846,7 +703,7 @@
"You are registering with %(SelectedTeamName)s": "%(SelectedTeamName)s névvel regisztrálsz",
"Default server": "Alapértelmezett szerver",
"Custom server": "Egyedi szerver",
- "Home server URL": "Otthoni szerver URL",
+ "Home server URL": "Saját szerver URL",
"Identity server URL": "Azonosítási szerver URL",
"What does this mean?": "Ez mit jelent?",
"Error decrypting audio": "Hiba a hang visszafejtésénél",
@@ -896,16 +753,15 @@
"If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Ha megegyezik, nyomd meg az megerősítő gombot alul. Ha nem akkor valaki más használja az eszközt és inkább a Feketelista gombot szeretnéd használni.",
"We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Az előző kapcsolat visszaállításánál hibára akadtunk. Ha folytatod újra be kell jelentkezned és a titkosított csevegések olvashatatlanok lesznek.",
"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.": "Ha egy újabb Riot verziót használtál valószínűleg ez kapcsolat nem lesz kompatibilis vele. Zárd be az ablakot és térj vissza az újabb verzióhoz.",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "A megjelenítési neved az ahogy a többiek látják amikor a szobában csevegsz. Mit szeretnél mi legyen?",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Jelenleg fekete listára teszel minden ismeretlen eszközt. Ha üzenetet szeretnél küldeni ezekre az eszközökre először ellenőrizned kell őket.",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Azt javasoljuk, hogy menj végig ellenőrző folyamaton minden eszköznél, hogy meg megerősítsd minden eszköz a jogos tulajdonosához tartozik, de újraküldheted az üzenetet ellenőrzés nélkül, ha úgy szeretnéd.",
- "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Használhatod az Otthoni szerver opciót hogy más Matrix szerverre csatlakozz Otthoni szerver URL megadásával.",
- "This allows you to use this app with an existing Matrix account on a different home server.": "Ezzel használhatod ezt az alkalmazást a meglévő Matrix fiókoddal és másik Otthoni szerveren.",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Használhatod az Otthoni szerver opciót, hogy más Matrix szerverre csatlakozz Saját szerver URL megadásával.",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "Ezzel használhatod ezt az alkalmazást a meglévő Matrix fiókoddal és másik Saját szerveren.",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Beállíthatsz egy egyedi azonosító szervert is de ez tulajdonképpen meggátolja az együttműködést e-mail címmel azonosított felhasználókkal.",
"If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Ha nem állítasz be e-mail címet nem fogod tudni a jelszavadat alaphelyzetbe állítani. Biztos vagy benne?",
"You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Azonosítás céljából egy harmadik félhez leszel irányítva (%(integrationsUrl)s). Folytatod?",
"URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL előnézet alapból %(globalDisableUrlPreview)s van a szoba résztvevői számára.",
- "This will be your account name on the homeserver, or you can pick a different server .": "Ez lesz a felhasználói neved az egyedi szerveren, vagy választhatsz egy másik szervert .",
+ "This will be your account name on the homeserver, or you can pick a different server .": "Ez lesz a felhasználói neved a saját szerveren, vagy választhatsz egy másik szervert .",
"Disable Peer-to-Peer for 1:1 calls": "Közvetlen kapcsolat tiltása az 1:1 hívásoknál",
"To return to your account in future you need to set a password": "Ahhoz hogy később visszatérj a fiókodba be kell állítanod egy jelszót",
"Skip": "Kihagy",
@@ -916,5 +772,63 @@
"Your unverified device '%(displayName)s' is requesting encryption keys.": "Az ellenőrizetlen eszközöd '%(displayName)s' titkosítási kulcsokat kér.",
"Encryption key request": "Titkosítási kulcs kérés",
"Updates": "Frissítések",
- "Check for update": "Frissítések keresése"
+ "Check for update": "Frissítések keresése",
+ "Add a widget": "Kisalkalmazás hozzáadása",
+ "Allow": "Engedélyez",
+ "Changes colour scheme of current room": "Az aktuális szoba színének megváltoztatása",
+ "Delete widget": "Kisalkalmazás törlése",
+ "Define the power level of a user": "A felhasználó szintjének meghatározása",
+ "Edit": "Szerkeszt",
+ "Enable automatic language detection for syntax highlighting": "Nyelv automatikus felismerése szintaxis kiemeléshez",
+ "Hide Apps": "Alkalmazások elrejtése",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Belép/kilép üzenetek elrejtése (meghívók, kirúgások, kitiltások nem érintettek)",
+ "Hide avatar and display name changes": "Profilkép és megjelenítési név változás üzenetek elrejtése",
+ "Matrix Apps": "Mátrix alkalmazások",
+ "AM": "de",
+ "PM": "du",
+ "Revoke widget access": "Kisalkalmazás hozzáférésének visszavonása",
+ "Sets the room topic": "Szoba téma beállítás",
+ "Show Apps": "Alkalmazások megmutatása",
+ "To get started, please pick a username!": "Az induláshoz válassz egy felhasználói nevet!",
+ "Unable to create widget.": "Nem lehet kisalkalmazást létrehozni.",
+ "Unbans user with given id": "Visszaengedi a megadott azonosítójú felhasználót",
+ "You are not in this room.": "Nem vagy ebben a szobában.",
+ "You do not have permission to do that in this room.": "Nincs jogod ezt tenni ebben a szobában.",
+ "Verifies a user, device, and pubkey tuple": "A felhasználó, eszköz és publikus kulcs hármas ellenőrzése",
+ "Autocomplete Delay (ms):": "Várakozás automatikus kiegészítés előtt (ms):",
+ "This Home server does not support groups": "Ez a saját szerver nem támogatja a csoportokat",
+ "Loading device info...": "Eszköz információk betöltése...",
+ "Groups": "Csoportok",
+ "Create a new group": "Új csoport létrehozása",
+ "Create Group": "Csoport létrehozása",
+ "Group Name": "Csoport neve",
+ "Example": "Példa",
+ "Create": "Létrehoz",
+ "Group ID": "Csoport azonosító",
+ "+example:%(domain)s": "+példa:%(domain)s",
+ "Group IDs must be of the form +localpart:%(domain)s": "A csoport azonosítónak az alábbi formában kell lennie: +helyirész:%(domain)s",
+ "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Egyenlőre csoportokat csak a saját szerveren lehet létrehozni: használd a csoport azonosítót a %(domain)s végződéssel",
+ "Room creation failed": "Szoba létrehozás sikertelen",
+ "You are a member of these groups:": "Ezeknek a csoportoknak vagy a tagja:",
+ "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Hozz létre csoportot a közösség meghatározásához! Jelölj ki szobákat és saját kezdőoldalt amivel meghatározhatod a territóriumodat a Matrix univerzumában.",
+ "Join an existing group": "Csatlakozz meglévő csoporthoz",
+ "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org .": "Ahhoz, hogy meglévő csoporthoz csatlakozhass tudnod kell a csoport azonosítóját ami valahogy így nézhet ki: +example:matrix.org .",
+ "Featured Rooms:": "Kiemelt szobák:",
+ "Error whilst fetching joined groups": "Hiba a csatlakozott csoportok betöltésénél",
+ "Featured Users:": "Kiemelt felhasználók:",
+ "Edit Group": "Csoport szerkesztése",
+ "Automatically replace plain text Emoji": "Egyszerű szöveg automatikus cseréje Emoji-ra",
+ "Failed to upload image": "Kép feltöltése sikertelen",
+ "Failed to update group": "Csoport frissítése sikertelen",
+ "Hide avatars in user and room mentions": "Profilképek elrejtése felhasználó és szoba említésekben",
+ "Cannot add any more widgets": "Nem lehet több kisalkalmazást hozzáadni",
+ "Do you want to load widget from URL:": "Betöltöd a kisalkalmazást erről az URL-ről:",
+ "Integrations Error": "Integrációs hiba",
+ "Publish this room to the public in %(domain)s's room directory?": "Publikálod a szobát a(z) %(domain)s szoba listájába?",
+ "NOTE: Apps are not end-to-end encrypted": "Megjegyzés: Az alkalmazások nem végponttól végpontig titkosítottak",
+ "The maximum permitted number of widgets have already been added to this room.": "A maximálisan megengedett számú kisalkalmazás már hozzá van adva a szobához.",
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s kisalkalmazást %(senderName)s hozzáadta",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s kisalkalmazást %(senderName)s eltávolította",
+ "Robot check is currently unavailable on desktop - please use a web browser ": "Robot ellenőrzés az asztali verzióban nem érhető el - használd a web böngészőt ",
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s kisalkalmazást %(senderName)s módosította"
}
diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json
index a4edd6892d..dc057c2a95 100644
--- a/src/i18n/strings/id.json
+++ b/src/i18n/strings/id.json
@@ -11,7 +11,6 @@
"Camera": "Kamera",
"Alias (optional)": "Alias (pilihan)",
"and": "dan",
- "all room members": "Seluruh peserta ruang",
"Are you sure?": "Anda yakin?",
"An error has occurred.": "Telah terjadi kesalahan.",
"Are you sure you want to reject the invitation?": "Anda yakin menolak undangannya?",
@@ -45,7 +44,6 @@
"Decline": "Tolak",
"Default": "Bawaan",
"Device ID:": "ID Perangkat:",
- "Direct Chat": "Obrolan Langsung",
"Direct chats": "Obrolan langsung",
"Display name": "Nama yang ditampilkan",
"Download %(text)s": "Unduh %(text)s",
@@ -93,7 +91,6 @@
"People": "Orang",
"Passwords can't be empty": "Password tidak boleh kosong",
"Permissions": "Izin",
- "Please Register": "Mohon registrasi",
"Private Chat": "Obrolan Privat",
"Profile": "Profil",
"Public Chat": "Obrolan Publik",
@@ -134,7 +131,6 @@
"unencrypted": "tidak terenkripsi",
"Unknown command": "Perintah tidak diketahui",
"unknown error code": "kode kesalahan tidak diketahui",
- "unknown": "tidak diketahui",
"unknown device": "perangkat tidak diketahui",
"User ID": "ID Pengguna",
"User name": "Nama pengguna",
@@ -174,7 +170,7 @@
"Access Token:": "Token Akses:",
"Active call (%(roomName)s)": "Panggilan aktif (%(roomName)s)",
"Admin": "Admin",
- "Admin tools": "Alat admin",
+ "Admin Tools": "Alat admin",
"And %(count)s more...": "Dan %(count)s lagi...",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Tidak ada Izin Media, klik disini untuk meminta.",
@@ -214,7 +210,6 @@
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s telah mengubah nama ruang menjadi %(roomName)s.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s telah mengubah topik menjadi \"%(topic)s\".",
"Changes to who can read history will only apply to future messages in this room": "Pengubahan siapa yang dapat membaca sejarah akan berlaku untuk pesan selanjutnya di ruang ini",
- "changing room on a RoomView is not supported": "tidak dapat mengubah ruang di RoomView",
"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.": "Mengubah password saat ini akan mengatur ulang semua kunci enkripsi end-to-end di semua perangkat, menyebabkan sejarah obrolan yang terenkripsi menjadi tidak dapat dibaca, kecuali sebelumnya Anda ekspor dahulu kunci ruang lalu kemudian impor ulang setelahnya. Ke depan hal ini akan diperbaiki.",
"Click here to join the discussion!": "Klik di sini untuk gabung diskusi!",
"click to reveal": "Klik untuk menampilkan",
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index 71b2f145a6..cd690d2e88 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -3,7 +3,6 @@
"Mute": "Silenzia",
"Notifications": "Notifiche",
"Operation failed": "Operazione fallita",
- "Please Register": "Per favore registrati",
"powered by Matrix": "offerto da Matrix",
"Remove": "Rimuovi",
"Search": "Cerca",
@@ -15,15 +14,9 @@
"Close": "Chiudi",
"Create new room": "Crea una nuova stanza",
"Custom Server Options": "Opzioni Server Personalizzate",
- "Direct Chat": "Chat Diretta",
"Dismiss": "Scarta",
"Error": "Errore",
- "Failed to join the room": "Impossibile entrare nella stanza",
"Favourite": "Preferito",
- "ar-ae": "Arabo (U.A.E.)",
- "ar-bh": "Arabo (Bahrain)",
- "ar-dz": "Arabo (Algeria)",
- "ar-eg": "Arabo (Egitto)",
"Sunday": "Domenica",
"Monday": "Lunedì",
"Tuesday": "Martedì",
@@ -32,121 +25,9 @@
"Friday": "Venerdì",
"Saturday": "Sabato",
"OK": "OK",
- "Welcome page": "Pagina di benvenuto",
"Drop here %(toAction)s": "Rilascia qui %(toAction)s",
"Failed to change password. Is your password correct?": "Modifica password fallita. La tua password è corretta?",
"Continue": "Continua",
- "ar-iq": "Arabo (Iraq)",
- "ar-jo": "Arabo (Giordania)",
- "ar-kw": "Arabo (Kuwait)",
- "ar-lb": "Arabo (Libano)",
- "ar-ly": "Arabo (Libia)",
- "ar-ma": "Arabo (Marocco)",
- "ar-om": "Arabo (Oman)",
- "ar-qa": "Arabo (Qatar)",
- "ar-sa": "Arabo (Arabia Saudita)",
- "ar-sy": "Arabo (Siria)",
- "ar-tn": "Arabo (Tunisia)",
- "ar-ye": "Arabo (Yemen)",
- "be": "Bielorusso",
- "bg": "Bulgaro",
- "ca": "Catalano",
- "da": "Danese",
- "de-at": "Tedesco (Austria)",
- "de-ch": "Tedesco (Svizzera)",
- "de": "Tedesco",
- "de-li": "Tedesco (Liechtenstein)",
- "de-lu": "Tedesco (Lussemburgo)",
- "el": "Greco",
- "en-au": "Inglese (Australia)",
- "en-bz": "Inglese (Belize)",
- "en-ca": "Inglese (Canada)",
- "en": "Inglese",
- "en-gb": "Inglese (Regno Unito)",
- "en-ie": "Inglese (Irlanda)",
- "en-jm": "Inglese (Jamaica)",
- "en-nz": "Inglese (Nuova Zelanda)",
- "en-tt": "Inglese (Trinidad)",
- "en-us": "Inglese (Stati Uniti)",
- "en-za": "Inglese (Sud Africa)",
- "es-ar": "Spagnolo (Argentina)",
- "es-bo": "Spagnolo (Bolivia)",
- "es-cl": "Spagnolo (Cile)",
- "es-co": "Spagnolo (Colombia)",
- "es-cr": "Spagnolo (Costa Rica)",
- "es-do": "Spagnolo (Repubblica Dominicana)",
- "es-ec": "Spagnolo (Ecuador)",
- "es-gt": "Spagnolo (Guatemala)",
- "es-hn": "Spagnolo (Honduras)",
- "es-mx": "Spagnolo (Messico)",
- "es-ni": "Spagnolo (Nicaragua)",
- "es-pa": "Spagnolo (Panama)",
- "es-pe": "Spagnolo (Perù)",
- "es-pr": "Spagnolo (Porto Rico)",
- "es-py": "Spagnolo (Paraguay)",
- "es": "Spagnolo (Spagna)",
- "es-sv": "Spagnolo (El Salvador)",
- "es-uy": "Spagnolo (Uruguay)",
- "es-ve": "Spagnolo (Venezuela)",
- "et": "Estone",
- "eu": "Basco (Basco)",
- "fa": "Farsi",
- "fi": "Finlandese",
- "fo": "Faeroese",
- "fr-be": "Francese (Belgio)",
- "fr-ca": "Francese (Canada)",
- "fr-ch": "Francese (Svizzera)",
- "fr": "Francese",
- "fr-lu": "Francese (Lussemburgo)",
- "ga": "Irlandese",
- "gd": "Gaelico (Scozia)",
- "he": "Ebraico",
- "hi": "Hindi",
- "hr": "Croato",
- "hu": "Ungherese",
- "id": "Indonesiano",
- "is": "Islandese",
- "it-ch": "Italiano (Svizzera)",
- "it": "Italiano",
- "ja": "Giapponese",
- "ji": "Yiddish",
- "ko": "Coreano",
- "lt": "Lituano",
- "lv": "Lettone",
- "mk": "Macedone (FYROM)",
- "ms": "Malese",
- "mt": "Maltese",
- "nl-be": "Olandese (Belgio)",
- "nl": "Olandese",
- "no": "Norvegese",
- "pl": "Polacco",
- "pt-br": "Portoghese Brasiliano",
- "pt": "Portoghese",
- "rm": "Romancio",
- "ro-mo": "Rumeno (Repubblica di Moldavia)",
- "ro": "Rumeno",
- "ru-mo": "Russo (Repubblica di Moldavia)",
- "ru": "Russo",
- "sk": "Slovacco",
- "sl": "Sloveno",
- "sq": "Albanese",
- "sr": "Serbo",
- "sv-fi": "Svedese (Finlandia)",
- "sv": "Svedese",
- "sx": "Sutu",
- "th": "Tailandese",
- "tn": "Tswana",
- "tr": "Turco",
- "ts": "Tsonga",
- "uk": "Ucraino",
- "ur": "Urdu",
- "vi": "Vietnamese",
- "xh": "Xhosa",
- "zh-cn": "Cinese (PRC)",
- "zh-hk": "Cinese (Honk Kong SAR)",
- "zh-sg": "Cinese (Singapore)",
- "zh-tw": "Cinese (Taiwan)",
- "zu": "Zulu",
"a room": "una stanza",
"%(targetName)s accepted an invitation.": "%(targetName)s ha accettato un invito.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s ha accettato l'invito per %(displayName)s.",
@@ -157,7 +38,7 @@
"Add email address": "Aggiungi indirizzo email",
"Add phone number": "Aggiungi numero di telefono",
"Admin": "Amministratore",
- "Admin tools": "Strumenti di amministrazione",
+ "Admin Tools": "Strumenti di amministrazione",
"VoIP": "VoIP",
"No Microphones detected": "Nessun Microfono rilevato",
"No Webcams detected": "Nessuna Webcam rilevata",
@@ -171,8 +52,5 @@
"Always show message timestamps": "Mostra sempre il timestamps dei messaggi",
"Authentication": "Autenticazione",
"Alias (optional)": "Alias (opzionale)",
- "all room members": "Tutti i membri della stanza",
- "all room members, from the point they are invited": "Tutti i membri della stanza, dal punto in cui sono stati/e invitati/e",
- "all room members, from the point they joined": "tutti i membri della stanza, dal punto in cui si sono uniti",
"and": "e"
}
diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json
index 9e8b23c680..98b5b6c286 100644
--- a/src/i18n/strings/ja.json
+++ b/src/i18n/strings/ja.json
@@ -1,5 +1,4 @@
{
- "ja": "日本語",
"Anyone": "誰でも",
"Anyone who knows the room's link, apart from guests": "誰でも部屋に参加できる (ゲストユーザは不可)",
"Anyone who knows the room's link, including guests": "誰でも部屋に参加できる (ゲストユーザも可能)",
@@ -9,7 +8,6 @@
"Create Room": "部屋を作成",
"Current password": "現在のパスワード",
"Delete": "削除",
- "Direct Chat": "対話",
"Direct chats": "対話",
"Display name": "表示名",
"Enable encryption": "暗号会話開始",
@@ -27,7 +25,6 @@
"Notifications": "通知",
"Cancel": "取消",
"Create new room": "新しい部屋を作成",
- "Failed to join the room": "部屋への参加に失敗しました",
"Room directory": "公開部屋一覧",
"Search": "検索",
"Settings": "設定",
@@ -44,11 +41,10 @@
"Only people who have been invited": "この部屋に招待された人のみ参加可能",
"Hide removed messages": "削除された発言の印を表示しない",
"Always show message timestamps": "発言時刻を常に表示",
- "%(count)s new messages.one": "新しい発言 %(count)s",
- "%(count)s new messages.other": "新しい発言 %(count)s",
+ "%(count)s new messages|one": "新しい発言 %(count)s",
+ "%(count)s new messages|other": "新しい発言 %(count)s",
"Don't send typing notifications": "文字入力中であることを公表しない",
"Filter room members": "参加者検索",
- "List this room in %(domain)s's room directory?": "この部屋を %(domain)s サーバの部屋一覧に公開する?",
"Send a message (unencrypted)": "ここに送信文を入力 (暗号化なし)",
"Send an encrypted message": "暗号文を送る",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "発言時刻を12時間形式で表示 (例 2:30PM)",
@@ -64,125 +60,6 @@
"Riot collects anonymous analytics to allow us to improve the application.": "Riotはアプリケーションを改善するために匿名の分析情報を収集しています。",
"Start chatting": "対話開始",
"Start Chatting": "対話開始",
- "af": "アフリカーンス語",
- "be": "ベラルーシ語",
- "bg": "ブルガリア語",
- "ca": "カタルーニャ語",
- "cs": "チェコ語",
- "da": "デンマーク語",
- "de-at": "ドイツ語(オーストリア)",
- "de-ch": "ドイツ語(スイス)",
- "de": "ドイツ語",
- "de-li": "ドイツ語(リヒテンシュタイン)",
- "de-lu": "ドイツ語(ルクセンブルク)",
- "el": "ギリシア語",
- "en-au": "英語(オーストラリア)",
- "en-bz": "英語(ベリーズ)",
- "en-ca": "英語(カナダ)",
- "en": "英語",
- "en-gb": "英語(イギリス)",
- "en-ie": "英語(アイルランド)",
- "en-jm": "英語(ジャマイカ)",
- "en-nz": "英語 (ニュージーランド)",
- "en-tt": "英語 (トリニダード)",
- "ar-ae": "アラビア語 (アラブ首長国連邦)",
- "ar-bh": "アラビア語 (バーレーン)",
- "ar-dz": "アラビア語 (アルジェリア)",
- "ar-eg": "アラビア語 (エジプト)",
- "ar-iq": "アラビア語 (イラク)",
- "ar-jo": "アラビア語 (ヨルダン)",
- "ar-kw": "アラビア語 (クウェート)",
- "ar-lb": "アラビア語 (レバノン)",
- "ar-ly": "アラビア語 (リビア)",
- "ar-ma": "アラビア語 (モロッコ)",
- "ar-om": "アラビア語 (オマーン)",
- "ar-qa": "アラビア語 (カタール)",
- "ar-sa": "アラビア語 (サウジアラビア)",
- "ar-sy": "アラビア語 (シリア)",
- "ar-tn": "アラビア語 (チュニジア)",
- "ar-ye": "アラビア語 (イエメン)",
- "en-us": "英語 (アメリカ合衆国)",
- "en-za": "英語 (南アフリカ)",
- "es-ar": "スペイン語 (アルゼンチン)",
- "es-bo": "スペイン語 (ボリビア)",
- "es-cl": "スペイン語 (チリ)",
- "es-co": "スペイン語 (コロンビア)",
- "es-cr": "スペイン語 (コスタリカ)",
- "es-do": "スペイン語 (ドミニカ共和国)",
- "es-ec": "スペイン語 (エクアドル)",
- "es-gt": "スペイン語 (グアテマラ)",
- "es-hn": "スペイン語 (ホンジュラス)",
- "es-mx": "スペイン語 (メキシコ)",
- "es-ni": "スペイン語 (ニカラグア)",
- "es-pa": "スペイン語 (パナマ)",
- "es-pe": "スペイン語 (ペルー)",
- "es-pr": "スペイン語 (プエルトリコ)",
- "es-py": "スペイン語 (パラグアイ)",
- "es": "スペイン語 (スペイン)",
- "es-sv": "スペイン語 (エルサルバドル)",
- "es-uy": "スペイン語 (ウルグアイ)",
- "es-ve": "スペイン語 (ベネズエラ)",
- "et": "エストニア語",
- "eu": "バスク語",
- "fa": "ペルシャ語",
- "fi": "フィンランド語",
- "fo": "フェロー語",
- "fr-be": "フランス語 (ベルギー)",
- "fr-ca": "フランス語 (カナダ)",
- "fr-ch": "フランス語 (スイス)",
- "fr": "フランス語 (フランス)",
- "fr-lu": "フランス語 (ルクセンブルグ)",
- "ga": "アイルランド語",
- "gd": "ゲール語 (スコットランド)",
- "he": "ヘブライ語",
- "hi": "ヒンズー語",
- "hr": "クロアチア語",
- "hu": "ハンガリー語",
- "id": "インドネシア語",
- "is": "アイスランド語",
- "it-ch": "イタリア語 (スイス)",
- "it": "イタリア語 (イタリア)",
- "ji": "イディッシュ語",
- "ko": "韓国語",
- "lt": "リトアニア語",
- "lv": "ラトビア語",
- "mk": "マケドニア語 (FYROM)",
- "ms": "マレー語",
- "mt": "マルタ語",
- "nl-be": "オランダ語 (ベルギー)",
- "nl": "オランダ語",
- "no": "ノルウェー語 (ブークモール)",
- "pl": "ポーランド語",
- "pt-br": "ポルトガル語 (ブラジル)",
- "pt": "ポルトガル語 (ポルトガル)",
- "rm": "レトロマン語",
- "ro-mo": "ルーマニア語 (モルドバ)",
- "ro": "ルーマニア語",
- "ru-mo": "ロシア語 (モルドバ)",
- "ru": "ロシア語",
- "sb": "ソルビア語",
- "sk": "スロバキア語",
- "sl": "スロベニア語",
- "sq": "アルバニア語",
- "sr": "セルビア語",
- "sv-fi": "スウェーデン語 (フィンランド)",
- "sv": "スウェーデン語",
- "sx": "ソト語",
- "sz": "サーミ語 (ラップ語)",
- "th": "タイ語",
- "tn": "ツワナ語",
- "tr": "トルコ語",
- "ts": "ツォンガ語",
- "uk": "ウクライナ語",
- "ur": "ウルドゥー語",
- "ve": "ヴェンダ語",
- "vi": "ベトナム語",
- "xh": "コーサ語",
- "zh-cn": "中国語 (中華人民共和国)",
- "zh-hk": "中国語 (香港)",
- "zh-sg": "中国語 (シンガポール)",
- "zh-tw": "中国語 (台湾)",
- "zu": "ズールー語",
"Add": "追加",
"No Microphones detected": "マイクが見つかりません",
"No Webcams detected": "カメラが見つかりません",
diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json
index 74fc0f5094..8b6e233437 100644
--- a/src/i18n/strings/ko.json
+++ b/src/i18n/strings/ko.json
@@ -1,42 +1,12 @@
{
- "af": "아프리칸스어",
- "ar-ae": "아랍어 (아랍 에미리트 연방)",
- "ar-bh": "아랍어 (바레인)",
- "ar-dz": "아랍어 (알제리)",
- "ar-eg": "아랍어 (이집트)",
- "ar-iq": "아랍어 (이라크)",
- "ar-jo": "아랍어 (요르단)",
- "ar-kw": "아랍어 (쿠웨이트)",
- "ar-lb": "아랍어 (레바논)",
- "ar-ly": "아랍어 (리비아)",
- "ar-ma": "아랍어 (모로코)",
- "ar-om": "아랍어 (오만)",
- "ar-qa": "아랍어 (카타르)",
- "ar-sa": "아랍어 (사우디아라비아)",
- "ar-sy": "아랍어 (시리아)",
- "ar-tn": "아랍어 (튀니지)",
- "ar-ye": "아랍어 (예멘)",
- "be": "벨라루스어",
- "bg": "불가리아어",
- "ca": "카탈로니아어",
- "cs": "체코어",
- "da": "덴마크어",
- "de-at": "독일어 (오스트리아)",
- "de-ch": "독일어 (스위스)",
- "de": "독일어",
- "de-li": "독일어 (리히텐슈타인)",
- "de-lu": "독일어 (룩셈부르크)",
- "el": "그리스어",
"Cancel": "취소",
"Close": "닫기",
"Create new room": "새 방 만들기",
"Custom Server Options": "사용자 지정 서버 설정",
- "Direct Chat": "직접 이야기하기",
"Dismiss": "없애기",
"Error": "오류",
"Mute": "알림 끄기",
"Notifications": "알림",
- "Please Register": "계정을 등록해주세요",
"powered by Matrix": "매트릭스의 지원을 받고 있어요",
"Remove": "지우기",
"Room directory": "방 목록",
@@ -52,98 +22,7 @@
"Friday": "금요일",
"Saturday": "토요일",
"OK": "알았어요",
- "Welcome page": "환영 화면",
"Continue": "게속하기",
- "en-au": "영어 (호주)",
- "en-bz": "영어 (벨리즈)",
- "en-ca": "영어 (캐나다)",
- "en": "영어",
- "en-gb": "영어 (영국)",
- "en-ie": "영어 (아일랜드)",
- "en-jm": "영어 (자메이카)",
- "en-nz": "영어 (뉴질랜드)",
- "en-tt": "영어 (트리니다드토바고)",
- "en-us": "영어 (미국)",
- "en-za": "영어 (남아프리카)",
- "es-ar": "스페인어 (아르헨티나)",
- "es-bo": "스페인어 (볼리비아)",
- "es-cl": "스페인어 (칠레)",
- "es-co": "스페인어 (콜롬비아)",
- "es-cr": "스페인어 (코스타리카)",
- "es-do": "스페인어 (도미니카 공화국)",
- "es-ec": "스페인어 (에콰도르)",
- "es-gt": "스페인어 (과테말라)",
- "es-hn": "스페인어 (온두라스)",
- "es-mx": "스페인어 (멕시코)",
- "es-ni": "스페인어 (니카라과)",
- "es-pa": "스페인어 (파나마)",
- "es-pe": "스페인어 (페루)",
- "es-pr": "스페인어 (푸에르토리코)",
- "es-py": "스페인어 (파라과이)",
- "es": "스페인어 (스페인)",
- "es-sv": "스페인어 (엘살바도르)",
- "es-uy": "스페인어 (우루과이)",
- "es-ve": "스페인어 (베네수엘라)",
- "et": "에스토니아어",
- "eu": "바스크어 (바스크)",
- "fa": "페르시아어",
- "fi": "핀란드어",
- "fo": "페로스어",
- "fr-be": "프랑스어 (벨기에)",
- "fr-ca": "프랑스어 (캐나다)",
- "fr-ch": "프랑스어 (스위스)",
- "fr": "프랑스어",
- "fr-lu": "프랑스어 (룩셈부르크)",
- "ga": "아일랜드어",
- "gd": "게일어 (스코틀랜드)",
- "he": "히브리어",
- "hi": "힌디어",
- "hr": "크로아티아어",
- "hu": "헝가리어",
- "id": "인도네시아어",
- "is": "아이슬란드어",
- "it-ch": "이탈리아어 (스위스)",
- "it": "이탈리아어",
- "ja": "일본어",
- "ji": "이디시어",
- "ko": "한국어",
- "lt": "리투아니아어",
- "lv": "라트비아어",
- "mk": "마케도니아어 (마케도니아 공화국)",
- "ms": "말레이시아어",
- "mt": "몰타어",
- "nl-be": "네덜란드어 (벨기에)",
- "nl": "네덜란드어",
- "no": "노르웨이어",
- "pl": "폴란드어",
- "pt-br": "브라질 포르투갈어",
- "pt": "포르투갈어",
- "rm": "레토로만어",
- "ro-mo": "루마니아어 (몰도바 공화국)",
- "ro": "루마니아어",
- "ru-mo": "러시아어 (몰도바 공확국)",
- "ru": "러시아어",
- "sb": "소르비아어",
- "sk": "슬로바키아어",
- "sr": "세르비아어",
- "sv-fi": "스웨덴어 (핀란드)",
- "sv": "스웨덴어",
- "sx": "수투어",
- "sz": "라플란드어 (라플란드)",
- "th": "태국",
- "tn": "츠와나어",
- "tr": "터키어",
- "ts": "총가어",
- "uk": "우크라이나어",
- "ur": "우르두어",
- "ve": "벤다어",
- "vi": "베트남어",
- "xh": "코사어",
- "zh-cn": "중국어 (중국)",
- "zh-hk": "중국어 (홍콩)",
- "zh-sg": "중국어 (싱가포르)",
- "zh-tw": "중국어 (대만)",
- "zu": "줄루어",
"a room": "방",
"Accept": "수락",
"Account": "계정",
@@ -151,7 +30,7 @@
"Add email address": "이메일 주소 추가하기",
"Add phone number": "전화번호 추가하기",
"Admin": "관리자",
- "Admin tools": "관리 도구",
+ "Admin Tools": "관리 도구",
"VoIP": "인터넷전화",
"No Microphones detected": "마이크를 찾지 못했어요",
"No Webcams detected": "카메라를 찾지 못했어요",
@@ -169,7 +48,6 @@
"A new password must be entered.": "새 비밀번호를 입력해주세요.",
"An error has occurred.": "오류가 일어났어요.",
"Anyone": "누구나",
- "anyone": "누구나",
"Are you sure?": "정말이세요?",
"Are you sure you want to leave the room '%(roomName)s'?": "정말로 '%(roomName)s'를 떠나시겠어요?",
"Attachment": "붙이기",
@@ -204,7 +82,6 @@
"Email, name or matrix ID": "이메일, 이름 혹은 매트릭스 ID",
"Drop here %(toAction)s": "여기에 놓아주세요 %(toAction)s",
"Failed to forget room %(errCode)s": "방 %(errCode)s를 잊지 못했어요",
- "Failed to join the room": "방에 들어가지 못했어요",
"Favourite": "즐겨찾기",
"Operation failed": "작업 실패",
"Failed to change password. Is your password correct?": "비밀번호를 바꾸지 못했어요. 이 비밀번호가 정말 맞으세요?",
@@ -219,16 +96,11 @@
"And %(count)s more...": "그리고 %(count)s 더 보기...",
"Missing Media Permissions, click here to request.": "저장소 권한을 잃었어요, 여기를 눌러 다시 요청해주세요.",
"You may need to manually permit Riot to access your microphone/webcam": "수동으로 라이엇에 마이크와 카메라를 허용해야 할 수도 있어요",
- "all room members": "방 구성원 모두",
- "all room members, from the point they are invited": "방 구성원 모두, 초대받은 시점부터",
- "all room members, from the point they joined": "방 구성원 모두, 방에 들어온 시점부터",
"%(items)s and %(remaining)s others": "%(items)s과 %(remaining)s",
"%(items)s and one other": "%(items)s과 다른 하나",
"%(items)s and %(lastItem)s": "%(items)s과 %(lastItem)s",
- "and %(count)s others...": {
- "other": "그리고 %(count)s...",
- "one": "그리고 다른 하나..."
- },
+ "and %(count)s others...|one": "그리고 다른 하나...",
+ "and %(count)s others...|other": "그리고 %(count)s...",
"%(names)s and %(lastPerson)s are typing": "%(names)s님과 %(lastPerson)s님이 입력중",
"%(names)s and one other are typing": "%(names)s님과 다른 분이 입력중",
"%(names)s and %(count)s others are typing": "%(names)s님과 %(count)s 분들이 입력중",
@@ -250,7 +122,6 @@
"%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s님이 방 이름을 지우셨어요.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s님이 주제를 \"%(topic)s\"로 바꾸셨어요.",
"Changes to who can read history will only apply to future messages in this room": "방의 이후 메시지부터 기록을 읽을 수 있는 조건의 변화가 적용되어요",
- "changing room on a RoomView is not supported": "룸뷰에서 방을 바꾸는 건 지원하지 않아요",
"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.": "비밀번호를 바꾸면 현재 모든 장치의 종단간 암호화 키가 다시 설정되고, 먼저 방의 키를 내보내고 나중에 다시 불러오지 않는 한, 암호화한 이야기 기록을 읽을 수 없게 되어요. 앞으로는 이 기능을 더 좋게 만들 거에요.",
"Claimed Ed25519 fingerprint key": "Ed25519 지문 키가 필요",
"Click here to join the discussion!": "여기 를 눌러서 같이 논의해요!",
@@ -267,8 +138,8 @@
"Conference calls are not supported in encrypted rooms": "암호화한 방에서는 전화 회의를 할 수 없어요",
"Conference calls are not supported in this client": "이 클라이언트에서는 전화 회의를 할 수 없어요",
"Could not connect to the integration server": "통합 서버에 연결할 수 없어요",
- "%(count)s new messages.one": "%(count)s 새 메시지",
- "%(count)s new messages.other": "%(count)s 새 메시지",
+ "%(count)s new messages|one": "%(count)s 새 메시지",
+ "%(count)s new messages|other": "%(count)s 새 메시지",
"Create a new chat or reuse an existing one": "새 이야기를 시작하거나 기존에 하던 이야기를 이어하세요",
"Cryptography": "암호화",
"Current password": "현재 비밀번호",
@@ -287,7 +158,6 @@
"Device key:": "장치 키:",
"Devices will not yet be able to decrypt history from before they joined the room": "방에 들어가기 전에는 장치에서 기록을 해독할 수 없어요",
"Disable inline URL previews by default": "기본적으로 인라인 URL 미리보기를 끄기",
- "Disable markdown formatting": "마크다운 형식 끄기",
"Disinvite": "초대 취소",
"Displays action": "활동 보이기",
"Download %(text)s": "%(text)s 받기",
@@ -352,10 +222,6 @@
"Found a bug?": "오류를 찾으셨나요?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s를 %(fromPowerLevel)s에서 %(toPowerLevel)s로",
"Guest access is disabled on this Home Server.": "손님은 이 홈 서버에 접근하실 수 없어요.",
- "Guests can't set avatars. Please register.": "손님은 아바타를 설정하실 수 없어요. 계정을 등록해주세요.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "손님은 새 방을 만드실 수 없어요. 계정을 등록하셔서 방을 만드시고 이야기를 시작하세요.",
- "Guest users can't upload files. Please register to upload.": "손님은 파일을 올릴 수 없어요. 파일을 올리시려면 계정을 등록해주세요.",
- "Guests can't use labs features. Please register.": "손님은 실험실 기능을 쓸 수 없어요. 계정을 등록해주세요.",
"Guests cannot join this room even if explicitly invited.": "손님은 분명하게 초대받았어도 이 방에 들어가실 수 없어요.",
"had": "했어요",
"Hangup": "전화 끊기",
@@ -405,13 +271,16 @@
"left": "떠났음",
"%(targetName)s left the room.": "%(targetName)s님이 방을 떠나셨어요.",
"Level:": "등급:",
- "List this room in %(domain)s's room directory?": "%(domain)s's 방 목록에 이 방을 놓으시겠어요?",
"Local addresses for this room:": "이 방의 로컬 주소:",
"Logged in as:": "로그인:",
"Login as guest": "손님으로 로그인",
"Logout": "로그아웃",
"Low priority": "낮은 우선순위",
- "%(senderName)s made future room history visible to": "%(senderName)s님이 이후 방의 기록을 볼 수 있게 하셨어요",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s님이 이후 방의 기록을 볼 수 있게 하셨어요 방 구성원 모두, 초대받은 시점부터.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s님이 이후 방의 기록을 볼 수 있게 하셨어요 방 구성원 모두, 방에 들어온 시점부터.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s님이 이후 방의 기록을 볼 수 있게 하셨어요 방 구성원 모두.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s님이 이후 방의 기록을 볼 수 있게 하셨어요 누구나.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s님이 이후 방의 기록을 볼 수 있게 하셨어요 알 수 없음 (%(visibility)s).",
"Manage Integrations": "통합 관리",
"Markdown is disabled": "마크다운이 꺼져있어요",
"Markdown is enabled": "마크다운이 켜져있어요",
@@ -430,7 +299,6 @@
"Never send encrypted messages to unverified devices in this room": "이 방에서 인증받지 않은 장치로 암호화한 메시지를 보내지 마세요",
"Never send encrypted messages to unverified devices in this room from this device": "이 장치에서 이 방의 인증받지 않은 장치로 암호화한 메시지를 보내지 마세요",
"New address (e.g. #foo:%(localDomain)s)": "새 주소 (예. #foo:%(localDomain)s)",
- "New Composer & Autocomplete": "새 구성 & 자동 완성",
"New password": "새 비밀번호",
"New passwords don't match": "새 비밀번호가 맞지 않아요",
"New passwords must match each other.": "새 비밀번호는 서로 같아야 해요.",
@@ -453,7 +321,7 @@
"People": "사람들",
"Phone": "전화",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "방을 암호화하면 암호화를 도중에 끌 수 없어요. (현재로서는)",
- "Once you've followed the link it contains, click below": "포함된 주소를 따라가서, 아래를 누르세요",
+ "Once you've followed the link it contains, click below": "포함된 주소를 따라가서, 아래를 누르세요",
"Only people who have been invited": "초대받은 사람만",
"Otherwise, click here to send a bug report.": "그 밖에는, 여기를 눌러 오류 보고서를 보내주세요.",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s님이 %(callType)s 전화를 걸었어요.",
@@ -461,7 +329,6 @@
"Power level must be positive integer.": "권한 등급은 양의 정수여야만 해요.",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (권한 %(powerLevelNumber)s)",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "사용자를 자신과 같은 권한 등급으로 승급시키면 되돌릴 수 없어요.",
- "Press": "누르세요",
"Privacy warning": "개인정보 경고",
"Private Chat": "비공개 이야기",
"Privileged Users": "권한 있는 사용자",
@@ -504,7 +371,6 @@
"Scroll to unread messages": "읽지 않은 메시지로 이동",
"Search failed": "찾지 못함",
"Searches DuckDuckGo for results": "덕덕고에서 검색",
- "Searching known users": "아는 사용자 검색중",
"Seen by %(userName)s at %(dateTime)s": "%(userName)s님이 %(dateTime)s에 확인",
"Send a message (unencrypted)": "메시지 보내기 (비암호화)",
"Send an encrypted message": "암호화한 메시지 보내기",
@@ -542,14 +408,12 @@
"Start Chat": "이야기하기",
"Submit": "보내기",
"Success": "성공",
- "tag as %(tagName)s": "%(tagName)s로 지정하기",
"tag direct chat": "직접 이야기 지정하기",
"Tagged as: ": "지정함: ",
"The default role for new room members is": "방 새 구성원의 기본 역할",
"The main address for this room is": "이 방의 주요 주소",
"The phone number entered looks invalid": "입력한 전화번호가 잘못된 거 같아요",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "입력한 서명 키는 %(userId)s님의 장치 %(deviceId)s에서 받은 서명 키와 일치하네요. 인증한 장치로 표시할게요.",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "손님은 이 작업을 할 수 없어요. 하려면 계정을 등록해주세요.",
"This email address is already in use": "이 이메일 주소는 사용중이에요",
"This email address was not found": "이 이메일 주소를 찾지 못했어요",
"%(actionVerb)s this person?": "이 사용자에게 %(actionVerb)s?",
@@ -559,7 +423,6 @@
"The remote side failed to pick up": "원격 측에서 찾지 못했어요",
"This Home Server does not support login using email address.": "이 홈 서버는 이메일 주소 로그인을 지원하지 않아요.",
"This invitation was sent to an email address which is not associated with this account:": "이 초대는 이 계정과 연결되지 않은 이메일 주소로 보냈어요:",
- "There was a problem logging in.": "로그인하는 데 문제가 있어요.",
"This room has no local addresses": "이 방은 로컬 주소가 없어요",
"This room is not recognised.": "이 방은 드러나지 않아요.",
"These are experimental features that may break in unexpected ways": "예상치 못한 방법으로 망가질 지도 모르는 실험 기능이에요",
@@ -586,7 +449,6 @@
"To send events of type": "유형 이벤트 보내기",
"To send messages": "메시지 보내기",
"to start a chat with someone": "다른 사람과 이야기하기",
- "to tag as %(tagName)s": "%(tagName)s로 지정하려면",
"to tag direct chat": "직접 이야기를 지정하려면",
"To use it, just wait for autocomplete results to load and tab through them.": "이 기능을 사용하시려면, 자동완성 결과가 나오길 기다리신 뒤에 탭으로 움직여주세요.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 문제의 메시지를 볼 수 있는 권한이 없어요.",
@@ -596,7 +458,6 @@
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s님이 종단간 암호화를 켜셨어요 (알고리즘 %(algorithm)s).",
"Unable to add email address": "이메일 주소를 추가할 수 없어요",
"Unable to remove contact information": "연락처를 지울 수 없어요",
- "Unable to restore previous session": "이전 세션을 복구할 수 없어요",
"Unable to verify email address.": "이메일 주소를 인증할 수 없어요.",
"Unban": "차단풀기",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s님이 %(targetName)s님의 차단을 푸셨어요.",
@@ -612,15 +473,14 @@
"unknown device": "알 수 없는 장치",
"Unknown room %(roomId)s": "알 수 없는 방 %(roomId)s",
"Unknown (user, device) pair:": "알 수 없는 (사용자, 장치) 연결:",
- "unknown": "알 수 없음",
"Unmute": "소리 켜기",
"Unnamed Room": "이름 없는 방",
"Unrecognised command:": "인식 할 수 없는 명령:",
"Unrecognised room alias:": "인식할 수 없는 방 가명:",
"Unverified": "인증하지 않음",
- "Uploading %(filename)s and %(count)s others.zero": "%(filename)s 올리는 중",
- "Uploading %(filename)s and %(count)s others.one": "%(filename)s 외 %(count)s 올리는 중",
- "Uploading %(filename)s and %(count)s others.other": "%(filename)s 외 %(count)s 올리는 중",
+ "Uploading %(filename)s and %(count)s others|zero": "%(filename)s 올리는 중",
+ "Uploading %(filename)s and %(count)s others|one": "%(filename)s 외 %(count)s 올리는 중",
+ "Uploading %(filename)s and %(count)s others|other": "%(filename)s 외 %(count)s 올리는 중",
"uploaded a file": "파일을 올렸어요",
"Upload avatar": "아바타 올리기",
"Upload Failed": "파일을 올리지 못했어요",
@@ -675,7 +535,6 @@
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "모든 장치에서 로그아웃되었고 더 이상 알림을 받지 않으실 거에요. 다시 알림을 받으시려면, 각 장치에 로그인해주세요",
"You have disabled URL previews by default.": "URL 미리보기 쓰지 않기 를 기본으로 하셨어요.",
"You have enabled URL previews by default.": "URL 미리보기 쓰기 를 기본으로 하셨어요.",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "잘못된 연락처를 입력하셨어요. 매트릭스 ID나 이메일 주소를 써보세요.",
"You have no visible notifications": "보여드릴 알림이 없어요",
"You may wish to login with a different account, or add this email to this account.": "다른 계정으로 로그인하거나, 이 이메일을 이 계정에 추가할 수도 있어요.",
"you must be a": "해야해요",
@@ -714,7 +573,6 @@
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s일 %(fullYear)s년 %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s, %(time)s",
"Set a display name:": "별명 설정:",
- "Set a Display Name": "별명 설정",
"Upload an avatar:": "아바타 올리기:",
"This server does not support authentication with a phone number.": "이 서버는 전화번호 인증을 지원하지 않아요.",
"Missing password.": "비밀번호를 틀렸어요.",
@@ -735,10 +593,9 @@
"Room": "방",
"Connectivity to the server has been lost.": "서버 연결이 끊어졌어요.",
"Sent messages will be stored until your connection has returned.": "보내신 메시지는 다시 연결될 때까지 저장할 거에요.",
- "Auto-complete": "자동 완성",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "전부 다시 보내거나 취소하세요 . 다시 보내거나 취소할 메시지를 하나씩 고르실 수도 있어요.",
- "(~%(count)s results).one": "(~%(count)s 결과)",
- "(~%(count)s results).other": "(~%(count)s 결과)",
+ "(~%(count)s results)|one": "(~%(count)s 결과)",
+ "(~%(count)s results)|other": "(~%(count)s 결과)",
"or": "혹은",
"Active call": "전화 중",
"bold": "굵은 획",
@@ -813,7 +670,6 @@
"You must join the room to see its files": "파일을 보려면 방에 들어가야만 해요",
"Reject all %(invitedRooms)s invites": "모든 %(invitedRooms)s의 초대를 거절하기",
"Start new chat": "새로 이야기하기",
- "Guest users can't invite users. Please register.": "손님은 사용자를 초대할 수 없어요. 계정을 등록해주세요.",
"Failed to invite": "초대하지 못했어요",
"Failed to invite user": "사용자를 초대하지 못했어요",
"Failed to invite the following users to the %(roomName)s room:": "다음 사용자들을 %(roomName)s 방으로 초대하지 못했어요:",
@@ -840,7 +696,6 @@
"Unable to restore session": "세션을 복구할 수 없어요",
"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.": "이전에 더 최근 버전의 라이엇을 쓰셨다면, 이 버전과 맞지 않을 거에요. 창을 닫고 더 최근 버전으로 돌아가세요.",
"Continue anyway": "무시하고 계속하기",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "별명은 방에서 말할 때 다른 사람에게 보일 이름을 정하는 거에요. 어떤 게 좋으세요?",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "현재 인증하지 않은 장치를 요주의로 지정하셨어요. 이 장치들에 메시지를 보내려면 인증을 해야 해요.",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "각 장치가 알맞은 소유자에게 속해 있는지 인증 과정을 거치길 추천하지만, 원하신다면 그러지 않고 메시지를 다시 보내실 수 있어요.",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\"에 본 적 없는 장치가 있어요.",
diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json
index cdba89e157..5f58fd9515 100644
--- a/src/i18n/strings/lv.json
+++ b/src/i18n/strings/lv.json
@@ -1,124 +1,4 @@
{
- "af": "Afrikandu",
- "ar-ae": "Arābu (A.A.E.)",
- "ar-bh": "Arābu (Bahraina)",
- "ar-dz": "Arābu (Alžīrija)",
- "ar-eg": "Arābu (Ēģipte)",
- "ar-iq": "Arābu (Irāka)",
- "ar-jo": "Arābu (Jordāna)",
- "ar-kw": "Arābu (Kuveita)",
- "ar-lb": "Arābu (Lebanēna)",
- "ar-ly": "Arābu (Lībija)",
- "ar-ma": "Arābu (Maroka)",
- "ar-om": "Arābu (Omāna)",
- "ar-qa": "Arābu (Kvatara)",
- "ar-sa": "Arābu (Saūda Arābija)",
- "ar-sy": "Arābu (Sīrija)",
- "ar-tn": "Arābu (Tunisija)",
- "ar-ye": "Arābu (Jemena)",
- "be": "Baltkrievu",
- "bg": "Bulgāru",
- "ca": "Katalāņu",
- "cs": "Čehu",
- "da": "Dāņu",
- "de-at": "Vācu (Austrija)",
- "de-ch": "Vācu (Šveice)",
- "de": "Vācu",
- "de-li": "Vācu (Lihtenšteina)",
- "de-lu": "Vācu (Luksemburga)",
- "el": "Grieķu",
- "en-au": "Angļu (Austrālija)",
- "en-bz": "Angļu (Beliza)",
- "en-ca": "Angļu (Kanāda)",
- "en": "Angļu",
- "en-gb": "Angļu (Apvienotā Karaliste)",
- "en-ie": "Angļu (Īrija)",
- "en-jm": "Angļu (Jamaika)",
- "en-nz": "Angļu (Jaunzēlande)",
- "en-tt": "Angļu (Trinidāda)",
- "en-us": "Angļu (ASV)",
- "en-za": "Angļu (Dienvidāfrika)",
- "es-ar": "Spāņu (Argentīna)",
- "es-bo": "Spāņu (Bolīvija)",
- "es-cl": "Spāņu (Čīle)",
- "es-co": "Spāņu (Kolumbija)",
- "es-cr": "Spāņu (Kostarika)",
- "es-do": "Spāņu (Dominikānas Republika)",
- "es-ec": "Spāņu (Ekvadora)",
- "es-gt": "Spāņu (Gvatemala)",
- "es-hn": "Spāņu (Hondurasa)",
- "es-mx": "Spāņu (Meksika)",
- "es-ni": "Spāņu (Nikaragva)",
- "es-pa": "Spāņu (Panama)",
- "es-pe": "Spāņu (Peru)",
- "es-pr": "Spāņu (Puertoriko)",
- "es-py": "Spāņu (Paragvaja)",
- "es": "Spāņu (Spānija)",
- "es-sv": "Spāņu (Salvadora)",
- "es-uy": "Spāņu (Urugvaja)",
- "es-ve": "Spāņu (Venecuēla)",
- "et": "Igauņu",
- "eu": "Basku (Basku Zeme)",
- "fa": "Farsi",
- "fi": "Somu",
- "fo": "Fēriešu",
- "fr-be": "Franču (Beļģija)",
- "fr-ca": "Franču (Kanāda)",
- "fr-ch": "Franču (Šveice)",
- "fr": "Franču",
- "fr-lu": "Franču (Luksemburga)",
- "ga": "Īru",
- "gd": "Gallu (Skotija)",
- "he": "Ebreju",
- "hi": "Hindi",
- "hr": "Kroātu",
- "hu": "Ungāru",
- "id": "Indonēziešu",
- "is": "Islandiešu",
- "it-ch": "Itāļu (Šveice)",
- "it": "Itāļu",
- "ja": "Japāņu",
- "ji": "Jidišs",
- "ko": "Korejiešu",
- "lt": "Lietuviešu",
- "lv": "Latviešu",
- "mk": "Maķedoniešu (FYROM)",
- "ms": "Malaiziešu",
- "mt": "Maltiešu",
- "nl-be": "Nīderlandiešu (Beļģija)",
- "nl": "Nīderlandiešu",
- "no": "Norvēģu",
- "pl": "Poļu",
- "pt-br": "Brazīlijas portugāļu",
- "pt": "Portugāļu",
- "rm": "Rhaeto-Rumāņu",
- "ro-mo": "Rumāņu (Moldovas Republika)",
- "ro": "Rumāņu",
- "ru-mo": "Krievu (Moldovas Republika)",
- "ru": "Krievu",
- "sb": "Sorbu",
- "sk": "Slovāku",
- "sl": "Slovēņu",
- "sq": "Albāniešu",
- "sr": "Serbu",
- "sv-fi": "Zviedru (Somija)",
- "sv": "Zviedru",
- "sx": "Sutu",
- "sz": "Sāmu (Lapu)",
- "th": "Taju",
- "tn": "Cvanu",
- "tr": "Turku",
- "ts": "Congu",
- "uk": "Ukraiņu",
- "ur": "Urdu",
- "ve": "Vendu",
- "vi": "Vjetnamiešu",
- "xh": "Khosu",
- "zh-cn": "Ķīniešu (ĶTR)",
- "zh-hk": "Ķīniešu (Honkongas SAR)",
- "zh-sg": "Ķīniešu (Singapūra)",
- "zh-tw": "Ķīniešu (Taivāna)",
- "zu": "Zulu",
"a room": "istaba",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Teksta ziņa tika nosūtīta +%(msisdn)s. Lūdzu ievadi tajā atrodamo verifikācijas kodu",
"Accept": "Apstiprināt",
@@ -132,7 +12,7 @@
"Add email address": "Pievieno Epasta adresi",
"Add phone number": "Pievieno tālruņa numuru",
"Admin": "Administrators",
- "Admin tools": "Administratora rīki",
+ "Admin Tools": "Administratora rīki",
"And %(count)s more...": "Un vēl %(count)s citi...",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Nav pieejas medija saturam. Klikšķini šeit, lai pieprasītu.",
@@ -149,9 +29,6 @@
"Always show message timestamps": "Vienmēr rādīt ziņojumu laika zīmogu",
"Authentication": "Autentifikācija",
"Alias (optional)": "Aizstājējvārds (neobligāts)",
- "all room members": "visi istabas biedri",
- "all room members, from the point they are invited": "visi istabas biedri secībā, kādā tika uzaicināti",
- "all room members, from the point they joined": "visi istabas biedri secībā, kādā ir pievienojušies",
"and": "un",
"%(items)s and %(remaining)s others": "%(items)s un %(remaining)s citi",
"%(items)s and one other": "%(items)s un viens cits",
@@ -164,7 +41,6 @@
"An email has been sent to": "Epasts tika nosūtīts",
"A new password must be entered.": "Nepieciešams ievadīt jauno paroli.",
"%(senderName)s answered the call.": "%(senderName)s atbildēja zvanam.",
- "anyone": "ikviens",
"An error has occurred.": "Notikusi kļūda.",
"Anyone": "Ikviens",
"Anyone who knows the room's link, apart from guests": "Ikviens, kurš zina adreses saiti uz istabu, izņemot viesus",
@@ -195,7 +71,6 @@
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s nomainīja tēmas nosaukumu uz \"%(topic)s\".",
"Changes to who can read history will only apply to future messages in this room": "Izmaiņas attiecībā uz to, kurš varēs lasīt vēstures ziņas, stāsies spēkā tikai uz ziņām,kuras vēl tiks pievienotas šajā istabā",
"Changes your display nickname": "Nomaina tavu publisko segvārdu (niku)",
- "changing room on a RoomView is not supported": "istabas maiņa nav iespējama, atrodoties istabu skata lapā",
"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.": "Paroles maiņa dzēsīs pašreizējās šifrēšanas atslēgas visās savstarpēji saistītajās ierīcēs, padarot čata vēsturi neizlasāmu, ja vien vien istabas atslēgas nav tikušas iepriekš eksportētas un no jauna importētas atpakaļ. Nākotnē to plānojam uzlabot.",
"Claimed Ed25519 fingerprint key": "Norādīta Ed25519 identificējošās zīmju virknes atslēga",
"Clear Cache and Reload": "Iztīri kešatmiņu un pārlādē",
@@ -218,8 +93,8 @@
"Confirm your new password": "Apstiprini jauno paroli",
"Continue": "Turpināt",
"Could not connect to the integration server": "Neizdevās savienoties ar integrācijas serveri",
- "%(count)s new messages.one": "jaunu ziņu skaits: %(count)s",
- "%(count)s new messages.other": "%(count)s jaunas ziņas",
+ "%(count)s new messages|one": "jaunu ziņu skaits: %(count)s",
+ "%(count)s new messages|other": "%(count)s jaunas ziņas",
"Create a new chat or reuse an existing one": "Izveidot jaunu čatu vai izmantot eksistējošu",
"Create an account": "Reģistrēt kontu",
"Create Room": "Izveidot istabu",
@@ -245,12 +120,10 @@
"Device key:": "Ierīces atslēga:",
"Devices": "Ierīces",
"Devices will not yet be able to decrypt history from before they joined the room": "Ierīces nevarēs atšifrēt to ziņu vēsturi, kuras ir tikušas pievienotas, pirms ierīce pieslēdzās istabai",
- "Direct Chat": "Tiešais čats",
"Direct chats": "Tiešie čati",
"Disable Notifications": "Atslēgt paziņojumus",
"disabled": "atslēgts",
"Disable inline URL previews by default": "Pēc noklusējuma atslēgt saišu priekšskatījumu",
- "Disable markdown formatting": "Atslēgt formatēšanas iespēju",
"Disinvite": "Atsaukt",
"Display name": "Redzamais vārds",
"Displays action": "Parāda darbību",
@@ -295,7 +168,6 @@
"Failed to fetch avatar URL": "Neizdevās noteikt avatara URL adresi",
"Failed to forget room %(errCode)s": "Neizdevās \"aizmirst\" istabu %(errCode)s",
"Failed to join room": "Neizdevās pievienoties istabai",
- "Failed to join the room": "Neizdevās pievienoties istabai",
"Failed to kick": "Neizdevās veikt \"kick\" darbību",
"Failed to leave room": "Neizdevās pamest istabu",
"Failed to load timeline position": "Neizdevās ielādēt laikpaziņojumu pozīciju",
@@ -328,10 +200,6 @@
"Found a bug?": "Pamanīji kļūdu?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s no %(fromPowerLevel)s uz %(toPowerLevel)s",
"Guest access is disabled on this Home Server.": "Šajā serverī viesu pierakstīšanās nav iespējama.",
- "Guests can't set avatars. Please register.": "Viesi nevar iestatīt profila attēlus. Lūdzu reģistrējies vai pieraksties.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Viesi nevar izveidot jaunas istabas. Lūdzu reģistrējies vai pieraksties, un uzsāc čatu.",
- "Guest users can't upload files. Please register to upload.": "Viesi nevar augšuplādēt failus. Lūdzu reģistrējies vai pieraksties.",
- "Guests can't use labs features. Please register.": "Viesi nevar izmantot laboratorijas funkcijas. Lūdzu reģistrējies vai pieraksties.",
"Guests cannot join this room even if explicitly invited.": "Viesi nevar pievienoties šai istabai pat ja ir uzaicināti.",
"had": "bija",
"Hangup": "Aizturēt",
@@ -380,13 +248,16 @@
"left": "atstāja",
"%(targetName)s left the room.": "%(targetName)s atstāja istabu.",
"Level:": "Līmenis:",
- "List this room in %(domain)s's room directory?": "Rādīt šo istabu %(domain)s kataloga sarakstā?",
"Local addresses for this room:": "Šīs istabas lokālās adreses:",
"Logged in as:": "Pierakstījās kā:",
"Login as guest": "Pierakstīties kā viesis",
"Logout": "Izrakstīties",
"Low priority": "Zema prioritāte",
- "%(senderName)s made future room history visible to": "%(senderName)s uzstādīja nākotnes istabas ziņu vēsturi redzamu",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s uzstādīja nākotnes istabas ziņu vēsturi redzamu visi istabas biedri secībā, kādā tika uzaicināti.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s uzstādīja nākotnes istabas ziņu vēsturi redzamu visi istabas biedri secībā, kādā ir pievienojušies.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s uzstādīja nākotnes istabas ziņu vēsturi redzamu visi istabas biedri.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s uzstādīja nākotnes istabas ziņu vēsturi redzamu ikviens.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s uzstādīja nākotnes istabas ziņu vēsturi redzamu nezināms (%(visibility)s).",
"Manage Integrations": "Pārvaldīt integrācijas",
"Markdown is disabled": "Formatēšanas iespēja ir atslēgta",
"Markdown is enabled": "Formatēšanas iespēja ir iespējota",
@@ -409,7 +280,6 @@
"Never send encrypted messages to unverified devices in this room": "Nekad nesūti šifrētas ziņas uz neverificētām ierīcēm šajā istabā",
"Never send encrypted messages to unverified devices in this room from this device": "Nekad nesūti no šīs ierīces šifrētas ziņas neverificētām ierīcēm šajā istabā",
"New address (e.g. #foo:%(localDomain)s)": "Jauna adrese (piemēram #kautkas:%(localDomain)s)",
- "New Composer & Autocomplete": "Jauns teksta izveidotājs & automātiskā aizpildīšana",
"New password": "Jauna parole",
"New passwords don't match": "Jaunās paroles nesakrīt",
"New passwords must match each other.": "Jaunajām parolēm ir jāsakrīt vienai ar otru.",
@@ -428,7 +298,7 @@
"OK": "LABI",
"olm version:": "olm versija:",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Tiklīdz istabai tiks iespējota šifrēšana, tā vairs nebūs atslēdzama (pašlaik)",
- "Once you've followed the link it contains, click below": "Tiklīdz sekoji saturā esošajai saitei, noklikšķini zemāk",
+ "Once you've followed the link it contains, click below": "Tiklīdz sekoji saturā esošajai saitei, noklikšķini zemāk",
"Only people who have been invited": "Vienīgi personas, kuras ir tikušas uzaicinātas",
"Operation failed": "Darbība neizdevās",
"Otherwise, click here to send a bug report.": "pretējā gadījumā, klikšķini šeit , lai nosūtītu paziņojumu par kļūdu.",
@@ -440,8 +310,6 @@
"Phone": "Telefons",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s nolika %(callType)s zvanu.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Lūdzu pārbaudi savu epastu un noklikšķini tajā esošo saiti. Tiklīdz tas ir izdarīts, klikšķini \"turpināt\".",
- "Please Register": "Lūdzu reģistrējies",
- "Press": "Nospied",
"Press to start a chat with someone": "Nospied , lai uzsāktu čatu ar kādu",
"Privacy warning": "Privātuma brīdinājums",
"Private Chat": "Privātais čats",
@@ -486,18 +354,16 @@
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s nosūtīja uzaicinājumu %(targetDisplayName)s pievienoties istabai.",
"%(senderName)s set a profile picture.": "%(senderName)s uzstādīja profila attēlu.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s uzstādīja redzamo vārdu uz: %(displayName)s.",
- "tag as %(tagName)s": "birka kā %(tagName)s",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Tevis uzdotā pierakstīšanās atslēga sakrīt ar atslēgu, kuru Tu saņēmi no %(userId)s ierīces %(deviceId)s. Ierīce tika atzīmēta kā verificēta.",
"%(actionVerb)s this person?": "%(actionVerb)s šo personu?",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "Faila '%(fileName)s' izmērs pārsniedz šī mājas servera augšupielādes lieluma ierobežojumu",
"The file '%(fileName)s' failed to upload": "Failu '%(fileName)s' neizdevās augšuplādēt",
- "to tag as %(tagName)s": "uz birku kā %(tagName)s",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ieslēdza ierīce-ierīce šifrēšanu (algorithm %(algorithm)s).",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s atcēla pieejas ierobežojumu (atbanoja) %(targetName)s.",
"Unknown room %(roomId)s": "Nezināma istaba %(roomId)s",
- "Uploading %(filename)s and %(count)s others.zero": "Tiek augšuplādēts %(filename)s",
- "Uploading %(filename)s and %(count)s others.one": "Tiek augšuplādēts %(filename)s un %(count)s citi",
- "Uploading %(filename)s and %(count)s others.other": "Tiek augšuplādēts %(filename)s un %(count)s citi",
+ "Uploading %(filename)s and %(count)s others|zero": "Tiek augšuplādēts %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Tiek augšuplādēts %(filename)s un %(count)s citi",
+ "Uploading %(filename)s and %(count)s others|other": "Tiek augšuplādēts %(filename)s un %(count)s citi",
"%(user)s is a": "%(user)s ir",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)",
"Username invalid: %(errMessage)s": "Neatbilstošs lietotājvārds: %(errMessage)s",
@@ -513,8 +379,8 @@
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Parole ir par īsu (jābūt vismaz %(MIN_PASSWORD_LENGTH)s zīmēm).",
"An error occurred: %(error_string)s": "Notikusi kļūda: %(error_string)s",
- "(~%(count)s results).one": "(~%(count)s rezultāts)",
- "(~%(count)s results).other": "(~%(count)s rezultāti)",
+ "(~%(count)s results)|one": "(~%(count)s rezultāts)",
+ "(~%(count)s results)|other": "(~%(count)s rezultāti)",
"%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s pievienojās %(repeats)s reizes",
"%(oneUser)sjoined %(repeats)s times": "%(oneUser)s pievienojās %(repeats)s reizes",
"%(severalUsers)sjoined": "%(severalUsers)s pievienojās",
@@ -581,7 +447,6 @@
"Search": "Meklēt",
"Search failed": "Meklēšana neizdevās",
"Searches DuckDuckGo for results": "Meklē DuckDuckGo rezultātus",
- "Searching known users": "Meklē zināmus lietotājus",
"Send a message (unencrypted)": "Nosūtīt ziņu (netiek šifrēta)",
"Send an encrypted message": "Nosūtīt šifrētu ziņu",
"Send anyway": "Nosūtīt jebkurā gadījumā",
@@ -620,14 +485,12 @@
"Tagged as: ": "Atzīmēts,kā: ",
"The main address for this room is": "Galvenā šīs istabas adrese ir",
"The phone number entered looks invalid": "Ievadītais telefona numurs izskatās nepareizs",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "Viesi nevar veikt šo darbību. Lūdzu reģistrējies vai pieraksties.",
"This email address is already in use": "Šī epasta adrese jau tiek izmantota",
"This email address was not found": "Šāda epasta adrese nav atrasta",
"The email address linked to your account must be entered.": "Ir jāievada tavam kontam piesaistītā epasta adrese.",
"The remote side failed to pick up": "Neizdevās uzņemt attālināto pusi",
"This Home Server does not support login using email address.": "Šis serveris neatbalsta pierakstīšanos ar epasta adresi.",
"This invitation was sent to an email address which is not associated with this account:": "Šis uzaicinājums tika nosūtīts uz epasta adresi, kura nav piesaistīta šim kontam:",
- "There was a problem logging in.": "Radās problēma ar pierakstīšanos.",
"This room has no local addresses": "Šai istabai nav lokālo adrešu",
"This room is not recognised.": "Šī istaba netika atpazīta.",
"These are experimental features that may break in unexpected ways": "Šīs ir eksperimentālās iespējas, kuras var būt dažādos veidos nestrādājošas",
@@ -660,7 +523,6 @@
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Notika mēģinājums ielādēt šīs istabas specifisku laikpaziņojumu sadaļu, bet tā netika atrasta.",
"Unable to add email address": "Nav iespējams pievienot epasta adresi",
"Unable to remove contact information": "Nav iespējams dzēst kontaktinformāciju",
- "Unable to restore previous session": "Nav iespējams atjaunot iepriekšējo sesiju",
"Unable to verify email address.": "Nav iespējams apstiprināt epasta adresi.",
"Unban": "Atbanot",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Nav iespējams pārliecināties, ka šis uzaicinājums tika nosūtīts uz to pašu adresi, kura ir piesaistīta tavam kontam.",
@@ -675,7 +537,6 @@
"unknown device": "nezināma ierīce",
"unknown error code": "nezināms kļūdas kods",
"Unknown (user, device) pair:": "Nezināms (lietotājs, ierīce) pāris:",
- "unknown": "nezināms",
"Unmute": "Ieslēgt skaņu",
"Unnamed Room": "Istaba bez nosaukuma",
"Cancel": "Atcelt",
@@ -732,7 +593,6 @@
"You cannot place VoIP calls in this browser.": "Tu nevari veikt VoIP zvanus šajā pārlūkā.",
"You do not have permission to post to this room": "Tev nav vajadzīgās atļaujas pievienot ziņas šajā istabā",
"You have disabled URL previews by default.": "URL priekšskatījums pēc noklusējuma Tev ir atspējots .",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "Tu ievadīji nepareizu kontaktu. Mēģini izmantot viņa Matrix ID vai epasta adresi.",
"You may wish to login with a different account, or add this email to this account.": "Tu varētu, iespējams, vēlēties pierakstīties no cita konta vai piesaistīt šo epastu šim kontam.",
"you must be a": "Tev ir jābūt",
"You must register to use this functionality": "Lai izmantotu šo funkcionalitāti, Tev ir jāreģistrējas ",
@@ -765,8 +625,6 @@
"Nov": "Nov.",
"Dec": "Dec.",
"Set a display name:": "Iestatīt redzamo vārdu:",
- "Set a Display Name": "Iestatīt redzamo vārdu",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Tavs redzamais vārds ir tas,kurš parādās citiem, kad tu sarunājies vai atrodies istabās. Kas Tu vēlētos būt?",
"This image cannot be displayed.": "Šo attēlu nav iespējams parādīt.",
"$senderDisplayName changed the room avatar to ": "$senderDisplayName nomainīja istabas attēlu uz ",
"Upload an avatar:": "Augšuplādē profila attēlu:",
@@ -787,7 +645,6 @@
"Room": "Istaba",
"Connectivity to the server has been lost.": "Savienojums ar serveri tika zaudēts.",
"Sent messages will be stored until your connection has returned.": "Nosūtītās ziņas tiks saglabātas tiklīdz savienojums tiks atjaunots.",
- "Auto-complete": "Automātiskā ieteikšana",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Sūtīt vēlreiz visas vai atcelt visas . Tu vari arī atlasīt atsevišķas ziņas, kuras sūtīt vai atcelt.",
"or": "vai",
"Active call": "Aktīvs zvans",
@@ -815,7 +672,6 @@
"were kicked": "kur tika \"izsperts\" (kick)",
"was kicked": "tika izsperts/a (kick)",
"Please select the destination room for this message": "Lūdzu izvēlies šīs ziņas mērķa istabu",
- "Welcome page": "\"Laipni lūdzam\" lapa",
"Room directory": "Istabu katalogs",
"Start chat": "Uzsākt čatu",
"New Password": "Jauna parole",
@@ -837,7 +693,6 @@
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Eksporta fails būs aizsargāts ar paroles frāzi. Tā ir jāievada šeit, lai atšifrētu failu.",
"You must join the room to see its files": "Tev ir jāpievienojas istabai, lai redzētu tās failus",
"Start new chat": "Uzsākt jaunu čatu",
- "Guest users can't invite users. Please register.": "Viesi nevar uzaicināt lietotājus. Lūdzu reģistrējies.",
"Failed to invite": "Neizdevās uzaicināt",
"Failed to invite user": "Neizdevās uzaicināt lietotāju",
"Confirm Removal": "Apstiprini dzēšanu",
@@ -914,5 +769,64 @@
"Skip": "Izlaist",
"Share without verifying": "Kopīgot bez verificēšanas",
"Ignore request": "Ignorēt pieprasījumu",
- "Encryption key request": "Šifrēšanas atslēgas pieprasījums"
+ "Encryption key request": "Šifrēšanas atslēgas pieprasījums",
+ "Add a widget": "Pievienot Widžetu",
+ "Allow": "Atļaut",
+ "and %(count)s others...|other": "un vēl %(count)s citi...",
+ "and %(count)s others...|one": "un vēl viens cits...",
+ "Cannot add any more widgets": "Nav iespējams pievienot vairāk vidžetu",
+ "Changes colour scheme of current room": "Nomaina pašreizējās istabas krāsu paleti",
+ "Delete widget": "Dzēst widžetu",
+ "Define the power level of a user": "Definēt lietotāja pakāpes līmeni",
+ "Do you want to load widget from URL:": "Vai vēlies ielādēt widžetu no URL:",
+ "Edit": "Labot",
+ "Enable automatic language detection for syntax highlighting": "Iespējot automātisko valodas noteikšanu sintakses iezīmējumiem",
+ "Hide Apps": "Slēpt aplikācijas",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Slēpt pievienoties/pamest ziņas (tas neietekmē uzaicinājumus, vai kick/bana darbības)",
+ "Hide avatar and display name changes": "Slēpt profila attēlu un rādīt redzamā vārda izmaiņas",
+ "Integrations Error": "Integrācijas kļūda",
+ "Publish this room to the public in %(domain)s's room directory?": "Publicēt šo istabu publiskajā %(domain)s katalogā?",
+ "Matrix Apps": "Matrix Aplikācijas",
+ "AM": "AM",
+ "PM": "PZ",
+ "NOTE: Apps are not end-to-end encrypted": "PIEZĪME: Aplikācijās nav ierīce-ierīce šifrēšanas",
+ "Sets the room topic": "Uzstāda istabas tēmas nosaukumu",
+ "Show Apps": "Rādīt aplikācijas",
+ "The maximum permitted number of widgets have already been added to this room.": "Atļautais vidžetu skaits jau ir sasniegts šai istabai.",
+ "To get started, please pick a username!": "Lai sāktu, lūdzu izvēlies lietotājvārdu!",
+ "Unable to create widget.": "Nav iespējams izveidot widžetu.",
+ "Unbans user with given id": "Atceļ pieejas liegumu (atbano) lietotāju pēc norādītā id",
+ "You are not in this room.": "Tu neatrodies šajā istabā.",
+ "You do not have permission to do that in this room.": "Tev nav atļaujas šai darbībai šajā istabā.",
+ "Verifies a user, device, and pubkey tuple": "Verificē lietotāju, ierīci, un publiskās atslēgas",
+ "Autocomplete Delay (ms):": "Automātiskās aizpildīšanas aiztures laiks (ms):",
+ "This Home server does not support groups": "Šis serveris neatbalsta grupas",
+ "Loading device info...": "Ielādē ierīces informāciju...",
+ "Groups": "Grupas",
+ "Create a new group": "Izveidot jaunu grupu",
+ "Create Group": "Izveidot grupu",
+ "Group Name": "Grupas nosaukums",
+ "Example": "Piemērs",
+ "Create": "Izveidot",
+ "Group ID": "Grupas ID",
+ "+example:%(domain)s": "+example:%(domain)s",
+ "Group IDs must be of the form +localpart:%(domain)s": "Grupas ID ir jābūt sekojošā formātā: +localpart:%(domain)s",
+ "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Vienīgi ir iespējams izveidot grupas tavā serverī: izmanto grupas ID, kurš beidzas ar %(domain)s",
+ "Room creation failed": "Neizdevās izveidot istabu",
+ "You are a member of these groups:": "Tu esi sekojošo grupu biedrs:",
+ "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Izveido grupu, lai prezentētu savu komūnu! Definē istabu grupu un savu personīgo mājaslapu, lai iezīmētu savu vietu Matrix universumā.",
+ "Join an existing group": "Pievienoties eksistējošai grupai",
+ "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org .": "Lai pievienotos eksistējošai grupai, Tev ir jāzina šīs grupas identifikators. Piemēram: +latvija:matrix.org .",
+ "Featured Rooms:": "Ieteiktās istabas:",
+ "Error whilst fetching joined groups": "Notika kļūda, nosakot pievienotās grupas",
+ "Featured Users:": "Ieteiktie lietotāji:",
+ "Edit Group": "Labot grupu",
+ "Automatically replace plain text Emoji": "Automātiski aizvieto tekstu ar emocijikonu (emoji)",
+ "Failed to upload image": "Neizdevās augšupielādēt attēlu",
+ "Failed to update group": "Neizdevās atjaunināt grupu",
+ "Hide avatars in user and room mentions": "Slēpt profila attēlus lietotāja un istabas pieminējumatzīmēs (@mention)",
+ "%(widgetName)s widget added by %(senderName)s": "%(senderName)s pievienoja %(widgetName)s vidžetu",
+ "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s dzēsa vidžetu %(widgetName)s",
+ "Robot check is currently unavailable on desktop - please use a web browser ": "Robotu pārbaude šobrīd nav pieejama darbvirsmas versijā. Lūdzu izmanto web pārlūku ",
+ "Revoke widget access": "Atsaukt vidžeta piekļuvi"
}
diff --git a/src/i18n/strings/ml.json b/src/i18n/strings/ml.json
index 97c9edd749..bb15c732cd 100644
--- a/src/i18n/strings/ml.json
+++ b/src/i18n/strings/ml.json
@@ -3,17 +3,14 @@
"Close": "അടയ്ക്കുക",
"Create new room": "പുതിയ റൂം സൃഷ്ടിക്കുക",
"Custom Server Options": "കസ്റ്റം സെര്വര് ഓപ്ഷനുകള്",
- "Direct Chat": "നേരിട്ടുള്ള ചാറ്റ്",
"Dismiss": "ഒഴിവാക്കുക",
"Drop here %(toAction)s": "ഇവിടെ നിക്ഷേപിക്കുക %(toAction)s",
"Error": "എറര്",
"Failed to forget room %(errCode)s": "%(errCode)s റൂം ഫോര്ഗെറ്റ് ചെയ്യുവാന് സാധിച്ചില്ല",
- "Failed to join the room": "റൂമില് അംഗമാകുവാന് സാധിച്ചില്ല",
"Favourite": "പ്രിയപ്പെട്ടവ",
"Mute": "നിശ്ശബ്ദം",
"Notifications": "നോട്ടിഫിക്കേഷനുകള്",
"Operation failed": "ശ്രമം പരാജയപ്പെട്ടു",
- "Please Register": "ദയവായി റെജിസ്റ്റർ ചെയ്യുക",
"powered by Matrix": "മാട്രിക്സില് പ്രവര്ത്തിക്കുന്നു",
"Remove": "നീക്കം ചെയ്യുക",
"Room directory": "റൂം ഡയറക്ടറി",
@@ -29,12 +26,8 @@
"Friday": "വെള്ളി",
"Saturday": "ശനി",
"OK": "ശരി",
- "Welcome page": "സ്വാഗതം",
"Failed to change password. Is your password correct?": "രഹസ്യവാക്ക് മാറ്റാന് സാധിച്ചില്ല. രഹസ്യവാക്ക് ശരിയാണോ ?",
"Continue": "മുന്നോട്ട്",
"Microphone": "മൈക്രോഫോൺ",
- "Camera": "ക്യാമറ",
- "af": "ആഫ്രിക്കാൻസ്",
- "ar-ae": "അറബി (യു.എ.ഇ.)",
- "ar-bh": "അറബി (ബഹറിൻ)"
+ "Camera": "ക്യാമറ"
}
diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json
index 9e26dfeeb6..0967ef424b 100644
--- a/src/i18n/strings/nb_NO.json
+++ b/src/i18n/strings/nb_NO.json
@@ -1 +1 @@
-{}
\ No newline at end of file
+{}
diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json
index 3a25deabd1..f770e335cf 100644
--- a/src/i18n/strings/nl.json
+++ b/src/i18n/strings/nl.json
@@ -1,125 +1,4 @@
{
- "af": "Afrikaans",
- "ar-ae": "Arabisch (U.A.E.)",
- "Direct Chat": "Privégesprek",
- "ar-bh": "Arabisch (Bahrain)",
- "ar-dz": "Arabisch (Algerije)",
- "ar-eg": "Arabisch (Egypte)",
- "ar-iq": "Arabisch (Irak)",
- "ar-jo": "Arabisch (Jordanië)",
- "ar-kw": "Arabisch (Koeweit)",
- "ar-lb": "Arabisch (Libanon)",
- "ar-ly": "Arabisch (Libië)",
- "ar-ma": "Arabisch (Marokko)",
- "ar-om": "Arabisch (Oman)",
- "ar-qa": "Arabisch (Katar)",
- "ar-sa": "Arabisch (Saoedi-Arabië)",
- "ar-sy": "Arabisch (Syrië)",
- "ar-tn": "Arabisch (Tunesië)",
- "ar-ye": "Arabisch (Jemen)",
- "be": "Wit-Russisch",
- "bg": "Bulgaars",
- "ca": "Catalaans",
- "cs": "Tsjechisch",
- "da": "Deens",
- "de-at": "Duits (Oostenrijk)",
- "de-ch": "Duits (Zwitserland)",
- "de": "Duits",
- "de-li": "Duits (Liechtenstein)",
- "de-lu": "Duits (Luxemburg)",
- "el": "Grieks",
- "en-au": "Engels (Australië)",
- "en-bz": "Engels (Belize)",
- "en-ca": "Engels (Canada)",
- "en": "Engels",
- "en-gb": "Engels (Verenigd Koningkrijk)",
- "en-ie": "Engels (Ierland)",
- "en-jm": "Engels (Jamaica)",
- "en-nz": "Engels (Nieuw Zeeland)",
- "en-tt": "Engels (Trinidad)",
- "en-us": "Engels (Verenigde Staten)",
- "en-za": "Engels (Zuid-Afrika)",
- "es-ar": "Spaans (Argentinië)",
- "es-bo": "Spaans (Bolivië)",
- "es-cl": "Spaans (Chili)",
- "es-co": "Spaans (Colombia)",
- "es-cr": "Spaans (Costa Rica)",
- "es-do": "Spaans (Dominicaanse Republiek)",
- "es-ec": "Spaans (Ecuador)",
- "es-gt": "Spaans (Guatemala)",
- "es-hn": "Spaans (Honduras)",
- "es-mx": "Spaans (Mexico)",
- "es-ni": "Spaans (Nicaragua)",
- "es-pa": "Spaans (Panama)",
- "es-pe": "Spaans (Peru)",
- "es-pr": "Spaans (Puerto Rico)",
- "es-py": "Spaans (Paraguay)",
- "es": "Spaans (Spanje)",
- "es-sv": "Spaans (El Salvador)",
- "es-uy": "Spaans (Uruguay)",
- "es-ve": "Spaans (Venezuela)",
- "et": "Estlands",
- "eu": "Baskisch (Bask)",
- "fa": "Perzisch (Farsi)",
- "fi": "Fins",
- "fo": "Faeroesisch",
- "fr-be": "Frans (België)",
- "fr-ca": "Frans (Canada)",
- "fr-ch": "Frans (Zwitserland)",
- "fr": "Frans",
- "fr-lu": "Frans (Luxemburg)",
- "ga": "Iers",
- "gd": "Keltisch (Schotland)",
- "he": "Hebreeuws",
- "hi": "Hindi",
- "hr": "Kroatisch",
- "hu": "Hongaars",
- "id": "Indonesisch",
- "is": "IJslands",
- "it-ch": "Italiaans (Zwitserland)",
- "it": "Italiaans",
- "ja": "Japans",
- "ji": "Jiddisch",
- "ko": "Koreaans",
- "lt": "Litouws",
- "lv": "Lets",
- "mk": "Macedonië (FYROM)",
- "ms": "Maleisisch",
- "mt": "Maltees",
- "nl-be": "Nederlands (België)",
- "nl": "Nederlands",
- "no": "Noors",
- "pl": "Pools",
- "pt-br": "Braziliaans Portugees",
- "pt": "Portugees",
- "rm": "Rhetoromaans",
- "ro-mo": "Roemeens (Moldavië)",
- "ro": "Roemeens",
- "ru-mo": "Russisch (Moldavië)",
- "ru": "Russisch",
- "sb": "Sorbisch",
- "sk": "Slovaaks",
- "sl": "Sloveens",
- "sq": "Albanees",
- "sr": "Servisch",
- "sv-fi": "Zweeds (Finland)",
- "sv": "Zweeds",
- "sx": "Sutu",
- "sz": "Sami (Lapland)",
- "th": "Thais",
- "tn": "Tswana",
- "tr": "Turks",
- "ts": "Tsonga",
- "uk": "Oekraïens",
- "ur": "Urdu",
- "ve": "Venda",
- "vi": "Vietnamees",
- "xh": "Xhosa",
- "zh-cn": "Chinees (PRC)",
- "zh-hk": "Chinees (Hong Kong SAR)",
- "zh-sg": "Chinees (Singapore)",
- "zh-tw": "Chinees (Taiwan)",
- "zu": "Zulu",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Voer alsjeblieft de verificatiecode in die is verstuurd naar +%(msisdn)s",
"accept": "accepteer",
"%(targetName)s accepted an invitation.": "%(targetName)s heeft een uitnodiging geaccepteerd.",
@@ -133,28 +12,22 @@
"Algorithm": "Algoritme",
"Always show message timestamps": "Laat altijd tijdstempels van berichten zien",
"Authentication": "Authenticatie",
- "all room members": "alle kamer leden",
- "all room members, from the point they are invited": "alle kamer leden, vanaf het moment dat ze uitgenodigt zijn",
- "all room members, from the point they joined": "alle kamer leden, vanaf het moment dat ze toegetreden zijn",
"an address": "een adres",
"and": "en",
"%(items)s and %(remaining)s others": "%(items)s en %(remaining)s andere",
"%(items)s and one other": "%(items)s en één andere",
"%(items)s and %(lastItem)s": "%(items)s en %(lastItem)s",
- "and %(count)s others...": {
- "other": "en %(count)s andere...",
- "one": "en één andere..."
- },
+ "and %(count)s others...|other": "en %(count)s andere...",
+ "and %(count)s others...|one": "en één andere...",
"%(names)s and %(lastPerson)s are typing": "%(names)s en %(lastPerson)s zijn aan het typen",
"%(names)s and one other are typing": "%(names)s en één andere zijn aan het typen",
"%(names)s and %(count)s others are typing": "%(names)s en %(count)s andere zijn aan het typen",
- "An email has been sent to": "Er is een email verzonden naar",
+ "An email has been sent to": "Er is een e-mail verzonden naar",
"A new password must be entered.": "Er moet een nieuw wachtwoord worden ingevoerd.",
- "%(senderName)s answered the call.": "%(senderName)s heeft deelgenomen aan het audio gesprek.",
- "anyone": "iedereen",
+ "%(senderName)s answered the call.": "%(senderName)s heeft deelgenomen aan het audiogesprek.",
"An error has occurred.": "Er is een fout opgetreden.",
- "Anyone who knows the room's link, apart from guests": "Iedereen die de kamer link weet, behalve gasten",
- "Anyone who knows the room's link, including guests": "Iedereen die de kamer link weet, inclusief gasten",
+ "Anyone who knows the room's link, apart from guests": "Iedereen die de kamerlink weet, behalve gasten",
+ "Anyone who knows the room's link, including guests": "Iedereen die de kamerlink weet, inclusief gasten",
"Are you sure?": "Weet je het zeker?",
"Are you sure you want to reject the invitation?": "Weet je zeker dat je de uitnodiging wilt weigeren?",
"Are you sure you want upload the following files?": "Weet je zeker dat je de volgende bestanden wilt uploaden?",
@@ -163,23 +36,22 @@
"%(senderName)s banned %(targetName)s.": "%(senderName)s heeft %(targetName)s verbannen.",
"Ban": "Verban",
"Banned users": "Verbannen gebruikers",
- "Bans user with given id": "Verbant de gebruiker met de gegeven id",
+ "Bans user with given id": "Verbant de gebruiker met het gegeven ID",
"Blacklisted": "Buitengesloten",
"Bug Report": "Bug report",
"Bulk Options": "Bulk opties",
"Call Timeout": "Gesprek time-out",
"Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Kan niet met de homeserver verbinden - controleer alsjeblieft je verbinding en wees zeker dat je homeserver's SSL certificaat vertrouwd wordt.",
- "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts .": "Kan niet met de homeserver verbinden via HTTP wanneer er een HTTPS URL in je browser balk staat. Gebruik HTTPS of activeer onveilige scripts .",
- "Can't load user settings": "Kan de gebruiker instellingen niet laden",
+ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts .": "Kan niet met de thuisserver verbinden via HTTP wanneer er een HTTPS-URL in je browser balk staat. Gebruik HTTPS of activeer onveilige scripts .",
+ "Can't load user settings": "Kan de gebruikersinstellingen niet laden",
"Change Password": "Wachtwoord veranderen",
- "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s heeft zijn of haar weergave naam veranderd van %(oldDisplayName)s naar %(displayName)s.",
- "%(senderName)s changed their profile picture.": "%(senderName)s heeft zijn of haar profiel foto veranderd.",
- "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s heeft de rank van %(powerLevelDiffText)s gewijzigd.",
- "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s heeft de kamer naam van %(roomName)s gewijzigd.",
+ "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s heeft zijn of haar weergavenaam veranderd van %(oldDisplayName)s naar %(displayName)s.",
+ "%(senderName)s changed their profile picture.": "%(senderName)s heeft zijn of haar profielfoto veranderd.",
+ "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s heeft het machtsniveau van %(powerLevelDiffText)s gewijzigd.",
+ "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s heeft de kamernaam van %(roomName)s gewijzigd.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s heeft het onderwerp gewijzigd naar \"%(topic)s\".",
- "Changes to who can read history will only apply to future messages in this room": "Veranderingen aan wie de historie kan lezen worden alleen maar toegepast op toekomstige berichten in deze kamer",
+ "Changes to who can read history will only apply to future messages in this room": "Veranderingen aan wie de geschiedenis kan lezen worden alleen maar toegepast op toekomstige berichten in deze kamer",
"Changes your display nickname": "Verandert jouw weergavenaam",
- "changing room on a RoomView is not supported": "veranderen van een kamer in een RoomView wordt niet ondersteund",
"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.": "Het veranderen van het wachtwoord zal op het moment alle eind-tot-eind encryptie sleutels resetten, wat alle versleutelde chat geschiedenis onleesbaar zou maken, behalve als je eerst je kamer sleutels exporteert en achteraf opnieuw importeert. Dit zal worden verbeterd in de toekomst.",
"Clear Cache and Reload": "Legen cache en herlaad",
"Clear Cache": "Legen cache",
@@ -190,23 +62,23 @@
"click to reveal": "klik om te laten zien",
"Click to unmute video": "Klik om de demping van de video op te heffen",
"Click to unmute audio": "Klik om het dempen van het geluid op te heffen",
- "Command error": "Opdracht fout",
+ "Command error": "Opdrachtfout",
"Commands": "Opdrachten",
- "Conference call failed.": "Conferentie gesprek mislukt.",
- "Conference calling is in development and may not be reliable.": "Conferentie gesprekken zijn nog in ontwikkelingen en kunnen onbetrouwbaar zijn.",
- "Conference calls are not supported in encrypted rooms": "Conferentie gesprekken worden niet ondersteunt in versleutelde kamers",
- "Conference calls are not supported in this client": "Conferentie gesprekken worden niet ondersteunt in deze client",
+ "Conference call failed.": "Conferentiegesprek mislukt.",
+ "Conference calling is in development and may not be reliable.": "Conferentiegesprekken zijn nog in ontwikkelingen en kunnen onbetrouwbaar zijn.",
+ "Conference calls are not supported in encrypted rooms": "Conferentiegesprekken worden niet ondersteunt in versleutelde kamers",
+ "Conference calls are not supported in this client": "Conferentiegesprekken worden niet ondersteunt in deze client",
"Confirm password": "Bevestigen wachtwoord",
"Confirm your new password": "Bevestig je nieuwe wachtwoord",
"Continue": "Doorgaan",
- "Could not connect to the integration server": "Mislukt om te verbinden met de integratie server",
+ "Could not connect to the integration server": "Mislukt om te verbinden met de integratieserver",
"Cancel": "Annuleren",
"a room": "een ruimte",
"Accept": "Accepteren",
"Active call (%(roomName)s)": "Actief gesprek (%(roomName)s)",
"Add": "Toevoegen",
"Add a topic": "Een onderwerp toevoegen",
- "Admin tools": "Beheerhulpmiddelen",
+ "Admin Tools": "Beheerhulpmiddelen",
"And %(count)s more...": "Nog %(count)s andere...",
"VoIP": "VoiP",
"Missing Media Permissions, click here to request.": "Ontbrekende mediatoestemmingen, klik hier om aan te vragen.",
@@ -224,19 +96,17 @@
"Are you sure you want to upload the following files?": "Weet u zeker dat u de volgende bestanden wil uploaden?",
"Click here to join the discussion!": "Klik hier om mee te doen aan de discussie!",
"Close": "Sluiten",
- "%(count)s new messages.one": "%(count)s nieuw bericht",
+ "%(count)s new messages|one": "%(count)s nieuw bericht",
"Create new room": "Een nieuwe kamer maken",
"Custom Server Options": "Aangepaste serverinstellingen",
"Dismiss": "Afwijzen",
"Drop here %(toAction)s": "%(toAction)s hier naartoe verplaatsen",
"Error": "Fout",
"Failed to forget room %(errCode)s": "Ruimte vergeten mislukt %(errCode)s",
- "Failed to join the room": "Kamer binnengaan mislukt",
"Favourite": "Favoriet",
"Mute": "Dempen",
"Notifications": "Meldingen",
"Operation failed": "Actie mislukt",
- "Please Register": "Registreer Alstublieft",
"powered by Matrix": "mogelijk gemaakt door Matrix",
"Remove": "Verwijderen",
"Room directory": "Kamerlijst",
@@ -250,7 +120,6 @@
"Thursday": "Donderdag",
"Friday": "Vrijdag",
"Saturday": "Zaterdag",
- "Welcome page": "Welkomstpagina",
"Search": "Zoeken",
"OK": "OK",
"Failed to change password. Is your password correct?": "Wachtwoord wijzigen mislukt. Is uw wachtwoord juist?",
@@ -279,7 +148,6 @@
"Permissions": "Toestemmingen",
"Phone": "Telefoonnummer",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s heeft een %(callType)s-gesprek gestart.",
- "Press": "Druk",
"Privacy warning": "Privacywaarschuwing",
"Private Chat": "Privégesprek",
"Privileged Users": "Gebruikers met rechten",
@@ -302,23 +170,22 @@
"Start Chat": "Gesprek starten",
"Submit": "Bevestigen",
"Success": "Gereed",
- "tag as %(tagName)s": "Met %(tagName)s labelen",
"tag direct chat": "Privéchat labelen",
"Tagged as: ": "Gelabeld als: ",
- "Sun": "Zon",
- "Mon": "Maa",
- "Tue": "Din",
- "Wed": "Woe",
- "Thu": "Don",
- "Fri": "Vrij",
- "Sat": "Zat",
+ "Sun": "Zo",
+ "Mon": "Ma",
+ "Tue": "Di",
+ "Wed": "Wo",
+ "Thu": "Do",
+ "Fri": "Vr",
+ "Sat": "Za",
"Jan": "Jan",
"Feb": "Feb",
- "Mar": "Maa",
+ "Mar": "Mrt",
"Apr": "Apr",
"May": "Mei",
- "Jun": "Juni",
- "Jul": "Juli",
+ "Jun": "Jun",
+ "Jul": "Jul",
"Aug": "Aug",
"Sep": "Sep",
"Oct": "Okt",
@@ -328,23 +195,22 @@
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Set a display name:": "Weergavenaam instellen:",
- "Set a Display Name": "Weergavenaam instellen",
"Upload an avatar:": "Een avatar uploaden:",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Geen verbinding met de thuisserver - controleer je verbinding. Controleer het SSL-certificaat van de thuisserver en browser-extensies die verzoeken kunnen blokkeren.",
- "%(count)s new messages.other": "%(count)s nieuwe berichten",
+ "%(count)s new messages|other": "%(count)s nieuwe berichten",
"Create an account": "Open een account",
"Cryptography": "Cryptografie",
"Current password": "Huidig wachtwoord",
"%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s heeft de naam van de kamer verwijderd.",
- "Create a new chat or reuse an existing one": "Maak een nieuwe chat aan of gebruik een reeds bestaande",
- "Create Room": "Maak een kamer",
- "Curve25519 identity key": "Curve25519 identiteitssleutel",
+ "Create a new chat or reuse an existing one": "Maak een nieuwe chat aan of ga verder met een bestaande",
+ "Create Room": "Maak een kamer aan",
+ "Curve25519 identity key": "Curve25519-identiteitssleutel",
"/ddg is not a command": "/ddg is geen commando",
"Deactivate Account": "Account Deactiveren",
"Deactivate my account": "Mijn account deactiveren",
"Decline": "Weigeren",
"Decrypt %(text)s": "Ontsleutel %(text)s",
- "Decryption error": "Fout bij het ontsleutelen",
+ "Decryption error": "Ontsleutelfout",
"Delete": "Verwijderen",
"demote": "degraderen",
"Device already verified!": "Apparaat reeds geverifieerd!",
@@ -356,53 +222,52 @@
"Devices will not yet be able to decrypt history from before they joined the room": "Apparaten kunnen nog niet de geschiedenis van voordat ze de ruimte betraden ontsleutelen",
"Direct chats": "Privégesprekken",
"Disable Notifications": "Notificaties uitschakelen",
- "Disable markdown formatting": "Opmaak formatering uitschakelen",
"Disinvite": "Uitnodiging terugtrekken",
"Display name": "Weergavenaam",
- "Don't send typing notifications": "Geen typ notificatie sturen",
+ "Don't send typing notifications": "Geen typnotificatie sturen",
"Download %(text)s": "%(text)s Downloaden",
"Drop File Here": "Plaats Bestand Hier",
- "Ed25519 fingerprint": "Ed25519 vingerafdruk",
+ "Ed25519 fingerprint": "Ed25519-vingerafdruk",
"Email": "E-mail",
"Email address": "E-mailadres",
"Email address (optional)": "E-mailadres (optioneel)",
"Claimed Ed25519 fingerprint key": "Vereiste Ed25519 vingerafdruk sleutel",
"Custom": "Aangepast",
"Custom level": "Aangepast niveau",
- "Deops user with given id": "Ontmachtigd gebruiker met het gegeven id",
+ "Deops user with given id": "Ontmachtigd gebruiker met het gegeven ID",
"Default": "Standaard",
- "Disable inline URL previews by default": "URL voorvertoning standaard uitschakelen",
- "Displays action": "Weergeeft actie",
+ "Disable inline URL previews by default": "URL-voorvertoningen standaard uitschakelen",
+ "Displays action": "Geeft actie weer",
"Drop here to tag %(section)s": "Hiernaartoe verplaatsen om %(section)s te etiketteren",
- "Email, name or matrix ID": "E-mail, naam of matrix ID",
- "Emoji": "Emoticon",
+ "Email, name or matrix ID": "E-mail, naam of matrix-ID",
+ "Emoji": "Emoji",
"Enable encryption": "Versleuteling inschakelen",
"Enable Notifications": "Notificaties inschakelen",
"enabled": "ingeschakeld",
- "Encrypted by a verified device": "Versleuteld bij een geverifieerd apparaat",
- "Encrypted by an unverified device": "Versleuteld bij een niet geverifieerd apparaat",
+ "Encrypted by a verified device": "Versleuteld door een geverifieerd apparaat",
+ "Encrypted by an unverified device": "Versleuteld door een niet-geverifieerd apparaat",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "Versleutelde berichten zullen nog niet zichtbaar zijn op applicaties die geen versleuteling ondersteunen",
"Encrypted room": "Versleutelde ruimte",
"Encryption is enabled in this room": "Versleuteling is ingeschakeld in deze ruimte",
"Encryption is not enabled in this room": "Versleuteling is niet ingeschakeld in deze ruimte",
"%(senderName)s ended the call.": "%(senderName)s heeft opgehangen.",
- "End-to-end encryption information": "Eind-tot-eind versleuteling informatie",
- "End-to-end encryption is in beta and may not be reliable": "Eind-tot-eind versleuteling is nog in beta en kan onbetrouwbaar zijn",
+ "End-to-end encryption information": "end-to-endbeveiligingsinformatie",
+ "End-to-end encryption is in beta and may not be reliable": "End-to-endbeveiliging is nog in bèta en kan onbetrouwbaar zijn",
"Enter Code": "Voer code in",
"Enter passphrase": "Voer wachtzin in",
"Error decrypting attachment": "Fout tijdens het ontsleutelen van de bijlage",
"Error: Problem communicating with the given homeserver.": "Fout: Er doet zich een probleem voor met het communiceren met de gegeven thuisserver.",
- "Event information": "Gebeurtenis informatie",
+ "Event information": "Gebeurtenis-informatie",
"Existing Call": "Bestaande oproep",
"Export": "Exporteren",
- "Export E2E room keys": "Exporteer E2E ruimte sleutels",
+ "Export E2E room keys": "Exporteer E2E-ruimte-sleutels",
"Failed to ban user": "Niet gelukt om de gebruiker te verbannen",
"Failed to change power level": "Niet gelukt om het machtsniveau te wijzigen",
"Failed to delete device": "Niet gelukt om het apparaat te verwijderen",
- "Failed to fetch avatar URL": "Niet gelukt om de avatar URL op te halen",
+ "Failed to fetch avatar URL": "Niet gelukt om de avatar-URL op te halen",
"Failed to join room": "Niet gelukt om tot de ruimte toe te treden",
"Failed to leave room": "Niet gelukt om de ruimte te verlaten",
- "Failed to load timeline position": "Niet gelukt om de tijdlijn positie te laden",
+ "Failed to load timeline position": "Niet gelukt om de tijdlijnpositie te laden",
"Failed to lookup current room": "Niet gelukt om de huidige ruimte op te zoeken",
"Failed to mute user": "Niet gelukt om de gebruiker te dempen",
"Failed to register as guest:": "Niet gelukt om als gast te registreren:",
@@ -414,7 +279,7 @@
"Failed to set avatar.": "Niet gelukt om de avatar in te stellen.",
"Failed to set display name": "Niet gelukt om de weergavenaam in te stellen",
"Failed to set up conference call": "Niet gelukt om een vergadergesprek te maken",
- "Failed to toggle moderator status": "Niet gelukt om de moderator status te veranderen",
+ "Failed to toggle moderator status": "Niet gelukt om de moderatorstatus te veranderen",
"Failed to unban": "Niet gelukt om te ontbannen",
"Failed to upload file": "Niet gelukt om het bestand te uploaden",
"Failed to upload profile picture!": "Niet gelukt om een profiel foto te uploaden!",
@@ -423,45 +288,41 @@
"favourite": "favoriet",
"Favourites": "Favorieten",
"Fill screen": "Scherm vullen",
- "Filter room members": "Ruimte leden filteren",
+ "Filter room members": "Ruimteleden filteren",
"Forget room": "Ruimte vergeten",
"Forgot your password?": "Wachtwoord vergeten?",
"For security, this session has been signed out. Please sign in again.": "Voor veiligheidsredenen is deze sessie uitgelogd. Log alsjeblieft opnieuw in.",
- "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "In verband met veiligheidsredenen zullen alle eind-tot-eind versleutelingssleutels van deze browser verwijderd worden. Als je je gespreksgeschiedenis van toekomstige Riot sessies wilt kunnen ontsleutelen, exporteer en bewaar dan de ruimte sleutels.",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "In verband met veiligheidsredenen zullen alle end-to-endbeveiligingsleutels van deze browser verwijderd worden. Als je je gespreksgeschiedenis van toekomstige Riot sessies wilt kunnen ontsleutelen, exporteer en bewaar dan de ruimte sleutels.",
"Found a bug?": "Een fout gevonden?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s van %(fromPowerLevel)s naar %(toPowerLevel)s",
- "Guest access is disabled on this Home Server.": "Gast toegang is uitgeschakeld op deze thuisserver.",
- "Guests can't set avatars. Please register.": "Gasten kunnen geen avatars instellen. Registreer je alsjeblieft.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Gast gebruikers kunnen geen nieuwe ruimtes aanmaken. Registreer je om een nieuwe ruimte aan te maken en een gesprek te starten.",
- "Guest users can't upload files. Please register to upload.": "Gast gebruikers kunnen geen bestanden uploaden. Registreer je om te uploaden.",
- "Guests can't use labs features. Please register.": "Gasten kunnen geen labs mogelijkheden gebruiken. Registreer je alsjeblieft.",
+ "Guest access is disabled on this Home Server.": "Gasttoegang is uitgeschakeld op deze thuisserver.",
"Guests cannot join this room even if explicitly invited.": "Gasten kunnen niet tot deze ruimte toetreden, zelfs als ze expliciet uitgenodigd zijn.",
"had": "had",
"Hangup": "Ophangen",
"Hide read receipts": "Leesbewijzen verbergen",
- "Hide Text Formatting Toolbar": "Tekst formaterings-gereedschapsbalk verbergen",
+ "Hide Text Formatting Toolbar": "Tekstopmaakgereedschapsbalk verbergen",
"Historical": "Historische",
"Home": "Home",
"Homeserver is": "Thuisserver is",
"Identity Server is": "Identiteitsserver is",
"I have verified my email address": "Ik heb mijn e-mailadres geverifieerd",
"Import": "Importeren",
- "Import E2E room keys": "E2E ruimte sleutels importeren",
+ "Import E2E room keys": "E2E-ruimte-sleutels importeren",
"Incoming call from %(name)s": "Inkomende oproep van %(name)s",
"Incoming video call from %(name)s": "Inkomende video-oproep van %(name)s",
"Incoming voice call from %(name)s": "Inkomende spraakoproep van %(name)s",
"Incorrect username and/or password.": "Incorrecte gebruikersnaam en/of wachtwoord.",
- "Incorrect verification code": "Incorrecte verificatie code",
- "Interface Language": "Interface Taal",
- "Invalid alias format": "Ongeldig naam formaat",
- "Invalid address format": "Ongeldig adres formaat",
+ "Incorrect verification code": "Incorrecte verificatiecode",
+ "Interface Language": "Interfacetaal",
+ "Invalid alias format": "Ongeldig naamformaat",
+ "Invalid address format": "Ongeldig adresformaat",
"Invalid Email Address": "Ongeldig e-mailadres",
"Invalid file%(extra)s": "Ongeldig bestand%(extra)s",
"%(senderName)s invited %(targetName)s.": "%(senderName)s heeft %(targetName)s uitgenodigd.",
"Invite new room members": "Nieuwe ruimte leden uitnodigen",
"Invited": "Uitgenodigd",
"Invites": "Uitnodigingen",
- "Invites user with given id to current room": "Nodigt de gebruiker met het gegeven id uit in de huidige ruimte",
+ "Invites user with given id to current room": "Nodigt de gebruiker met het gegeven ID uit in de huidige ruimte",
"'%(alias)s' is not a valid format for an address": "'%(alias)s' is niet een geldig formaat voor een adres",
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' is niet een geldig formaat voor een naam",
"%(displayName)s is typing": "%(displayName)s is aan het typen",
@@ -480,53 +341,55 @@
"left": "verlaten",
"%(targetName)s left the room.": "%(targetName)s heeft de ruimte verlaten.",
"Level:": "Niveau:",
- "List this room in %(domain)s's room directory?": "Deze ruimte in %(domain)s's ruimte catalogus vermelden?",
"Local addresses for this room:": "Lokale adressen voor deze ruimte:",
"Logged in as:": "Ingelogd als:",
"Login as guest": "Als gast inloggen",
"Logout": "Uitloggen",
"Low priority": "Lage prioriteit",
- "%(senderName)s made future room history visible to": "%(senderName)s heeft de toekomstige ruimte geschiedenis zichtbaar gemaakt voor",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s heeft de toekomstige ruimtegeschiedenis zichtbaar gemaakt voor alle kamerleden, vanaf het moment dat ze uitgenodigt zijn.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s heeft de toekomstige ruimte geschiedenis zichtbaar gemaakt voor alle kamerleden, vanaf het moment dat ze toegetreden zijn.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s heeft de toekomstige ruimte geschiedenis zichtbaar gemaakt voor alle kamerleden.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s heeft de toekomstige ruimte geschiedenis zichtbaar gemaakt voor iedereen.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s heeft de toekomstige ruimte geschiedenis zichtbaar gemaakt voor onbekend (%(visibility)s).",
"Manage Integrations": "Integraties beheren",
- "Markdown is disabled": "Opmaak is uitgeschakeld",
- "Markdown is enabled": "Opmaak ingeschakeld",
- "matrix-react-sdk version:": "matrix-react-sdk versie:",
+ "Markdown is disabled": "Markdown is uitgeschakeld",
+ "Markdown is enabled": "Markdown ingeschakeld",
+ "matrix-react-sdk version:": "matrix-react-sdk-versie:",
"Members only": "Alleen leden",
"Message not sent due to unknown devices being present": "Bericht niet verzonden doordat er een onbekende apparaten aanwezig zijn",
"Missing room_id in request": "Het room_id mist in het verzoek",
"Missing user_id in request": "De user_id mist in het verzoek",
- "Mobile phone number": "Mobiel telefoonnummer",
- "Mobile phone number (optional)": "Mobiel telefoonnummer (optioneel)",
+ "Mobile phone number": "Mobiele-telefoonnummer",
+ "Mobile phone number (optional)": "Mobiele-telefoonnummer (optioneel)",
"Never send encrypted messages to unverified devices from this device": "Nooit versleutelde berichten vanaf dit apparaat naar niet geverifieerde apparaten versturen",
"Never send encrypted messages to unverified devices in this room": "Nooit versleutelde berichten naar niet geverifieerde apparaten sturen in deze ruimte",
"Never send encrypted messages to unverified devices in this room from this device": "Nooit vanaf dit apparaat versleutelde berichten naar niet geverifieerde apparaten in deze ruimte sturen",
"New address (e.g. #foo:%(localDomain)s)": "Nieuw adres (bijv. #foo:%(localDomain)s)",
- "New Composer & Autocomplete": "Nieuwe Componist & Automatisch Aanvullen",
"New passwords don't match": "Nieuwe wachtwoorden komen niet overeen",
"New passwords must match each other.": "Nieuwe wachtwoorden moeten overeenkomen.",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Zodra versleuteling in een kamer is ingeschakeld kan het niet meer worden uitgeschakeld (voor nu)",
- "Once you've followed the link it contains, click below": "Zodra je de link dat het bevat hebt gevolgd, klik hieronder",
+ "Once you've followed the link it contains, click below": "Zodra je de link dat het bevat hebt gevolgd, klik hieronder",
"Only people who have been invited": "Alleen personen die zijn uitgenodigd",
"Otherwise, click here to send a bug report.": "Klik anders hier om een foutmelding te versturen.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Bekijk je e-mail en klik op de link die het bevat. Zodra dit klaar is, klik op verder gaan.",
- "Power level must be positive integer.": "Machtsniveau moet een positief heel getal zijn.",
+ "Power level must be positive integer.": "Machtsniveau moet een positief geheel getal zijn.",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s heeft zijn of haar weergavenaam (%(oldDisplayName)s) verwijderd.",
"%(senderName)s removed their profile picture.": "%(senderName)s heeft zijn of haar profielfoto verwijderd.",
"Failed to kick": "Niet gelukt om te er uit te zetten",
"Press to start a chat with someone": "Druk op om een gesprek met iemand te starten",
"Remove %(threePid)s?": "%(threePid)s verwijderen?",
- "%(senderName)s requested a VoIP conference.": "%(senderName)s heeft een VoIP gesprek aangevraagd.",
+ "%(senderName)s requested a VoIP conference.": "%(senderName)s heeft een VoIP-gesprek aangevraagd.",
"Report it": "Melden",
- "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.": "Het wachtwoord veranderen betekent momenteel dat alle eind-tot-eind versleutelingssleutels op alle apparaten veranderen waardoor versleutelde gespreksgeschiedenis onleesbaar wordt, behalve als je eerst de ruimte sleutels exporteert en daarna opnieuw importeert. Dit zal in de toekomst verbeterd worden.",
+ "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.": "Het wachtwoord veranderen betekent momenteel dat alle end-to-endbeveiligingssleutels op alle apparaten veranderen waardoor versleutelde gespreksgeschiedenis onleesbaar wordt, behalve als je eerst de ruimte sleutels exporteert en daarna opnieuw importeert. Dit zal in de toekomst verbeterd worden.",
"restore": "herstellen",
"Results from DuckDuckGo": "Resultaten van DuckDuckGo",
"Return to app": "Naar de app terugkeren",
"Return to login screen": "Naar het inlogscherm terugkeren",
- "Riot does not have permission to send you notifications - please check your browser settings": "Riot heeft geen permissie om je notificaties te versturen - controleer je browser instellingen",
+ "Riot does not have permission to send you notifications - please check your browser settings": "Riot heeft geen permissie om je notificaties te versturen - controleer je browserinstellingen",
"Riot was not given permission to send notifications - please try again": "Riot heeft geen permissie gekregen om notificaties te versturen - probeer het opnieuw",
"riot-web version:": "riot-web versie:",
"Room %(roomId)s not visible": "Ruimte %(roomId)s is niet zichtbaar",
- "Room Colour": "Ruimte Kleur",
+ "Room Colour": "Ruimtekleur",
"Room contains unknown devices": "De ruimte bevat onbekende apparaten",
"Room name (optional)": "Ruimtenaam (optioneel)",
"%(roomName)s does not exist.": "%(roomName)s bestaat niet.",
@@ -537,32 +400,31 @@
"Scroll to unread messages": "Scroll naar ongelezen berichten",
"Search failed": "Zoeken mislukt",
"Searches DuckDuckGo for results": "Zoekt op DuckDuckGo voor resultaten",
- "Searching known users": "Aan het zoeken naar bekende gebruikers",
"Seen by %(userName)s at %(dateTime)s": "Gezien bij %(userName)s op %(dateTime)s",
"Send a message (unencrypted)": "Stuur een bericht (onversleuteld)",
"Send an encrypted message": "Stuur een versleuteld bericht",
"Send anyway": "Alsnog versturen",
- "Sender device information": "Afzender apparaat informatie",
- "Send Reset Email": "Stuur Reset E-mail",
+ "Sender device information": "Afzenderapparaatinformatie",
+ "Send Reset Email": "Stuur Reset-E-mail",
"sent an image": "stuurde een afbeelding",
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s stuurde een afbeelding.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s stuurde een uitnodiging naar %(targetDisplayName)s om tot de ruimte toe te treden.",
"sent a video": "stuurde een video",
- "Server error": "Server fout",
+ "Server error": "Serverfout",
"Server may be unavailable or overloaded": "De server kan onbereikbaar of overbelast zijn",
"Server may be unavailable, overloaded, or search timed out :(": "De server is misschien onbereikbaar, overbelast of het zoeken duurde te lang :(",
"Server may be unavailable, overloaded, or the file too big": "De server is misschien onbereikbaar, overbelast of het bestand is te groot",
"Server may be unavailable, overloaded, or you hit a bug.": "De server is misschien onbereikbaar, overbelast of je bent tegen een fout aangelopen.",
"Server unavailable, overloaded, or something else went wrong.": "De server is onbereikbaar, overbelast of iets anders ging fout.",
- "Session ID": "Sessie ID",
+ "Session ID": "Sessie-ID",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s heeft %(targetName)s de ruimte uitgestuurd.",
"Kick": "Er uit sturen",
- "Kicks user with given id": "Stuurt de gebruiker met het gegeven id er uit",
+ "Kicks user with given id": "Stuurt de gebruiker met het gegeven ID er uit",
"%(senderName)s set a profile picture.": "%(senderName)s heeft een profielfoto ingesteld.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s heeft zijn of haar weergavenaam naar %(displayName)s veranderd.",
"Set": "Instellen",
"Show panel": "Paneel weergeven",
- "Show Text Formatting Toolbar": "Tekst Opmaak Werkbalk Weergeven",
+ "Show Text Formatting Toolbar": "Tekstopmaakwerkbalk Weergeven",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Laat de tijd in twaalf uur formaat zien (bijv. 2:30pm)",
"Signed Out": "Uitgelogd",
"Sign in": "Inloggen",
@@ -572,12 +434,11 @@
"since they were invited": "sinds ze zijn uitgenodigd",
"Some of your messages have not been sent.": "Een paar van je berichten zijn niet verstuurd.",
"Someone": "Iemand",
- "Sorry, this homeserver is using a login which is not recognised ": "Sorry, deze thuisserver gebruikt een inlog methode die niet wordt herkend. ",
- "The default role for new room members is": "De standaard rol voor nieuwe ruimteleden is",
+ "Sorry, this homeserver is using a login which is not recognised ": "Sorry, deze thuisserver gebruikt een inlogmethode die niet wordt herkend. ",
+ "The default role for new room members is": "De standaardrol voor nieuwe ruimteleden is",
"The main address for this room is": "Het hoofdadres voor deze ruimte is",
"The phone number entered looks invalid": "Het telefoonnummer dat ingevoerd is ziet er ongeldig uit",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "De versleutelingssleutel die je hebt verstrekt komt overeen met de versleutelingssleutel die je hebt ontvangen van %(userId)s's apparaat %(deviceId)s. Apparaat is gemarkeerd als geverifieerd.",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "Deze actie kan niet door een gastaccount worden uitgevoerd. Registreer je om deze actie uit te kunnen voeren.",
"This email address is already in use": "Dit e-mailadres is al in gebruik",
"This email address was not found": "Dit e-mailadres was niet gevonden",
"%(actionVerb)s this person?": "%(actionVerb)s deze persoon?",
@@ -587,16 +448,15 @@
"The remote side failed to pick up": "De andere kant heeft niet opgenomen",
"This Home Server does not support login using email address.": "Deze Thuisserver ondersteunt het inloggen met een e-mailadres niet.",
"This invitation was sent to an email address which is not associated with this account:": "Deze uitnodiging was naar een e-mailadres gestuurd die niet geassocieerd is met dit account:",
- "There was a problem logging in.": "Er was een probleem met het inloggen.",
"This room has no local addresses": "Deze ruimte heeft geen lokale adressen",
"This room is not recognised.": "Deze ruimte wordt niet herkend.",
"These are experimental features that may break in unexpected ways": "Dit zijn experimentele functies die misschien kunnen breken op onverwachte manieren",
"The visibility of existing history will be unchanged": "De zichtbaarheid van de bestaande geschiedenis zal onveranderd blijven",
"This doesn't appear to be a valid email address": "Het ziet er niet naar uit dat dit een geldig e-mailadres is",
- "This is a preview of this room. Room interactions have been disabled": "Dit is een voorvertoning van de ruimte. Ruimte interacties zijn uitgeschakeld",
+ "This is a preview of this room. Room interactions have been disabled": "Dit is een voorvertoning van de ruimte. Ruimte-interacties zijn uitgeschakeld",
"This phone number is already in use": "Dit telefoonnummer is al in gebruik",
"This room": "Deze ruimte",
- "This room is not accessible by remote Matrix servers": "Deze ruimte is niet toegankelijk voor afgelegen Matrix servers",
+ "This room is not accessible by remote Matrix servers": "Deze ruimte is niet toegankelijk voor afgelegen Matrix-servers",
"This room's internal ID is": "Het interne ID van deze ruimte is",
"times": "keer",
"To ban users": "om gebruikers te verbannen",
@@ -614,17 +474,15 @@
"To send events of type": "Om een bepaalde soort gebeurtenissen te sturen",
"To send messages": "Om berichten te versturen",
"to start a chat with someone": "om een gesprek met iemand te starten",
- "to tag as %(tagName)s": "om als %(tagName)s te etiketteren",
"to tag direct chat": "als directe chat etiketteren",
- "To use it, just wait for autocomplete results to load and tab through them.": "Om het te gebruiken, wacht voor de automatisch aanvullen resultaten om te laden en kijk er door heen.",
+ "To use it, just wait for autocomplete results to load and tab through them.": "Om het te gebruiken, wacht tot de automatisch aangevulde resultaten geladen zijn en tab er doorheen.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Je probeerde een specifiek punt in de tijdlijn van deze ruimte te laden maar je hebt niet de permissie om de desbetreffende berichten te zien.",
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Het is niet gelukt om een specifiek punt in de tijdlijn van deze ruimte te laden.",
- "Turn Markdown off": "Doe opmaak uit",
- "Turn Markdown on": "Zet opmaak aan",
+ "Turn Markdown off": "Zet Markdown uit",
+ "Turn Markdown on": "Zet Markdown aan",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s heeft eind-tot-eind versleuteling aangezet (algoritme %(algorithm)s).",
"Unable to add email address": "Niet mogelijk om e-mailadres toe te voegen",
"Unable to remove contact information": "Niet mogelijk om contactinformatie te verwijderen",
- "Unable to restore previous session": "Niet mogelijk om de vorige sessie te herstellen",
"Unable to verify email address.": "Niet mogelijk om het e-mailadres te verifiëren.",
"Unban": "Ontbannen",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s ontbande %(targetName)s.",
@@ -635,21 +493,20 @@
"Undecryptable": "Niet ontsleutelbaar",
"Unencrypted room": "Ontsleutelde ruimte",
"unencrypted": "ontsleuteld",
- "Unencrypted message": "Niet versleuteld bericht",
+ "Unencrypted message": "Niet-versleuteld bericht",
"unknown caller": "onbekende beller",
"Unknown command": "Onbekende commando",
"unknown device": "Onbekend apparaat",
"Unknown room %(roomId)s": "Onbekende ruimte %(roomId)s",
"Unknown (user, device) pair:": "Onbekend (gebruiker, apparaat) paar:",
- "unknown": "onbekend",
"Unmute": "Niet dempen",
"Unnamed Room": "Naamloze Ruimte",
"Unrecognised command:": "Onbekende commando:",
"Unrecognised room alias:": "Onbekende ruimte alias:",
"Unverified": "Niet geverifieerd",
- "Uploading %(filename)s and %(count)s others.zero": "Aan het uploaden %(filename)s",
- "Uploading %(filename)s and %(count)s others.one": "%(filename)s en %(count)s andere aan het uploaden",
- "Uploading %(filename)s and %(count)s others.other": "%(filename)s en %(count)s anderen aan het uploaden",
+ "Uploading %(filename)s and %(count)s others|zero": "Aan het uploaden %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "%(filename)s en %(count)s andere aan het uploaden",
+ "Uploading %(filename)s and %(count)s others|other": "%(filename)s en %(count)s anderen aan het uploaden",
"uploaded a file": "Bestand geüpload",
"Upload avatar": "Avatar uploaden",
"Upload Failed": "Uploaden Mislukt",
@@ -657,25 +514,25 @@
"Upload file": "Bestand uploaden",
"Upload new:": "Nieuwe uploaden:",
"Usage": "Gebruik",
- "Use compact timeline layout": "Gebruik een compacte tijdlijn indeling",
+ "Use compact timeline layout": "Gebruik een compacte tijdlijnindeling",
"Use with caution": "Gebruik met behoedzaamheid",
- "User ID": "Gebruiker ID",
- "User Interface": "Gebruiker Interface",
+ "User ID": "Gebruikers-ID",
+ "User Interface": "Gebruikersinterface",
"%(user)s is a": "%(user)s is een",
"User name": "Gebruikersnaam",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (macht %(powerLevelNumber)s)",
"Username invalid: %(errMessage)s": "Gebruikersnaam ongeldig: %(errMessage)s",
"Users": "Gebruikers",
"User": "Gebruiker",
- "Verification Pending": "Verificatie Wachtend",
+ "Verification Pending": "Verificatie Uitstaand",
"Verification": "Verificatie",
"verified": "geverifieerd",
"Verified": "Geverifieerd",
"Verified key": "Geverifieerde sleutel",
"Video call": "Video-oproep",
"Voice call": "Spraakoproep",
- "VoIP conference finished.": "VoIP vergadering beëindigd.",
- "VoIP conference started.": "VoIP vergadering gestart.",
+ "VoIP conference finished.": "VoIP-vergadering beëindigd.",
+ "VoIP conference started.": "VoIP-vergadering gestart.",
"VoIP is unsupported": "VoIP is niet ondersteund",
"(could not connect media)": "(kan media niet verbinden)",
"(no answer)": "(geen antwoord)",
@@ -683,27 +540,26 @@
"(warning: cannot be disabled again!)": "(waarschuwing: kan niet meer uitgezet worden!)",
"Warning!": "Waarschuwing!",
"WARNING: Device already verified, but keys do NOT MATCH!": "WAARSCHUWING: Apparaat al geverifieerd, maar de sleutels KOMEN NIET OVEREEN!",
- "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!": "WAARSCHUWING: SLEUTEL VERIFICATIE IS MISLUKT! De ondertekende sleutel voor %(userId)s en apparaat %(deviceId)s is \"%(fprint)s\" wat niet overeenkomt met de verschafte sleutel \"%(fingerprints)s\". Dit kan betekenen dat je communicatie onderschept wordt!",
+ "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!": "WAARSCHUWING: SLEUTELVERIFICATIE IS MISLUKT! De ondertekende sleutel voor %(userId)s en apparaat %(deviceId)s is \"%(fprint)s\" wat niet overeenkomt met de verschafte sleutel \"%(fingerprint)s\". Dit kan betekenen dat je communicatie onderschept wordt!",
"Who can access this room?": "Wie heeft toegang tot deze ruimte?",
"Who can read history?": "Wie kan de geschiedenis lezen?",
"Who would you like to add to this room?": "Wie wil je aan deze ruimte toevoegen?",
"Who would you like to communicate with?": "Met wie zou je willen communiceren?",
- "%(senderName)s withdrew %(targetName)s's invitation.": "%(sernderName)s trok %(targetName)s's uitnodiging terug.",
+ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s trok %(targetName)s's uitnodiging terug.",
"Would you like to accept or decline this invitation?": "Wil je deze uitnodiging accepteren of afwijzen ?",
- "You already have existing direct chats with this user:": "Je hebt al bestaande privé gesprekken met deze gebruiker:",
+ "You already have existing direct chats with this user:": "Je hebt al bestaande privé-gesprekken met deze gebruiker:",
"You are already in a call.": "Je bent al in gesprek.",
"You're not in any rooms yet! Press to make a room or to browse the directory": "Je zit nog niet in een ruimte! Druk op om een ruimte te maken of om door de catalogus te bladeren",
"You are trying to access %(roomName)s.": "Je probeert in %(roomName)s toe te treden.",
"You cannot place a call with yourself.": "Je kan geen spraakoproep met jezelf maken.",
- "You cannot place VoIP calls in this browser.": "Je kan geen VoIP oproepen in deze browser doen.",
+ "You cannot place VoIP calls in this browser.": "Je kan geen VoIP-oproepen in deze browser doen.",
"You do not have permission to post to this room": "Je hebt geen permissie om in deze ruimte te praten",
"You have been banned from %(roomName)s by %(userName)s.": "Je bent verbannen van %(roomName)s door %(userName)s.",
"You have been invited to join this room by %(inviterName)s": "Je bent in deze ruimte uitgenodigd door %(inviterName)s",
"You have been kicked from %(roomName)s by %(userName)s.": "Je bent uit %(roomName)s gezet door %(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": "Je bent op alle apparaten uitgelegd en je zal niet langer notificaties ontvangen. Om notificaties weer aan te zetten, log op elk apparaat opnieuw in",
- "You have disabled URL previews by default.": "Je hebt URL voorvertoningen standaard uitgezet .",
- "You have enabled URL previews by default.": "Je hebt URL voorvertoningen standaard aangezet .",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "Je hebt een ongeldig contact ingevoerd. Probeer zijn of haar Matrix ID of e-mailadres te gebruiken.",
+ "You have disabled URL previews by default.": "Je hebt URL-voorvertoningen standaard uitgezet .",
+ "You have enabled URL previews by default.": "Je hebt URL-voorvertoningen standaard aangezet .",
"You have no visible notifications": "Je hebt geen zichtbare notificaties",
"You may wish to login with a different account, or add this email to this account.": "Je wilt misschien met een ander account inloggen of deze e-mail aan je account toevoegen.",
"you must be a": "wat je moet zijn is een",
@@ -711,14 +567,14 @@
"You need to be able to invite users to do that.": "Je moet bevoegd zijn om gebruikers uit te nodigen om dat te doen.",
"You need to be logged in.": "Je moet ingelogd zijn.",
"You need to enter a user name.": "Je moet een gebruikersnaam invoeren.",
- "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Het ziet er naar uit dat je e-mailadres niet met een Matrix ID geassocieerd is op deze thuisserver.",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Het ziet er naar uit dat je e-mailadres niet met een Matrix-ID geassocieerd is op deze thuisserver.",
"Your password has been reset": "Je wachtwoord is gereset",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Je wachtwoord is succesvol veranderd. Je zal geen notificaties op andere apparaten ontvangen totdat je er opnieuw inlogd",
"You seem to be in a call, are you sure you want to quit?": "Het ziet er naar uit dat je in een gesprek zit, weet je zeker dat je wilt afsluiten?",
"You seem to be uploading files, are you sure you want to quit?": "Het ziet er naar uit dat je bestanden aan het uploaden bent, weet je zeker dat je wilt afsluiten?",
"You should not yet trust it to secure data": "Je moet het nog niet vertrouwen om gegevens te beveiligen",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Je zal deze verandering niet terug kunnen draaien omdat je de gebruiker naar hetzelfde machtsniveau als jezelf promoot.",
- "Your home server does not support device management.": "Je thuisserver ondersteund geen apparaat beheer.",
+ "Your home server does not support device management.": "Je thuisserver ondersteund geen apparaatbeheer.",
"This server does not support authentication with a phone number.": "Deze server ondersteunt geen authenticatie met een telefoonnummer.",
"Missing password.": "Het wachtwoord mist.",
"Passwords don't match.": "De wachtwoorden komen niet overeen.",
@@ -738,10 +594,9 @@
"Room": "Ruimte",
"Connectivity to the server has been lost.": "De connectiviteit naar de server is verloren.",
"Sent messages will be stored until your connection has returned.": "Verstuurde berichten zullen opgeslagen worden tot je connectie weer terug is.",
- "Auto-complete": "Automatisch aanvullen",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Verstuur alle of annuleer alle nu. Je kan ook individuele berichten selecteren om te versturen of te annuleren.",
- "(~%(count)s results).one": "(~%(count)s resultaat)",
- "(~%(count)s results).other": "(~%(count)s resultaten)",
+ "(~%(count)s results)|one": "(~%(count)s resultaat)",
+ "(~%(count)s results)|other": "(~%(count)s resultaten)",
"or": "of",
"Active call": "Actief gesprek",
"bold": "vetgedrukt",
@@ -757,25 +612,25 @@
"%(severalUsers)sjoined": "%(severalUsers)s zijn toegretreden",
"%(oneUser)sjoined": "%(oneUser)s is toegetreden",
"%(severalUsers)sleft %(repeats)s times": "%(severalUsers)s zijn %(repeats)s vertrokken",
- "%(oneUser)sleft %(repeats)s times": "%(oneUser) is %(repeats)s vertrokken",
+ "%(oneUser)sleft %(repeats)s times": "%(oneUser)s is %(repeats)s vertrokken",
"%(severalUsers)sleft": "%(severalUsers)s zijn vertrokken",
"%(oneUser)sleft": "%(oneUser)s is vertrokken",
- "%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers) zijn %(repeats)s toegetreden en weer vertrokken",
+ "%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers)szijn %(repeats)s toegetreden en weer vertrokken",
"%(oneUser)sjoined and left %(repeats)s times": "%(oneUser)s is %(repeats)s keer toegetreden en vertrokken",
"%(severalUsers)sjoined and left": "%(severalUsers)s zijn toegetreden en vertrokken",
"%(oneUser)sjoined and left": "%(oneUser)s is toegetreden en weer vertrokken",
"%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)s zijn %(repeats)s keer vertrokken en opnieuw toegetreden",
"%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)s is %(repeats)s keer vertrokken en opnieuw toegetreden",
- "%(severalUsers)sleft and rejoined": "%(severalUsers) zijn vertrokken en opnieuw toegetreden",
+ "%(severalUsers)sleft and rejoined": "%(severalUsers)s zijn vertrokken en opnieuw toegetreden",
"%(oneUser)sleft and rejoined": "%(oneUser)s is vertrokken en opnieuw toegetreden",
- "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)s hebben hun uitnodiging uitnodiging %(repeats)s keer afgewezen",
+ "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)s hebben hun uitnodiging %(repeats)s keer afgewezen",
"%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)s heeft zijn of haar uitnodiging %(repeats)s keer afgewezen",
"%(severalUsers)srejected their invitations": "%(severalUsers)s hebben hun uitnodiging afgewezen",
"%(oneUser)srejected their invitation": "%(oneUser)s heeft zijn of haar uitnodiging afgewezen",
- "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers) hun uitnodiging is %(repeats)s keer terug getrokken",
+ "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)shun uitnodiging is %(repeats)s keer terug getrokken",
"%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)s zijn of haar uitnodiging is %(repeats)s keer terug getrokken",
"%(severalUsers)shad their invitations withdrawn": "%(severalUsers)s hun uitnodiging is terug getrokken",
- "%(oneUser)shad their invitation withdrawn": "%(oneUser) zijn of haar uitnodiging is terug getrokken",
+ "%(oneUser)shad their invitation withdrawn": "%(oneUser)szijn of haar uitnodiging is terug getrokken",
"were invited %(repeats)s times": "is %(repeats)s keer uitgenodigd",
"was invited %(repeats)s times": "was %(repeats)s keer uitgenodigd",
"were invited": "waren uitgenodigd",
@@ -796,32 +651,31 @@
"%(oneUser)schanged their name %(repeats)s times": "%(oneUser)s heeft zijn of haar naam %(repeats)s keer aangepast",
"%(severalUsers)schanged their name": "%(severalUsers)s hebben hun naam aangepast",
"%(oneUser)schanged their name": "%(oneUser)s heeft zijn of haar naam aangepast",
- "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers) hebben hun avatar %(repeats)s keer aangepast",
+ "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)shebben hun avatar %(repeats)s keer aangepast",
"%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)s heeft zijn of haar avatar %(repeats)s keer aangepast",
"%(severalUsers)schanged their avatar": "%(severalUsers)s hebben hun avatar aangepast",
"%(oneUser)schanged their avatar": "%(oneUser)s heeft zijn of haar avatar aangepast",
- "Please select the destination room for this message": "Selecteer de destinatie ruimte voor dit bericht",
+ "Please select the destination room for this message": "Selecteer de destinatie-ruimte voor dit bericht",
"New Password": "Nieuw wachtwoord",
- "Start automatically after system login": "Start automatisch na systeem aanmelding",
- "Desktop specific": "Desktop specifiek",
- "Analytics": "Analisaties",
- "Opt out of analytics": "Uitschrijven voor gegevens analisaties",
+ "Start automatically after system login": "Start automatisch na systeem-aanmelding",
+ "Desktop specific": "Desktop-specifiek",
+ "Analytics": "Gegevensanalyse",
+ "Opt out of analytics": "Uitschrijven voor gegevensanalyse",
"Options": "Opties",
- "Riot collects anonymous analytics to allow us to improve the application.": "Riot verzameld anonieme analisaties dat het mogelijk maakt om de applicatie te verbeteren.",
+ "Riot collects anonymous analytics to allow us to improve the application.": "Riot verzameld anonieme gegevensanalyse die het mogelijk maakt om de applicatie te verbeteren.",
"Passphrases must match": "Wachtzinnen moeten overeenkomen",
"Passphrase must not be empty": "Wachtzin mag niet leeg zijn",
"Export room keys": "Ruimtesleutels exporteren",
"Confirm passphrase": "Wachtzin bevestigen",
"Import room keys": "Ruimtesleutels importeren",
"File to import": "Bestand om te importeren",
- "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dit proces maakt het mogelijk om de sleutels van je ontvangen berichten in versleutelde ruimtes naar een lokaal bestand te exporteren. Je zal daarna in de toekomst het bestand in een ander Matrix programma kunnen importeren zodat dat programma ook deze berichten kan ontsleutelen.",
- "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Het geëxporteerde bestand zal het voor iedereen dat het kan lezen mogelijk maken om alle berichten die jij kan zien te ontsleutelen, je zal daarom voorzichtig moeten zijn en het veilig houden. Om hiermee te helpen zou je een wachtzin moeten invoeren hieronder, deze zal dan gebruikt worden om de geëxporteerde gegevens dte versleutelen. Het is dan alleen mogelijk om de gegevens te importeren met hetzelfde wachtwoord.",
- "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dit proces maakt het mogelijk om versleutelingssleutels die je eerst had geëxporteerd vanaf een ander Matrix programma te importeren. Je zal daarna alle berichten kunnen ontsleutelen die het andere programma ook kon ontsleutelen.",
+ "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dit proces maakt het mogelijk om de sleutels van je ontvangen berichten in versleutelde ruimtes naar een lokaal bestand te exporteren. Je zal daarna in de toekomst het bestand in een ander Matrix-programma kunnen importeren zodat dat programma ook deze berichten kan ontsleutelen.",
+ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Het geëxporteerde bestand zal het voor iedereen dat het kan lezen mogelijk maken om alle berichten die jij kan zien te ontsleutelen, je zal daarom voorzichtig moeten zijn en het veilig houden. Om hiermee te helpen zou je een wachtzin moeten invoeren hieronder, deze zal dan gebruikt worden om de geëxporteerde gegevens te versleutelen. Het is dan alleen mogelijk om de gegevens te importeren met hetzelfde wachtwoord.",
+ "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dit proces maakt het mogelijk om versleutelingssleutels die je eerst had geëxporteerd vanaf een ander Matrix-programma te importeren. Je zal daarna alle berichten kunnen ontsleutelen die het andere programma ook kon ontsleutelen.",
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Het te exporteren bestand zal beveiligd zijn met een wachtzin. Je moet hier een wachtzin invoeren om het bestand te ontsleutelen.",
"You must join the room to see its files": "Je moet tot een ruimte toetreden om de bestanden te zien",
"Reject all %(invitedRooms)s invites": "Alle %(invitedRooms)s uitnodigingen afslaan",
"Start new chat": "Nieuwe chat starten",
- "Guest users can't invite users. Please register.": "Gast gebruikers kunnen geen gebruikers uitnodigen. Registreer je alsjeblieft.",
"Failed to invite": "Niet gelukt om uit te nodigen",
"Failed to invite user": "Niet gelukt om de gebruiker uit te nodigen",
"Failed to invite the following users to the %(roomName)s room:": "Niet gelukt om de volgende gebruikers voor de %(roomName)s ruimte uit te nodigen:",
@@ -829,7 +683,7 @@
"Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Weet je zeker dat je deze gebeurtenis wilt verwijderen? Wees er wel van bewust dat als je een ruimtenaam of onderwerp verwijderd je de verandering ongedaan kunt maken.",
"Unknown error": "Onbekende fout",
"Incorrect password": "Incorrect wachtwoord",
- "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Dit zal je account permanent onbruikbaar maken. Je zal ook niet opnieuw kunnen registreren met hetzelfde gebruikers ID.",
+ "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Dit zal je account permanent onbruikbaar maken. Je zal ook niet opnieuw kunnen registreren met hetzelfde gebruikers-ID.",
"This action is irreversible.": "Deze actie is onomkeerbaar.",
"To continue, please enter your password.": "Om verder te gaan, voer je wachtwoord in.",
"To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Om te verifiëren dat dit apparaat vertrouwd kan worden, contacteer de eigenaar op een andere manier (bijv. persoonlijk of via een telefoontje) en vraag of de sleutel die ze zien in de Gebruikersinstellingen voor dit apparaat overeenkomt met de onderstaande sleutel:",
@@ -847,7 +701,6 @@
"Unable to restore session": "Het is niet mogelijk om de sessie te herstellen",
"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.": "Als je eerst gebruik hebt gemaakt van een recentere versie van Riot, dan is je sessie misschien onverenigbaar met deze versie. Sluit dit scherm en ga terug naar de recentere versie.",
"Continue anyway": "Toch doorgaan",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Je weergavenaam is hoe je voor anderen zal verschijnen terwijl je in ruimtes praat. Wat wil je dat het wordt?",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We raden je aan om door het verificatieproces van elk apparaat te gaan om te bevestigen dat ze tot de legitieme eigenaar behoren maar je kan het bericht versturen zonder te verifiëren als je dat liever doet.",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" bevat apparaten die je nog niet eerder hebt gezien.",
"Unknown devices": "Onbekende apparaten",
@@ -858,8 +711,8 @@
"Add User": "Gebruiker Toevoegen",
"This Home Server would like to make sure you are not a robot": "Deze thuisserver wil er zeker van zijn dat je geen robot bent",
"Sign in with CAS": "Inloggen met CAS",
- "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Je kan de aangepaste server opties gebruiken om bij andere Matrix servers in te loggen door een andere thuisserver URL te specificeren.",
- "This allows you to use this app with an existing Matrix account on a different home server.": "Dit maakt het mogelijk om deze applicatie te gebruiken met een bestaand Matrix account op een andere thuisserver.",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Je kan de aangepaste server opties gebruiken om bij andere Matrix-servers in te loggen door een andere thuisserver-URL te specificeren.",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "Dit maakt het mogelijk om deze applicatie te gebruiken met een bestaand Matrix-account op een andere thuisserver.",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Je kan ook een aangepaste identiteitsserver instellen maar dit zal waarschijnlijk interactie met gebruikers gebaseerd op een e-mailadres voorkomen.",
"Please check your email to continue registration.": "Bekijk je e-mail om door te gaan met de registratie.",
"Token incorrect": "Bewijs incorrect",
@@ -867,10 +720,10 @@
"Please enter the code it contains:": "Voer de code in die het bevat:",
"If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Als je geen e-mailadres specificeert zal je niet je wachtwoord kunnen resetten. Weet je het zeker?",
"You are registering with %(SelectedTeamName)s": "Je registreert je met %(SelectedTeamName)s",
- "Default server": "Standaard server",
+ "Default server": "Standaardserver",
"Custom server": "Aangepaste server",
- "Home server URL": "Thuisserver URL",
- "Identity server URL": "Identiteitsserver URL",
+ "Home server URL": "Thuisserver-URL",
+ "Identity server URL": "Identiteitsserver-URL",
"What does this mean?": "Wat betekent dit?",
"Error decrypting audio": "Fout met het ontsleutelen van de audio",
"Error decrypting image": "Fout met het ontsleutelen van de afbeelding",
@@ -878,20 +731,20 @@
"This image cannot be displayed.": "Deze afbeelding kan niet worden weergeven.",
"Error decrypting video": "Fout met het ontsleutelen van de video",
"Add an Integration": "Voeg een integratie toe",
- "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Je wordt zo naar een derde-partij website verbonden zodat je het account kan legitimeren voor gebruik met %(integrationsUrl)s. Wil je doorgaan?",
- "Removed or unknown message type": "Verwijderd of onbekend bericht type",
- "Disable URL previews by default for participants in this room": "Zet URL voorvertoningen standaard uit voor deelnemers aan deze ruimte",
- "Disable URL previews for this room (affects only you)": "Zet URL voorvertoningen uit voor deze ruimte (heeft alleen effect op jou)",
- "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL voorvertoningen staan standaard %(globalDisableUrlPreview)s voor deelnemers aan deze ruimte.",
- "URL Previews": "URL Voorvertoningen",
- "Enable URL previews for this room (affects only you)": "URL voorvertoningen in deze ruimte aanzetten (heeft alleen effect op jou)",
+ "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Je wordt zo naar een derde-partij-website verbonden zodat je het account kan legitimeren voor gebruik met %(integrationsUrl)s. Wil je doorgaan?",
+ "Removed or unknown message type": "Verwijderd of onbekend berichttype",
+ "Disable URL previews by default for participants in this room": "Zet URL-voorvertoningen standaard uit voor deelnemers aan deze ruimte",
+ "Disable URL previews for this room (affects only you)": "Zet URL-voorvertoningen uit voor deze ruimte (heeft alleen effect op jou)",
+ "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL-voorvertoningen staan standaard %(globalDisableUrlPreview)s voor deelnemers aan deze ruimte.",
+ "URL Previews": "URL-Voorvertoningen",
+ "Enable URL previews for this room (affects only you)": "URL-voorvertoningen in deze ruimte aanzetten (heeft alleen effect op jou)",
"Drop file here to upload": "Bestand hier laten vallen om te uploaden",
" (unsupported)": " (niet ondersteund)",
"Ongoing conference call%(supportedText)s.": "Lopend vergaderingsgesprek %(supportedText)s.",
"for %(amount)ss": "voor %(amount)ss",
"for %(amount)sm": "voor %(amount)sm",
"for %(amount)sh": "voor %(amount)su",
- "for %(amount)sd": "for %(amound)sd",
+ "for %(amount)sd": "for %(amount)sd",
"Online": "Online",
"Idle": "Afwezig",
"Offline": "Offline",
@@ -907,9 +760,9 @@
"Username not available": "Gebruikersnaam niet beschikbaar",
"Something went wrong!": "Iets ging niet goed!",
"This will be your account name on the homeserver, or you can pick a different server .": "Dit zal je account naam worden op de thuisserver of je kan een verschillende server pakken.",
- "If you already have a Matrix account you can log in instead.": "Als je al een Matrix account hebt kan je in plaats daarvan inloggen .",
- "Your browser does not support the required cryptography extensions": "Je browser ondersteunt de benodigde cryptografie extensies niet",
- "Not a valid Riot keyfile": "Niet een geldig Riot sleutelbestand",
+ "If you already have a Matrix account you can log in instead.": "Als je al een Matrix-account hebt kan je in plaats daarvan inloggen .",
+ "Your browser does not support the required cryptography extensions": "Je browser ondersteunt de benodigde cryptografie-extensies niet",
+ "Not a valid Riot keyfile": "Niet een geldig Riot-sleutelbestand",
"Authentication check failed: incorrect password?": "Authenticatie controle gefaald: incorrect wachtwoord?",
"Disable Peer-to-Peer for 1:1 calls": "Peer-to-Peer voor 1:1 oproepen uitschakelen",
"Do you want to set an email address?": "Wil je een e-mailadres instellen?",
@@ -919,7 +772,65 @@
"Start verification": "Verificatie starten",
"Share without verifying": "Delen zonder verificatie",
"Ignore request": "Verzoek negeren",
- "You added a new device '%(displayName)s', which is requesting encryption keys.": "Je hebt een nieuwe apparaat '%(displayName)s' toegevoegd die om versleutelingssleutels vraagt.",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "Je hebt een nieuw apparaat '%(displayName)s' toegevoegd dat om versleutelingssleutels vraagt.",
"Your unverified device '%(displayName)s' is requesting encryption keys.": "Je niet geverifieerde apparaat '%(displayName)s' vraagt naar versleutelingssleutels.",
- "Encryption key request": "Verzoek voor versleutelingssleutel"
+ "Encryption key request": "Verzoek voor versleutelingssleutel",
+ "Define the power level of a user": "Definieer het machtsniveau van een gebruiker",
+ "Add a widget": "Voeg een widget toe",
+ "Allow": "Toestaan",
+ "Cannot add any more widgets": "Er kunnen niet meer widgets toegevoegd worden",
+ "Changes colour scheme of current room": "Verander het kleurenschema van de huidige ruimte",
+ "Delete widget": "Widget verwijderen",
+ "Do you want to load widget from URL:": "Wil je de widget laden van de URL:",
+ "Edit": "Wijzigen",
+ "Enable automatic language detection for syntax highlighting": "Automatische taaldetectie voor zinsbouwmarkeringen aanzetten",
+ "Hide Apps": "Apps verbergen",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Toetreed/verlaat berichten verbergen (uitnodigingen/verwijderingen/verbanningen zullen ongeschonden blijven)",
+ "Hide avatar and display name changes": "Avatar en weergavenaam wijzigingen verbergen",
+ "Integrations Error": "Integratiesfout",
+ "Publish this room to the public in %(domain)s's room directory?": "Deze ruimte publiekelijk maken in %(domain)s's ruimte catalogus?",
+ "Matrix Apps": "Matrix Apps",
+ "AM": "AM",
+ "PM": "PM",
+ "NOTE: Apps are not end-to-end encrypted": "OPMERKING: Apps zijn niet end-to-endbeveiligd",
+ "Revoke widget access": "Toegang tot widget intrekken",
+ "Sets the room topic": "Wijzigt het ruimte-onderwerp",
+ "Show Apps": "Apps Weergeven",
+ "The maximum permitted number of widgets have already been added to this room.": "Het maximum aantal toegestane widgets is al aan deze ruimte toegevoegd.",
+ "To get started, please pick a username!": "Om te beginnen, kies een gebruikersnaam!",
+ "Unable to create widget.": "Niet in staat om een widget te maken.",
+ "Unbans user with given id": "Ontbant de gebruiker met het gegeven id",
+ "You are not in this room.": "Je zit niet in deze ruimte.",
+ "You do not have permission to do that in this room.": "Je hebt geen permissie om dat te doen in deze ruimte.",
+ "Verifies a user, device, and pubkey tuple": "Verifieert een gebruiker, apparaat en pubkey tupel",
+ "Autocomplete Delay (ms):": "Automatisch-aanvullen-vertraging (ms):",
+ "This Home server does not support groups": "Deze thuisserver ondersteunt geen groepen",
+ "Loading device info...": "Apparaat info aan het laden...",
+ "Groups": "Groepen",
+ "Create a new group": "Maak een nieuwe groep",
+ "Create Group": "Groep Aanmaken",
+ "Group Name": "Groepsnaam",
+ "Example": "Voorbeeld",
+ "Create": "Creëer",
+ "Group ID": "Groeps-ID",
+ "+example:%(domain)s": "+voorbeeld:%(domain)s",
+ "Group IDs must be of the form +localpart:%(domain)s": "Groeps-IDs moeten er als +lokaalgedeelte:%(domain)s uit zien",
+ "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Het is momenteel mogelijk om groepen op je eigen thuisserver aan te maken: gebruik een groeps-ID dat eindigt met %(domain)s",
+ "Room creation failed": "Het aanmaken van de ruimte is niet gelukt",
+ "You are a member of these groups:": "Je bent een deelnemer van deze groepen:",
+ "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Maak een groep aan om je gemeenschap te representateren! Defineer een set van ruimtes en maak je eigen aangepaste homepagina om je eigen plek in het Matrix-universum te creëren.",
+ "Join an existing group": "Treed tot een bestaande groep toe",
+ "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org .": "Om tot een bestaande groep toe te treden moet je groepsidentificatie weten; dit zal er ongeveer uit zien als +voorbeeld:matrix.org .",
+ "Featured Rooms:": "Prominente Ruimtes:",
+ "Error whilst fetching joined groups": "Er is een fout opgetreden tijdens het ophalen van de tot toegretreden groepen",
+ "Featured Users:": "Prominente Gebruikers:",
+ "Edit Group": "Groep Wijzigen",
+ "Automatically replace plain text Emoji": "Automatisch normale tekst vervangen met Emoji",
+ "Failed to upload image": "Het is niet gelukt om de afbeelding te uploaden",
+ "Failed to update group": "Het is niet gelukt om de groep bij te werken",
+ "Hide avatars in user and room mentions": "Avatars in gebruiker- en ruimte-vermeldingen verbergen",
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s-widget toegevoegd door %(senderName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s-widget verwijderd door %(senderName)s",
+ "Robot check is currently unavailable on desktop - please use a web browser ": "Robot-check is momenteel niet beschikbaar op de desktop - gebruik in plaats daarvan een webbrowser ",
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s-widget aangepast door %(senderName)s"
}
diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json
index 624302543d..bd1e4c5c24 100644
--- a/src/i18n/strings/pl.json
+++ b/src/i18n/strings/pl.json
@@ -1,6 +1,6 @@
{
"Ignore request": "Zignoruj żądanie",
- "Start verification": "Rozpocznij weryfikacje",
+ "Start verification": "Rozpocznij weryfikację",
"Skip": "Pomiń",
"This will allow you to reset your password and receive notifications.": "To pozwoli Ci zresetować Twoje hasło i otrzymać powiadomienia.",
"Your browser does not support the required cryptography extensions": "Twoja przeglądarka nie wspiera wymaganych rozszerzeń kryptograficznych",
@@ -14,23 +14,22 @@
"This image cannot be displayed.": "Ten obrazek nie może zostać wyświetlony.",
"Default server": "Domyślny serwer",
"A text message has been sent to": "Wiadomość tekstowa została wysłana do",
- "Add User": "Dodaj Użytkownika",
+ "Add User": "Dodaj użytkownika",
"Verify...": "Zweryfikuj...",
- "Unknown Address": "Nieznany Adres",
+ "Unknown Address": "Nieznany adres",
"Unknown devices": "Nieznane urządzenia",
"Verify device": "Zweryfikuj urządzenie",
"Device key": "Klucz urządzenia",
- "Device Name": "Nazwa Urządzenia",
+ "Device Name": "Nazwa urządzenia",
"Device name": "Nazwa urządzenia",
"To continue, please enter your password.": "Aby kontynuować, proszę wprowadzić swoje hasło.",
"Incorrect password": "Nieprawidłowe hasło",
"Unknown error": "Nieznany błąd",
"Start new chat": "Rozpocznij nową konwersację",
"Options": "Opcje",
- "New Password": "Nowe Hasło",
+ "New Password": "Nowe hasło",
"Room directory": "Spis pokojów",
"Start chat": "Rozpocznij rozmowę",
- "Welcome page": "Strona powitalna",
"Create new room": "Utwórz nowy pokój",
"Sunday": "Niedziela",
"Wednesday": "Środa",
@@ -67,26 +66,11 @@
"User": "Użytkownik",
"Users": "Użytkownicy",
"User name": "Nazwa użytkownika",
- "User ID": "ID Użytkownika",
- "User Interface": "Interfejs Użytkownika",
+ "User ID": "ID użytkownika",
+ "User Interface": "Interfejs użytkownika",
"Usage": "Użycie",
"Upload file": "Prześlij plik",
"Unban": "Odbanuj",
- "en": "Angielski",
- "fi": "Fiński",
- "fr": "Francuski",
- "he": "Hebrajski",
- "hu": "Węgierski",
- "it": "Włoski",
- "ja": "Japoński",
- "no": "Norweski",
- "pl": "Polski",
- "ru": "Rosyjski",
- "sq": "Albański",
- "sr": "Serbski",
- "th": "Tajski",
- "uk": "Ukraiński",
- "vi": "Wietnamski",
"Accept": "Akceptuj",
"Account": "Konto",
"Add": "Dodaj",
@@ -110,7 +94,6 @@
"Create an account": "Stwórz konto",
"Delete": "Usuń",
"Devices": "Urządzenia",
- "Direct Chat": "Rozmowa bezpośrednia",
"Drop here %(toAction)s": "Upuść tutaj %(toAction)s",
"Error": "Błąd",
"Notifications": "Powiadomienia",
@@ -121,117 +104,13 @@
"unknown error code": "nieznany kod błędu",
"OK": "OK",
"Custom Server Options": "Niestandardowe opcje serwera",
- "Dismiss": "Zdymisjonować",
+ "Dismiss": "Zamknij",
"Failed to forget room %(errCode)s": "Nie mogłem zapomnieć o pokoju %(errCode)s",
- "Failed to join the room": "Nie udało się dołączyć do pokoju",
"Favourite": "Ulubiony",
"Mute": "Wycisz",
- "Please Register": "Proszę się zarejestrować",
"powered by Matrix": "napędzany przez Matrix",
"Failed to change password. Is your password correct?": "Zmiana hasła nie powiodła się. Czy Twoje hasło jest poprawne?",
- "be": "Białoruski",
- "bg": "Bułgarski",
- "cs": "Czeski",
- "da": "Duński",
- "de": "Niemiecki",
- "el": "Grecki",
- "et": "Estoński",
- "ga": "Irlandzki",
- "hr": "Chorwacki",
- "is": "Islandzki",
- "hi": "Hindi",
- "lt": "Litewski",
- "lv": "Łotewski",
- "nl": "Holenderski",
- "pt": "Portugalski",
- "sl": "Słoweński",
- "sk": "Słowacki",
- "sv": "Szwedzki",
- "tr": "Turecki",
"Add a topic": "Dodaj temat",
- "af": "Afrikaans",
- "ar-ae": "Arabski (ZEA)",
- "ar-bh": "Arabski (Bahrajn)",
- "ar-dz": "Arabski (Algieria)",
- "ar-eg": "Arabski (Egipt)",
- "ar-iq": "Arabski (Irak)",
- "ar-jo": "Arabski (Jordania)",
- "ar-kw": "Arabski (Kuwejt)",
- "ar-lb": "Arabski (Liban)",
- "ar-ly": "Arabski (Libia)",
- "ar-ma": "Arabski (Maroko)",
- "ar-om": "Arabski (Oman)",
- "ar-qa": "Arabski (Katar)",
- "ar-sa": "Arabski (Arabia Saudyjska)",
- "ar-sy": "Arabski (Syria)",
- "ar-tn": "Arabski (Tunezja)",
- "ar-ye": "Arabski (Jemen)",
- "ca": "Kataloński",
- "de-at": "Niemiecki (Austria)",
- "de-ch": "Niemiecki (Szwajcaria)",
- "de-li": "Niemiecki (Liechtenstein)",
- "de-lu": "Niemiecki (Luksemburg)",
- "en-au": "Angielski (Australia)",
- "en-bz": "Angielski (Belize)",
- "en-ca": "Angielski (Kanada)",
- "en-gb": "Angielski (Wielka Brytania)",
- "en-ie": "Angielski (Irlandia)",
- "en-jm": "Angielski (Jamajka)",
- "en-nz": "Angielski (Nowa Zelandia)",
- "en-tt": "Angielski (Trynidad)",
- "en-us": "Angielski (Stany Zjednoczone)",
- "en-za": "Angielski (Afryka Południowa)",
- "es-ar": "Hiszpański (Argentyna)",
- "es-bo": "Hiszpański (Boliwia)",
- "es-cl": "Hiszpański (Chile)",
- "es-co": "Hiszpański (Kolumbia)",
- "es-cr": "Hiszpański (Kostaryka)",
- "es-do": "Hiszpański (Dominikana)",
- "es-ec": "Hiszpański (Ekwador)",
- "es-gt": "Hiszpański (Gwatemala)",
- "es-hn": "Hiszpański (Honduras)",
- "es-mx": "Hiszpański (Meksyk)",
- "es-ni": "Hiszpański (Nikaragua)",
- "es-pa": "Hiszpański (Panama)",
- "es-pe": "Hiszpański (Peru)",
- "es-pr": "Hiszpański (Portoryko)",
- "es-py": "Hiszpański (Paragwaj)",
- "es": "Hiszpański (Hiszpania)",
- "es-sv": "Hiszpański (Salwador)",
- "es-uy": "Hiszpański (Urugwaj)",
- "es-ve": "Hiszpański (Wenezuela)",
- "eu": "Baskijski",
- "fa": "Perski",
- "fr-be": "Francuski (Belgia)",
- "fr-ca": "Francuski (Kanada)",
- "fr-ch": "Francuski (Szwajcaria)",
- "fr-lu": "Francuski (Luksemburg)",
- "gd": "Gaelicki (Szkocja)",
- "id": "Indonezyjski",
- "it-ch": "Włoski (Szwajcaria)",
- "ji": "Jidysz",
- "ko": "Koreański",
- "mk": "Macedoński (BJRM)",
- "ms": "Malezyjski",
- "mt": "Maltański",
- "nl-be": "Holenderski (Belgia)",
- "pt-br": "Portugalski (Brazylia)",
- "ro-mo": "Rumuński (Republika Mołdawii)",
- "ro": "Rumuński",
- "ru-mo": "Rosyjski (Republika Mołdawii)",
- "sb": "Łużycki",
- "sv-fi": "Szwedzki (Finlandia)",
- "sx": "Sutu",
- "sz": "Sami (Lapoński)",
- "ts": "Tsonga",
- "ur": "Urdu",
- "ve": "Venda",
- "xh": "Xhosa",
- "zh-cn": "Chiński (ChRL)",
- "zh-hk": "Chiński (Hongkong)",
- "zh-sg": "Chiński (Singapur)",
- "zh-tw": "Chiński (Tajwan)",
- "zu": "Zuluski",
"a room": "pokój",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Wysłano wiadomość tekstową do +%(msisdn)s. Proszę wprowadzić kod w niej zawarty",
"%(targetName)s accepted an invitation.": "%(targetName)s zaakceptował(a) zaproszenie.",
@@ -240,21 +119,18 @@
"Active call (%(roomName)s)": "Aktywne połączenie (%(roomName)s)",
"Add email address": "Dodaj adres e-mail",
"Admin": "Administrator",
- "Admin tools": "Narzędzia administracyjne",
+ "Admin Tools": "Narzędzia administracyjne",
"And %(count)s more...": "Oraz %(count)s więcej...",
- "VoIP": "VoIP",
+ "VoIP": "VoIP (połączenie głosowe)",
"No Microphones detected": "Nie wykryto żadnego mikrofonu",
"No Webcams detected": "Nie wykryto żadnej kamerki internetowej",
"No media permissions": "Brak uprawnień do mediów",
- "You may need to manually permit Riot to access your microphone/webcam": "Możliwe, że będziesz musiał ręcznie pozwolić Riotowi na dostęp do twojego mikrofonu/kamerki",
+ "You may need to manually permit Riot to access your microphone/webcam": "Możliwe, że będziesz musiał ręcznie pozwolić Riotowi na dostęp do twojego mikrofonu/kamerki internetowej",
"Default Device": "Urządzenie domyślne",
"Advanced": "Zaawansowane",
"Always show message timestamps": "Zawsze pokazuj znaczniki czasu wiadomości",
"Authentication": "Uwierzytelnienie",
"Alias (optional)": "Alias (opcjonalnie)",
- "all room members": "wszyscy członkowie pokoju",
- "all room members, from the point they are invited": "wszyscy członkowie pokoju, od momentu ich zaproszenia",
- "all room members, from the point they joined": "wszyscy członkowie pokoju, od momentu ich dołączenia",
"%(items)s and %(remaining)s others": "%(items)s i %(remaining)s innych",
"%(items)s and one other": "%(items)s i jeszcze jeden",
"%(items)s and %(lastItem)s": "%(items)s i %(lastItem)s",
@@ -266,7 +142,6 @@
"An email has been sent to": "Wysłano wiadomość e-mail do",
"A new password must be entered.": "Musisz wprowadzić nowe hasło.",
"%(senderName)s answered the call.": "%(senderName)s odebrał połączenie.",
- "anyone": "każdy",
"An error has occurred.": "Wystąpił błąd.",
"Anyone": "Każdy",
"Anyone who knows the room's link, apart from guests": "Każdy kto posiada łącze do pokoju, poza gośćmi",
@@ -277,6 +152,687 @@
"Autoplay GIFs and videos": "Automatycznie odtwarzaj GIFy i filmiki",
"%(senderName)s banned %(targetName)s.": "%(senderName)s zbanował %(targetName)s.",
"Ban": "Zbanuj",
- "Bans user with given id": "Zbanuj użytkownika o podanym id",
- "Blacklisted": "Umieszczono na czarnej liście"
+ "Bans user with given id": "Blokuje użytkownika o podanym ID",
+ "Blacklisted": "Umieszczono na czarnej liście",
+ "Add a widget": "Dodaj widżet",
+ "Allow": "Pozwól",
+ "Missing Media Permissions, click here to request.": "Brakuje uprawnień mediów. Kliknij tutaj, aby ich zażądać.",
+ "and %(count)s others...|other": "i %(count)s innych...",
+ "and %(count)s others...|one": "i jeden inny...",
+ "Bug Report": "Raport błędu",
+ "Bulk Options": "Masowe opcje",
+ "Call Timeout": "Upłynął limit czasu połączenia",
+ "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nie można nawiązać połączenia z serwerem - proszę sprawdź twoje połączenie, upewnij się, że certyfikat SSL serwera jest zaufany, i że dodatki przeglądarki nie blokują żądania.",
+ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts .": "Nie można nawiązać połączenia z serwerem przy użyciu HTTP podczas korzystania z HTTPS dla bieżącej strony. Użyj HTTPS lub włącz niebezpieczne skrypty .",
+ "Can't load user settings": "Nie można załadować ustawień użytkownika",
+ "Cannot add any more widgets": "Nie można dodać już więcej widżetów",
+ "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s zmienił swoją nazwę z %(oldDisplayName)s na %(displayName)s.",
+ "%(senderName)s changed their profile picture.": "%(senderName)s zmienił swoje zdjęcie profilowe.",
+ "fo": "Farerski",
+ "rm": "Retoromański",
+ "tn": "Tswana",
+ "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s zmienił poziom mocy %(powerLevelDiffText)s.",
+ "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s zmienił nazwę pokoju na %(roomName)s.",
+ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s usunął nazwę pokoju.",
+ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s zmienił temat na \"%(topic)s\".",
+ "Changes to who can read history will only apply to future messages in this room": "Zmiany w dostępie do historii będą dotyczyć tylko przyszłych wiadomości w tym pokoju",
+ "Changes your display nickname": "Zmień swój pseudonim",
+ "Changes colour scheme of current room": "Zmień schemat kolorystyczny bieżącego pokoju",
+ "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.": "Zmiana hasła zresetuje klucze szyfrowania końcówka-do-końcówki na wszystkich urządzeniach, co spowoduje, że nie będzie się dało odczytać zaszyfrowanej historii czatu, chyba że najpierw wyeksportujesz swoje klucze i ponownie je zaimportujesz. W przyszłości będzie to poprawione.",
+ "Claimed Ed25519 fingerprint key": "Zażądano odcisk klucza Ed25519",
+ "Clear Cache and Reload": "Wyczyść pamięć podręczną i przeładuj",
+ "Clear Cache": "Wyczyść pamięć podręczną",
+ "Click here to join the discussion!": "Kliknij tutaj , aby dołączyć do dyskusji!",
+ "Click here to fix": "Kliknij tutaj, aby naprawić",
+ "Click to mute audio": "Kliknij, aby wyciszyć dźwięk",
+ "Click to mute video": "Kliknij, aby wyłączyć obraz",
+ "click to reveal": "kliknij, aby ujawnić",
+ "Click to unmute video": "Kliknij, aby włączyć obraz",
+ "Click to unmute audio": "Kliknij, aby włączyć dźwięk",
+ "Command error": "Błąd polecenia",
+ "Commands": "Polecenia",
+ "Conference call failed.": "Połączenie konferencyjne nie powiodło się.",
+ "Conference calling is in development and may not be reliable.": "Rozmowy konferencyjne są w trakcie opracowywania i mogą nie działać poprawnie.",
+ "Conference calls are not supported in encrypted rooms": "Połączenia konferencyjne nie są obsługiwane w zaszyfrowanych pokojach",
+ "Conference calls are not supported in this client": "Połączenia konferencyjne nie są obsługiwane w tym kliencie",
+ "Could not connect to the integration server": "Nie można połączyć się z serwerem integracji",
+ "Create a new chat or reuse an existing one": "Utwórz nowy czat lub użyj istniejącego",
+ "Curve25519 identity key": "Curve25519 klucz tożsamości",
+ "Custom": "Własny",
+ "Custom level": "Własny poziom",
+ "/ddg is not a command": "/ddg nie jest poleceniem",
+ "Deactivate Account": "Dezaktywuj konto",
+ "Deactivate my account": "Dezaktywuj moje konto",
+ "Decline": "Odrzuć",
+ "Decrypt %(text)s": "Odszyfruj %(text)s",
+ "Decryption error": "Błąd odszyfrowywania",
+ "Delete widget": "Usuń widżet",
+ "demote": "zdegraduj",
+ "Default": "Domyślny",
+ "Define the power level of a user": "Zdefiniuj poziom mocy użytkownika",
+ "Device already verified!": "Urządzenie jest już zweryfikowane!",
+ "Device ID": "Identyfikator urządzenia",
+ "Device ID:": "Identyfikator urządzenia:",
+ "device id: ": "identyfikator urządzenia: ",
+ "Device key:": "Klucz urządzenia:",
+ "Devices will not yet be able to decrypt history from before they joined the room": "Urządzenia nie będą mogły odszyfrowywać historii sprzed dołączenia do pokoju",
+ "Direct chats": "Rozmowy bezpośrednie",
+ "Disable Notifications": "Wyłącz powiadomienia",
+ "disabled": "wyłączone",
+ "Disable inline URL previews by default": "Domyślnie wyłącz podgląd linków",
+ "Disinvite": "Anuluj zaproszenie",
+ "Display name": "Wyświetlana nazwa",
+ "Displays action": "Wyświetlane akcje",
+ "Do you want to load widget from URL:": "Czy chcesz załadować widżet z adresu:",
+ "Don't send typing notifications": "Nie wysyłaj powiadomienia o pisaniu",
+ "Download %(text)s": "Pobrano %(text)s",
+ "Drop File Here": "Upuść plik tutaj",
+ "Drop here to tag %(section)s": "Upuść tutaj by oznaczyć %(section)s",
+ "Ed25519 fingerprint": "Odcisk Ed25519",
+ "Edit": "Edytuj",
+ "Email": "E-mail",
+ "Email address": "Adres e-mail",
+ "Email address (optional)": "Adres e-mail (opcjonalnie)",
+ "Email, name or matrix ID": "E-mail, nazwa lub matrix ID",
+ "Emoji": "Emoji",
+ "Enable automatic language detection for syntax highlighting": "Włącz automatyczne rozpoznawanie języka dla podświetlania składni",
+ "Enable encryption": "Włącz szyfrowanie",
+ "Enable Notifications": "Włącz powiadomienia",
+ "enabled": "włączone",
+ "Encrypted by a verified device": "Zaszyfrowane przez zweryfikowane urządzenie",
+ "Encrypted by an unverified device": "Zaszyfrowane przez niezweryfikowane urządzenie",
+ "Encrypted messages will not be visible on clients that do not yet implement encryption": "Szyfrowane wiadomości nie są widoczne w programach, które nie implementują szyfrowania",
+ "Encrypted room": "Pokój szyfrowany",
+ "Encryption is enabled in this room": "Szyfrowanie jest włączone w tym pokoju",
+ "Encryption is not enabled in this room": "Szyfrowanie nie jest włączone w tym pokoju",
+ "%(senderName)s ended the call.": "%(senderName)s zakończył połączenie.",
+ "End-to-end encryption information": "Informacje o szyfrowaniu końcówka-do-końcówki",
+ "End-to-end encryption is in beta and may not be reliable": "Szyfrowanie końcówka-do-końcówki jest w fazie beta i może nie być dopracowane",
+ "Enter Code": "Wpisz kod",
+ "Enter passphrase": "Wpisz frazę",
+ "Error decrypting attachment": "Błąd odszyfrowywania załącznika",
+ "Error: Problem communicating with the given homeserver.": "Błąd: wystąpił problem podczas komunikacji z podanym serwerem.",
+ "Event information": "Informacje zdarzenia",
+ "Existing Call": "Istniejące połączenie",
+ "Export": "Eksport",
+ "Export E2E room keys": "Eksportuj klucze E2E pokojów",
+ "Failed to ban user": "Nie udało się zbanować użytkownika",
+ "Failed to change power level": "Nie udało się zmienić poziomu mocy",
+ "Failed to delete device": "Nie udało się usunąć urządzenia",
+ "Failed to fetch avatar URL": "Nie udało się pobrać awatara",
+ "Failed to join room": "Nie udało się dołączyć do pokoju",
+ "Failed to kick": "Nie udało się wykopać użytkownika",
+ "Failed to leave room": "Nie udało się opuścić pokoju",
+ "Failed to load timeline position": "Nie udało się wczytać pozycji osi czasu",
+ "Failed to lookup current room": "Nie udało się wyszukać aktualnego pokoju",
+ "Failed to mute user": "Nie udało się wyciszyć użytkownika",
+ "Failed to register as guest:": "Nie udało się zarejestrować jako gość:",
+ "Failed to reject invite": "Nie udało się odrzucić zaproszenia",
+ "Failed to reject invitation": "Nie udało się odrzucić zaproszenia",
+ "Failed to save settings": "Nie udało się zapisać ustawień",
+ "Failed to send email": "Nie udało się wysłać wiadomości e-mail",
+ "Failed to send request.": "Nie udało się wysłać żądania.",
+ "Failed to set avatar.": "Nie udało się ustawić awataru.",
+ "Failed to set display name": "Nie udało się ustawić wyświetlanej nazwy",
+ "Failed to set up conference call": "Nie udało się ustanowić połączenia konferencyjnego",
+ "Failed to toggle moderator status": "Nie udało się przełączyć na stan moderatora",
+ "Failed to unban": "Nie udało się odbanować",
+ "Failed to upload file": "Nie udało się wgrać pliku",
+ "Failed to upload profile picture!": "Nie udało się wgrać zdjęcia profilowego!",
+ "Failed to verify email address: make sure you clicked the link in the email": "Nie udało się zweryfikować adresu e-mail: upewnij się że kliknąłeś w link w e-mailu",
+ "Failure to create room": "Nie udało się stworzyć pokoju",
+ "favourite": "ulubiony",
+ "Favourites": "Ulubione",
+ "Fill screen": "Wypełnij ekran",
+ "Filter room members": "Filtruj uczestników pokoju",
+ "Forget room": "Zapomnij pokój",
+ "Forgot your password?": "Zapomniałeś hasła?",
+ "For security, this session has been signed out. Please sign in again.": "Ze względów bezpieczeństwa ta sesja została wylogowana. Zaloguj się jeszcze raz.",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Ze względów bezpieczeństwa, wylogowanie skasuje z tej przeglądarki wszystkie klucze szyfrowania końcówka-do-końcówki. Jeśli chcesz móc odszyfrować swoje historie konwersacji z przyszłych sesji Riot-a, proszę wyeksportuj swoje klucze pokojów do bezpiecznego miejsca.",
+ "Found a bug?": "Znalazłeś błąd?",
+ "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s z %(fromPowerLevel)s na %(toPowerLevel)s",
+ "Guest access is disabled on this Home Server.": "Dostęp dla gości jest wyłączony na tym serwerze.",
+ "Deops user with given id": "Usuwa prawa administratora użytkownikowi o danym ID",
+ "Guests cannot join this room even if explicitly invited.": "Goście nie mogą dołączać do tego pokoju, nawet jeśli zostali specjalnie zaproszeni.",
+ "Hangup": "Rozłącz się",
+ "Hide avatar and display name changes": "Ukryj zmiany awatarów i nazw ekranowych",
+ "Hide Text Formatting Toolbar": "Ukryj pasek formatowania tekstu",
+ "Home": "Strona startowa",
+ "Homeserver is": "Serwer domowy to",
+ "Identity Server is": "Serwer Identity to",
+ "I have verified my email address": "Zweryfikowałem swój adres e-mail",
+ "Import": "Importuj",
+ "Import E2E room keys": "Importuj klucze pokoju E2E",
+ "Incoming call from %(name)s": "Połączenie przychodzące od %(name)s",
+ "Incoming video call from %(name)s": "Przychodzące połączenie wideo od %(name)s",
+ "Incoming voice call from %(name)s": "Przychodzące połączenie głosowe od %(name)s",
+ "Incorrect username and/or password.": "Nieprawidłowa nazwa użytkownika i/lub hasło.",
+ "Incorrect verification code": "Nieprawidłowy kod weryfikujący",
+ "Integrations Error": "Błąd integracji",
+ "Interface Language": "Język interfejsu",
+ "Invalid alias format": "Nieprawidłowy format aliasu",
+ "Invalid address format": "Nieprawidłowy format adresu",
+ "Invalid Email Address": "Nieprawidłowy adres e-mail",
+ "Invalid file%(extra)s": "Nieprawidłowy plik %(extra)s",
+ "%(senderName)s invited %(targetName)s.": "%(senderName)s zaprosił %(targetName)s.",
+ "Invite new room members": "Zaproś nowych członków do pokoju",
+ "Invited": "Zaproszony",
+ "Invites": "Zaproszenia",
+ "Invites user with given id to current room": "Zaprasza użytkownika o danym ID do obecnego pokoju",
+ "'%(alias)s' is not a valid format for an address": "'%(alias)s' nie jest poprawnym formatem adresu",
+ "'%(alias)s' is not a valid format for an alias": "'%(alias)s' nie jest poprawnym formatem aliasu",
+ "%(displayName)s is typing": "%(displayName)s pisze",
+ "Sign in with": "Zaloguj się używając",
+ "Join as voice or video .": "Dołącz głosowo lub przez wideo .",
+ "Join Room": "Dołącz do pokoju",
+ "joined and left": "dołączył i wyszedł",
+ "joined": "dołączył",
+ "%(targetName)s joined the room.": "%(targetName)s dołączył do pokoju.",
+ "Joins room with given alias": "Dołącz do pokoju o podanym aliasie",
+ "Jump to first unread message.": "Przeskocz do pierwszej nieprzeczytanej wiadomości.",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s wyrzucił %(targetName)s.",
+ "Kick": "Wyrzuć",
+ "Kicks user with given id": "Wyrzuca użytkownika o danym ID",
+ "Labs": "Laboratoria",
+ "Last seen": "Ostatnio widziany",
+ "Leave room": "Opuść pokój",
+ "left and rejoined": "wyszedł i ponownie dołączył",
+ "left": "wyszedł",
+ "%(targetName)s left the room.": "%(targetName)s opuścił pokój.",
+ "Level:": "Poziom:",
+ "Publish this room to the public in %(domain)s's room directory?": "Czy opublikować ten pokój dla ogółu w spisie pokojów domeny %(domain)s?",
+ "Local addresses for this room:": "Lokalne adresy dla tego pokoju:",
+ "Logged in as:": "Zalogowany jako:",
+ "Login as guest": "Zaloguj jako gość",
+ "Logout": "Wyloguj",
+ "Low priority": "Niski priorytet",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s uczynił przyszłą historię pokoju widoczną dla wszyscy członkowie pokoju, od momentu ich zaproszenia.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s uczynił przyszłą historię pokoju widoczną dla wszyscy członkowie pokoju, od momentu ich dołączenia.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s uczynił przyszłą historię pokoju widoczną dla wszyscy członkowie pokoju.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s uczynił przyszłą historię pokoju widoczną dla kazdego.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s uczynił przyszłą historię pokoju widoczną dla nieznany (%(visibility)s).",
+ "Manage Integrations": "Zarządzaj integracjami",
+ "Markdown is disabled": "Markdown jest wyłączony",
+ "Markdown is enabled": "Markdown jest włączony",
+ "matrix-react-sdk version:": "Wersja matrix-react-sdk:",
+ "Matrix Apps": "Aplikacje Matrix",
+ "Members only": "Tylko dla członków",
+ "Message not sent due to unknown devices being present": "Wiadomość nie została wysłana z powodu obecności nieznanych urządzeń",
+ "Missing room_id in request": "Brakujące room_id w żądaniu",
+ "Missing user_id in request": "Brakujące user_id w żądaniu",
+ "Mobile phone number": "Numer telefonu komórkowego",
+ "Mobile phone number (optional)": "Numer telefonu komórkowego (opcjonalne)",
+ "Moderator": "Moderator",
+ "my Matrix ID": "mój Matrix ID",
+ "Name": "Imię",
+ "Never send encrypted messages to unverified devices from this device": "Nigdy nie wysyłaj zaszyfrowanych wiadomości do niezweryfikowanych urządzeń z tego urządzenia",
+ "Never send encrypted messages to unverified devices in this room": "Nigdy nie wysyłaj zaszyfrowanych wiadomości do niezweryfikowanych urządzeń w tym pokoju",
+ "Never send encrypted messages to unverified devices in this room from this device": "Nigdy nie wysyłaj niezaszyfrowanych wiadomości do niezweryfikowanych urządzeń z tego urządzenia",
+ "New address (e.g. #foo:%(localDomain)s)": "Nowy adres (np. #foo:%(localDomain)s)",
+ "New password": "Nowe hasło",
+ "New passwords don't match": "Nowe hasła nie zgadzają się",
+ "New passwords must match each other.": "Nowe hasła muszą się zgadzać.",
+ "none": "żaden",
+ "not set": "nieustawiony",
+ "not specified": "nieokreślony",
+ "(not supported by this browser)": "(niewspierany przez tę przeglądarkę)",
+ "": "",
+ "AM": "AM",
+ "PM": "PM",
+ "NOT verified": "NIEzweryfikowany",
+ "NOTE: Apps are not end-to-end encrypted": "UWAGA: Aplikacje nie są szyfrowane metodą użytkownik-użytkownik",
+ "No devices with registered encryption keys": "Brak urządzeń z zarejestrowanymi kluczami szyfrującymi",
+ "No display name": "Brak nazwy ekranowej",
+ "No more results": "Nie ma więcej wyników",
+ "No results": "Brak wyników",
+ "No users have specific privileges in this room": "Żadni użytkownicy w tym pokoju nie mają specyficznych uprawnień",
+ "olm version:": "wersja olm:",
+ "Once encryption is enabled for a room it cannot be turned off again (for now)": "Po włączeniu szyfrowania w pokoju nie można go ponownie wyłączyć (póki co)",
+ "Once you've followed the link it contains, click below": "Po kliknięciu łącza, które jest tam zawarte kliknij poniżej",
+ "Only people who have been invited": "Tylko ludzie, którzy zostali zaproszeni",
+ "Otherwise, click here to send a bug report.": "W przeciwnym razie, kliknij tutaj by wysłać raport o błędzie.",
+ "had": "był",
+ "Password": "Hasło",
+ "Password:": "Hasło:",
+ "Passwords can't be empty": "Hasła nie mogą być puste",
+ "People": "Ludzie",
+ "Permissions": "Uprawnienia",
+ "Phone": "Telefon",
+ "%(senderName)s placed a %(callType)s call.": "%(senderName)s rozpoczął połączenie %(callType)s.",
+ "Please check your email and click on the link it contains. Once this is done, click continue.": "Sprawdź swój e-mail i kliknij link w nim zawarty. Kiedy już to zrobisz, kliknij \"kontynuuj\".",
+ "Power level must be positive integer.": "Poziom uprawnień musi być liczbą dodatnią.",
+ "Press to start a chat with someone": "Naciśnij , by rozpocząć rozmowę z kimś",
+ "Privacy warning": "Ostrzeżenie o prywatności",
+ "Private Chat": "Rozmowa prywatna",
+ "Privileged Users": "Użytkownicy uprzywilejowani",
+ "Profile": "Profil",
+ "Public Chat": "Rozmowa publiczna",
+ "Reason": "Powód",
+ "Reason: %(reasonText)s": "Powód: %(reasonText)s",
+ "Revoke Moderator": "Usuń prawa moderatorskie",
+ "Revoke widget access": "Usuń dostęp do widżetów",
+ "Refer a friend to Riot:": "Zaproś znajomego do Riota:",
+ "Register": "Zarejestruj",
+ "rejected": "odrzucone",
+ "%(targetName)s rejected the invitation.": "%(targetName)s odrzucił zaproszenie.",
+ "Reject invitation": "Odrzuć zaproszenie",
+ "Rejoin": "Dołącz ponownie",
+ "Remote addresses for this room:": "Adresy zdalne dla tego pokoju:",
+ "Remove Contact Information?": "Usunąć dane kontaktowe?",
+ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s usunął swoją nazwę ekranową (%(oldDisplayName)s).",
+ "%(senderName)s removed their profile picture.": "%(senderName)s usunął swoje zdjęcie profilowe.",
+ "Remove %(threePid)s?": "Usunąć %(threePid)s?",
+ "Hide Apps": "Ukryj aplikacje",
+ "%(senderName)s requested a VoIP conference.": "%(senderName)s zażądał grupowego połączenia głosowego VoIP.",
+ "Report it": "Zgłoś",
+ "restore": "przywróć",
+ "Results from DuckDuckGo": "Wyniki z DuckDuckGo",
+ "Return to app": "Wróć do aplikacji",
+ "Return to login screen": "Wróć do ekranu logowania",
+ "Riot does not have permission to send you notifications - please check your browser settings": "Riot nie ma uprawnień, by wysyłać ci powiadomienia - sprawdź ustawienia swojej przeglądarki",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Ukryj wiadomości o dołączeniu/opuszczeniu (nie obejmuje zaproszeń/wyrzuceń/banów)",
+ "Hide read receipts": "Ukryj potwierdzenia odczytu",
+ "Historical": "Historyczne",
+ "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.": "Resetowanie hasła zresetuje klucze szyfrowania końcówka-do-końcówki na wszystkich urządzeniach, co spowoduje, że nie będzie się dało odczytać zaszyfrowanej historii czatu, chyba że najpierw wyeksportujesz swoje klucze i ponownie je zaimportujesz. W przyszłości będzie to poprawione.",
+ "Riot was not given permission to send notifications - please try again": "Riot nie otrzymał uprawnień do wysyłania powiadomień - proszę spróbuj ponownie",
+ "riot-web version:": "wersja riot-web:",
+ "Room %(roomId)s not visible": "Pokój %(roomId)s nie jest widoczny",
+ "Room Colour": "Kolor pokoju",
+ "Room contains unknown devices": "Pokój zawiera nieznane urządzenia",
+ "Room name (optional)": "Nazwa pokoju (opcjonalna)",
+ "%(roomName)s does not exist.": "%(roomName)s nie istnieje.",
+ "%(roomName)s is not accessible at this time.": "%(roomName)s nie jest dostępny w tym momencie.",
+ "Rooms": "Pokoje",
+ "Save": "Zapisz",
+ "Scroll to bottom of page": "Przewiń do końca strony",
+ "Scroll to unread messages": "Przewiń do nieprzeczytanych wiadomości",
+ "Search failed": "Wyszukiwanie nie powiodło się",
+ "Searches DuckDuckGo for results": "Przeszukaj DuckDuckGo dla wyników",
+ "Seen by %(userName)s at %(dateTime)s": "Widziane przez %(userName)s o %(dateTime)s",
+ "Send a message (unencrypted)": "Wyślij wiadomość (nieszyfrowaną)",
+ "Send an encrypted message": "Wyślij szyfrowaną wiadomość",
+ "Send anyway": "Wyślij mimo to",
+ "Sender device information": "Informacja o urządzeniu nadawcy",
+ "Send Invites": "Wyślij zaproszenie",
+ "Send Reset Email": "Wyślij e-mail resetujący hasło",
+ "sent an image": "wysłano obraz",
+ "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s wysłał obraz.",
+ "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s wysłał zaproszenie do %(targetDisplayName)s do dołączenia do pokoju.",
+ "sent a video": "wysłał wideo",
+ "Server error": "Błąd serwera",
+ "Server may be unavailable or overloaded": "Serwer może być niedostępny lub przeciążony",
+ "Server may be unavailable, overloaded, or search timed out :(": "Serwer może być niedostępny, przeciążony, lub upłynął czas wyszukiwania :(",
+ "Server may be unavailable, overloaded, or the file too big": "Serwer może być niedostępny, przeciążony, lub plik jest za duży",
+ "Server may be unavailable, overloaded, or you hit a bug.": "Serwer może być niedostępny, przeciążony, lub trafiłeś na błąd.",
+ "Server unavailable, overloaded, or something else went wrong.": "Serwer może być niedostępny, przeciążony, lub coś innego poszło źle.",
+ "Session ID": "Identyfikator sesji",
+ "%(senderName)s set a profile picture.": "%(senderName)s ustawił zdjęcie profilowe.",
+ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s ustawił swoją nazwę na %(displayName)s.",
+ "Set": "Ustaw",
+ "Sets the room topic": "Ustaw temat pokoju",
+ "Show Apps": "Pokaż aplikacje",
+ "Show panel": "Pokaż panel",
+ "Show Text Formatting Toolbar": "Pokaż pasek narzędzi formatowania tekstu",
+ "Show timestamps in 12 hour format (e.g. 2:30pm)": "Pokaż czas w formacie 12-sto godzinnym (n.p. 2:30pm)",
+ "Signed Out": "Wylogowano",
+ "Sign in": "Zaloguj",
+ "Sign out": "Wyloguj",
+ "since the point in time of selecting this option": "od momentu zaznaczenia tej opcji",
+ "since they joined": "od momentu dołączenia",
+ "since they were invited": "od momentu zaproszenia",
+ "Some of your messages have not been sent.": "Niektóre z twoich wiadomości nie zostały wysłane.",
+ "Someone": "Ktoś",
+ "Sorry, this homeserver is using a login which is not recognised ": "Przepraszamy, ten serwer używa loginu który nie jest rozpoznawany ",
+ "Start a chat": "Rozpocznij rozmowę",
+ "Start authentication": "Rozpocznij uwierzytelnienie",
+ "Start Chat": "Rozpocznij rozmowę",
+ "Submit": "Wyślij",
+ "Success": "Sukces",
+ "tag direct chat": "oznaczył bezpośrednią rozmowę",
+ "Tagged as: ": "Oznaczone jako: ",
+ "The default role for new room members is": "Domyślną rolą dla nowych członków pokoju jest",
+ "The main address for this room is": "Głównym adresem dla tego pokoju jest",
+ "The maximum permitted number of widgets have already been added to this room.": "Do tego pokoju dodano już maksymalną dozwoloną liczbę widżetów.",
+ "The phone number entered looks invalid": "Wprowadzony numer telefonu wygląda na niepoprawny",
+ "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Podany klucz podpisu odpowiada kluczowi podpisania otrzymanemu z urządzenia %(userId)s %(deviceId)s. Urządzenie oznaczone jako zweryfikowane.",
+ "This email address is already in use": "Podany adres e-mail jest już w użyciu",
+ "This email address was not found": "Podany adres e-mail nie został znaleziony",
+ "%(actionVerb)s this person?": "%(actionVerb)s tą osobę?",
+ "changing room on a RoomView is not supported": "Zmiana pokoju na RoomView nie jest obsługiwana",
+ "Must be viewing a room": "Musi być w trakcie wyświetlania pokoju",
+ "The email address linked to your account must be entered.": "Musisz wpisać adres e-mail połączony z twoim kontem.",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Rozmiar folderu '%(fileName)s' przekracza możliwy limit do przesłania na serwer domowy",
+ "The file '%(fileName)s' failed to upload": "Przesyłanie folderu '%(fileName)s' nie powiodło się",
+ "The remote side failed to pick up": "Strona zdalna nie odebrała",
+ "This room has no local addresses": "Ten pokój nie ma lokalnych adresów",
+ "This room is not recognised.": "Ten pokój nie został rozpoznany.",
+ "These are experimental features that may break in unexpected ways": "Te funkcje są eksperymentalne i może wystąpić błąd",
+ "The visibility of existing history will be unchanged": "Widoczność dotychczasowej historii nie zostanie zmieniona",
+ "This doesn't appear to be a valid email address": "Ten adres e-mail zdaje się nie być poprawny",
+ "This is a preview of this room. Room interactions have been disabled": "To jest podgląd tego pokoju. Interakcje w pokoju zostały wyłączone",
+ "This phone number is already in use": "Ten numer telefonu jest już zajęty",
+ "This room": "Ten pokój",
+ "This room is not accessible by remote Matrix servers": "Ten pokój nie jest dostępny na zdalnych serwerach Matrix",
+ "This room's internal ID is": "Wewnętrzne ID tego pokoju to",
+ "times": "razy",
+ "To ban users": "Żeby zablokować użytkowników",
+ "to browse the directory": "żeby przeglądać katalog",
+ "To configure the room": "Żeby skonfigurować pokój",
+ "to demote": "żeby zmniejszyć priorytet",
+ "To get started, please pick a username!": "Aby rozpocząć, wybierz nazwę użytkownika!",
+ "To invite users into the room": "Żeby zaprosić użytkowników do pokoju",
+ "To kick users": "Żeby usuwać użytkowników",
+ "to make a room or": "żeby utworzyć pokój lub",
+ "To remove other users' messages": "Żeby usuwać wiadomości innych użytkowników",
+ "To reset your password, enter the email address linked to your account": "Aby zresetować swoje hasło, wpisz adres e-mail powiązany z twoim kontem",
+ "to restore": "żeby przywrócić",
+ "To send messages": "Żeby wysyłać wiadomości",
+ "to start a chat with someone": "żeby zacząć rozmowę z kimś",
+ "To send events of type": "Żeby wysyłać wydarzenia typu",
+ "to tag direct chat": "żeby oznaczyć rozmowę bezpośrednią",
+ "Turn Markdown off": "Wyłącz Markdown",
+ "Turn Markdown on": "Włącz Markdown",
+ "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s włączył szyfrowanie użytkownik-użytkownik (algorithm %(algorithm)s).",
+ "Unable to add email address": "Nie można dodać adresu e-mail",
+ "Unable to create widget.": "Nie można utworzyć widżetu.",
+ "Unable to remove contact information": "Nie można usunąć informacji kontaktowych",
+ "Unable to verify email address.": "Weryfikacja adresu e-mail nie powiodła się.",
+ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s odblokował/a %(targetName)s.",
+ "Unable to capture screen": "Nie można zrobić zrzutu ekranu",
+ "Unable to enable Notifications": "Nie można włączyć powiadomień",
+ "Unable to load device list": "Nie można załadować listy urządzeń",
+ "Undecryptable": "Odszyfrowanie niemożliwe",
+ "Unencrypted room": "Pokój nieszyfrowany",
+ "This Home Server does not support login using email address.": "Ten serwer domowy nie obsługuje logowania się poprzez adres e-mail.",
+ "This invitation was sent to an email address which is not associated with this account:": "To zaproszenie zostało wysłane na adres e-mail, który nie jest połączony z tym kontem:",
+ "to favourite": "żeby dodać do ulubionych",
+ "To use it, just wait for autocomplete results to load and tab through them.": "Żeby z niego skorzystać, należy poczekać na załadowanie się wyników autouzupełnienia i naciskać przycisk \"Tab\", by je przewijać.",
+ "Unencrypted message": "Niezaszyfrowana wiadomość",
+ "unknown caller": "nieznany dzwoniący",
+ "unknown device": "nieznane urządzenie",
+ "Unknown room %(roomId)s": "Nieznany pokój %(roomId)s",
+ "Unmute": "Wyłącz wyciszenie",
+ "Unnamed Room": "Pokój bez nazwy",
+ "Unrecognised command:": "Nierozpoznane polecenie:",
+ "Unrecognised room alias:": "Nierozpoznany alias pokoju:",
+ "Unverified": "Niezweryfikowany",
+ "Uploading %(filename)s and %(count)s others|zero": "Przesyłanie %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Przesyłanie %(filename)s oraz %(count)s innych",
+ "Uploading %(filename)s and %(count)s others|other": "Przesyłanie %(filename)s oraz %(count)s innych",
+ "uploaded a file": "przesłał plik",
+ "Upload avatar": "Prześlij awatar",
+ "Upload Failed": "Błąd przesyłania",
+ "Upload Files": "Prześlij pliki",
+ "Upload new:": "Prześlij nowy:",
+ "Use with caution": "Używać ostrożnie",
+ "%(user)s is a": "%(user)s jest",
+ "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (moc uprawnień administratorskich %(powerLevelNumber)s)",
+ "Username invalid: %(errMessage)s": "Niepoprawna nazwa użytkownika: %(errMessage)s",
+ "Verification Pending": "Oczekuje weryfikacji",
+ "Verification": "Weryfikacja",
+ "verified": "zweryfikowany",
+ "Verified": "Zweryfikowany",
+ "Verified key": "Zweryfikowany klucz",
+ "Video call": "Rozmowa wideo",
+ "Voice call": "Rozmowa głosowa",
+ "VoIP conference finished.": "Zakończono grupowe połączenie głosowe VoIP.",
+ "VoIP conference started.": "Rozpoczęto grupowe połączenie głosowe VoIP.",
+ "VoIP is unsupported": "Rozmowy głosowe VoIP nie są obsługiwane",
+ "(could not connect media)": "(brak możliwości połączenia się z mediami)",
+ "(no answer)": "(brak odpowiedzi)",
+ "(unknown failure: %(reason)s)": "(nieznany błąd: %(reason)s)",
+ "(warning: cannot be disabled again!)": "(ostrzeżenie: brak możliwości ponownego dezaktywowania!)",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "OSTRZEŻENIE: Urządzenie już zweryfikowane, ale klucze NIE PASUJĄ DO SIEBIE!",
+ "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!": "OSTRZEŻENIE: BŁĄD WERYFIKACJI KLUCZA! Klucz podpisujący dla %(userId)s i urządzenia %(deviceId)s to \"%(fprint)s\", który nie pasuje do dostarczonego klucza \"%(fingerprint)s\". To może oznaczać, że twoje komunikaty są przejmowane!",
+ "Who can access this room?": "Kto może uzyskać dostęp do tego pokoju?",
+ "Who would you like to add to this room?": "Kogo chciał(a)byś dodać do tego pokoju?",
+ "Who would you like to communicate with?": "Z kim chciał(a)byś się komunikować?",
+ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s wycofał(a) zaproszenie %(targetName)s.",
+ "Would you like to accept or decline this invitation?": "Czy chcesz zaakceptować czy odrzucić to zaproszenie?",
+ "You already have existing direct chats with this user:": "Masz już istniejącą bezpośrednią konwersację z tym użytkownikiem:",
+ "You are already in a call.": "Jesteś już w trakcie połączenia.",
+ "You are not in this room.": "Nie jesteś w tym pokoju.",
+ "You do not have permission to do that in this room.": "Nie masz pozwolenia na wykonanie tej akcji w tym pokoju.",
+ "You're not in any rooms yet! Press to make a room or to browse the directory": "Nie jesteś jeszcze w żadnym pokoju! Naciśnij , aby stworzyć pokój lub , żeby przeszukać katalog",
+ "You are trying to access %(roomName)s.": "Próbujesz uzyskać dostęp do %(roomName)s.",
+ "You cannot place a call with yourself.": "Nie możesz wykonać połączenia do siebie.",
+ "You cannot place VoIP calls in this browser.": "Nie możesz przeprowadzić rozmowy głosowej VoIP w tej przeglądarce.",
+ "You do not have permission to post to this room": "Nie jesteś uprawniony do pisania w tym pokoju",
+ "You have been banned from %(roomName)s by %(userName)s.": "Zostałeś permanentnie usunięty z pokoju %(roomName)s przez %(userName)s.",
+ "You have been invited to join this room by %(inviterName)s": "Zostałeś zaproszony do dołączenia do tego pokoju przez %(inviterName)s",
+ "You have been kicked from %(roomName)s by %(userName)s.": "Zostałeś usunięty z %(roomName)s przez %(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": "Wylogowałeś się ze wszystkich urządzeń i nie będziesz już otrzymywał powiadomień push. Aby ponownie aktywować powiadomienia zaloguj się ponownie na każdym urządzeniu",
+ "You have disabled URL previews by default.": "Masz domyślnie wyłączone podglądy linków.",
+ "You have no visible notifications": "Nie masz widocznych powiadomień",
+ "You may wish to login with a different account, or add this email to this account.": "Możesz chcieć zalogować się z innego konta lub dodać e-mail do tego konta.",
+ "you must be a": "musisz być",
+ "You must register to use this functionality": "Musisz się zarejestrować aby móc używać tej funkcji",
+ "You need to be able to invite users to do that.": "Aby to zrobić musisz mieć możliwość zapraszania użytkowników.",
+ "You need to be logged in.": "Musisz być zalogowany.",
+ "You need to enter a user name.": "Musisz wpisać nazwę użytkownika.",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Twój adres e-mail zdaje się nie być powiązany z żadnym Matrix ID na tym serwerze domowym.",
+ "Your password has been reset": "Twoje hasło zostało zresetowane",
+ "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Zmiana Twojego hasła powiodła się. Nie będziesz otrzymywał powiadomień push na inne urządzenia aż do momentu ponownego zalogowania się na nich",
+ "You seem to be in a call, are you sure you want to quit?": "Wygląda na to, że prowadzisz z kimś rozmowę; jesteś pewien że chcesz wyjść?",
+ "You seem to be uploading files, are you sure you want to quit?": "Wygląda na to, że jesteś w trakcie przesyłania plików; jesteś pewien, że chcesz wyjść?",
+ "You should not yet trust it to secure data": "Na chwilę obecną nie powinieneś ufać mu w kwestii zabezpieczenia danych",
+ "Set a display name:": "Ustaw nazwę ekranową:",
+ "This server does not support authentication with a phone number.": "Ten serwer nie wspiera autentykacji za pomocą numeru telefonu.",
+ "This doesn't look like a valid email address.": "To nie wygląda na poprawny adres e-mail.",
+ "This doesn't look like a valid phone number.": "To nie wygląda na poprawny numer telefonu.",
+ "User names may only contain letters, numbers, dots, hyphens and underscores.": "Nazwa użytkownika może zawierać tylko litery, cyfry, kropki, myślniki i podkreślenia.",
+ "An unknown error occurred.": "Wystąpił nieznany błąd.",
+ "I already have an account": "Posiadam już konto",
+ "Share message history with new users": "Udostępnij historię wiadomości nowym użytkownikom",
+ "Encrypt room": "Zaszyfruj pokój",
+ "There are no visible files in this room": "Nie ma widocznych plików w tym pokoju",
+ "Connectivity to the server has been lost.": "Połączenie z serwerem zostało utracone.",
+ "bold": "wytłuszczenie",
+ "italic": "kursywa",
+ "underline": "podkreślenie",
+ "code": "kod",
+ "quote": "cytat",
+ "Edit Group": "Edytuj grupę",
+ "Join an existing group": "Dołącz do istniejącej grupy",
+ "Create a new group": "Stwórz nową grupę",
+ "Create": "Utwórz",
+ "Groups": "Grupy",
+ "Online": "Dostępny",
+ "Offline": "Niedostępny",
+ "Add an Integration": "Dodaj integrację",
+ "Token incorrect": "Niepoprawny token",
+ "This action is irreversible.": "Ta akcja jest nieodwracalna.",
+ "To link to a room it must have an address .": "Aby móc stworzyć link do pokoju musi on mieć swój adres .",
+ "unencrypted": "niezaszyfrowany",
+ "Unknown (user, device) pair:": "Nieznana para (użytkownik, urządzenie):",
+ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Nie będziesz mógł cofnąć tej zmiany, ponieważ nadajesz użytkownikowi uprawnienia administratorskie równe Twoim.",
+ "Your home server does not support device management.": "Twój serwer domowy nie obsługuje zarządzania urządzeniami.",
+ "Unbans user with given id": "Odblokowuje użytkownika o danym ID",
+ "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Nie udało się upewnić, że adres na który to zaproszenie zostało wysłane zgadza się z tym adresem, który jest powiązany z twoim kontem.",
+ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s",
+ "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
+ "Upload an avatar:": "Prześlij awatar:",
+ "Missing password.": "Brakujące hasło.",
+ "Passwords don't match.": "Hasła nie zgadzają się.",
+ "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Za krótkie hasło (min. %(MIN_PASSWORD_LENGTH)s).",
+ "An error occurred: %(error_string)s": "Wystąpił błąd: %(error_string)s",
+ "Make Moderator": "Nadaj uprawnienia moderatora",
+ "Make this room private": "Nadaj temu pokojowi charakter prywatny",
+ "Sent messages will be stored until your connection has returned.": "Wysłane wiadomości będą przechowywane aż do momentu odzyskania połączenia.",
+ "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Wyślij ponownie wszystkie lub anuluj wszystkie teraz. Możesz też wybrać poszczególne wiadomości aby wysłać je ponownie lub anulować.",
+ "(~%(count)s results)|one": "(~%(count)s wynik)",
+ "(~%(count)s results)|other": "(~%(count)s wyników)",
+ "Active call": "Aktywna rozmowa",
+ "strike": "przekreślenie",
+ "bullet": "lista",
+ "numbullet": "lista numerowana",
+ "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s dołączyli do pokoju %(repeats)s razy",
+ "%(oneUser)sjoined %(repeats)s times": "%(oneUser)s dołączył(a) do pokoju %(repeats)s razy",
+ "%(severalUsers)sjoined": "%(severalUsers)s dołączyli",
+ "%(oneUser)sjoined": "%(oneUser)s dołączył(a)",
+ "%(severalUsers)sleft %(repeats)s times": "%(severalUsers)s opuścili pokój %(repeats)s razy",
+ "%(oneUser)sleft %(repeats)s times": "%(oneUser)s opuścił(a) pokój %(repeats)s razy",
+ "%(severalUsers)sleft": "%(severalUsers)s opuścili pokój",
+ "%(oneUser)sleft": "%(oneUser)s opuścił(a) pokój",
+ "%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers)s dołączyli i opuścili pokój %(repeats)s razy",
+ "%(oneUser)sjoined and left %(repeats)s times": "%(oneUser)s dołączył(a) i opuścił(a) pokój %(repeats)s razy",
+ "%(severalUsers)sjoined and left": "%(severalUsers)s dołączyli i opuścili pokój",
+ "%(oneUser)sjoined and left": "%(oneUser)s dołączył(a) i opuścił(a) pokój",
+ "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)s opuścili i ponownie dołączyli do pokoju %(repeats)s razy",
+ "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)s opuścił(a) i ponownie dołączył(a) do pokoju %(repeats)s razy",
+ "%(severalUsers)sleft and rejoined": "%(severalUsers)s opuścili i ponownie dołączyli do pokoju",
+ "%(oneUser)sleft and rejoined": "%(oneUser)s opuścił(a) i dołączył(a) ponownie do pokoju",
+ "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)s odrzucili swoje zaproszenia %(repeats)s razy",
+ "%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)sodrzucił swoje zaproszenie %(repeats)s razy",
+ "%(severalUsers)srejected their invitations": "%(severalUsers)sodrzucili swoje zaproszenia",
+ "%(oneUser)srejected their invitation": "%(oneUser)sodrzucił swoje zaproszenie",
+ "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)swycofali swoje zaproszenia %(repeats)s razy",
+ "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)swycofał swoje zaproszenie %(repeats)s razy",
+ "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)swycofali swoje zaproszenia",
+ "%(oneUser)shad their invitation withdrawn": "%(oneUser)swycofał swoje zaproszenie",
+ "were invited %(repeats)s times": "zostali zaproszeni %(repeats)s razy",
+ "was invited %(repeats)s times": "został(a) zaproszony/a %(repeats)s razy",
+ "were invited": "zostali zaproszeni",
+ "was invited": "został(a) zaproszony/a",
+ "were banned %(repeats)s times": "zostali zablokowani %(repeats)s times",
+ "was banned %(repeats)s times": "został(a) zablokowany/a %(repeats)s razy",
+ "were banned": "zostali zablokowani",
+ "was banned": "został(a) zablokowany/a",
+ "were unbanned %(repeats)s times": "zostali odblokowani %(repeats)s razy",
+ "was unbanned %(repeats)s times": "został(a) odblokowany/a %(repeats)s razy",
+ "were unbanned": "zostali odblokowani",
+ "was unbanned": "został odblokowany",
+ "were kicked %(repeats)s times": "zostali usunięci %(repeats)s razy",
+ "was kicked %(repeats)s times": "został usunięty %(repeats)s razy",
+ "were kicked": "zostali usunięci",
+ "was kicked": "został usunięty",
+ "%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)s zmienili swoją nazwę %(repeats)s razy",
+ "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)s zmienił(a) swoją nazwę %(repeats)s razy",
+ "%(severalUsers)schanged their name": "%(severalUsers)szmienili swoje nazwy",
+ "%(oneUser)schanged their name": "%(oneUser)s zmienił(a) swoją nazwę",
+ "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)s zmienili swoje zdjęcia profilowe %(repeats)s razy",
+ "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)s zmienił(a) swoje zdjęcie profilowe %(repeats)s razy",
+ "%(severalUsers)schanged their avatar": "%(severalUsers)s zmienili swoje zdjęcia profilowe",
+ "%(oneUser)schanged their avatar": "%(oneUser)s zmienił(a) swoje zdjęcie profilowe",
+ "Please select the destination room for this message": "Wybierz pokój docelowy dla tej wiadomości",
+ "Start automatically after system login": "Uruchom automatycznie po zalogowaniu się do systemu",
+ "Desktop specific": "Specyficzne dla desktopowej aplikacji klienckiej",
+ "Analytics": "Analityka",
+ "Passphrases must match": "Hasła szyfrujące muszą być identyczne",
+ "Passphrase must not be empty": "Hasło szyfrujące nie może być puste",
+ "Export room keys": "Eksportuj klucze pokoju",
+ "Confirm passphrase": "Potwierdź hasło szyfrujące",
+ "Import room keys": "Importuj klucze pokoju",
+ "File to import": "Plik do importu",
+ "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Ten proces pozwala na eksport kluczy do wiadomości otrzymanych w zaszyfrowanych pokojach do pliku lokalnego. Wtedy będzie można importować plik do innego klienta Matrix w przyszłości, tak aby ów klient także mógł rozszyfrować te wiadomości.",
+ "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Ten proces pozwala na import zaszyfrowanych kluczy, które wcześniej zostały eksportowane z innego klienta Matrix. Będzie można odszyfrować każdą wiadomość, którą ów inny klient mógł odszyfrować.",
+ "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Eksportowany plik będzie chroniony hasłem szyfrującym. Aby odszyfrować plik, wpisz hasło szyfrujące tutaj.",
+ "You must join the room to see its files": "Należy dołączyć do pokoju by zobaczyć jego pliki",
+ "Reject all %(invitedRooms)s invites": "Odrzuć wszystkie zaproszenia do %(invitedRooms)s",
+ "Failed to invite": "Wysłanie zaproszenia nie powiodło się",
+ "Failed to invite user": "Wysłanie zaproszenia użytkownikowi nie powiodło się",
+ "Failed to invite the following users to the %(roomName)s room:": "Wysłanie zaproszenia do następujących użytkowników do pokoju %(roomName)s nie powiodło się:",
+ "Confirm Removal": "Potwierdź usunięcie",
+ "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Jesteś pewien że chcesz usunąć to wydarzenie? Pamiętaj, że jeśli usuniesz nazwę pokoju lub aktualizację tematu pokoju, zmiana może zostać cofnięta.",
+ "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "To sprawi, że Twoje konto będzie permamentnie nieużywalne. Nie będzie można zarejestrować się ponownie z tą samą identyfikacją użytkownika.",
+ "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Aby sprawdzić czy to urządzenie jest zaufane, skontaktuj się z jego właścicielem używając innych środków (np. osobiście lub telefonicznie) i zapytaj ich czy klucz, który widzą w ustawieniach użytkownika dla tego urządzenia pasuje do klucza poniżej:",
+ "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Jeśli klucz pasuje, naciśnij na przycisk \"Zweryfikuj\" poniżej. Jeśli nie, to ktoś inny najprawdopodobniej przejmuje lub podszywa się pod to urządzenie i powinieneś nacisnąć przycisk dodania do czarnej listy.",
+ "In future this verification process will be more sophisticated.": "W przyszłości proces weryfikacji będzie bardziej skomplikowany.",
+ "I verify that the keys match": "Upewnię się, że klucze się zgadzają",
+ "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Napotkaliśmy błąd podczas próby przywrócenia Twojej poprzedniej sesji. Aby kontynuować, musisz zalogować się ponownie, a zaszyfrowana historia czatu nie będzie do odczytania.",
+ "Unable to restore session": "Przywrócenie sesji jest niemożliwe",
+ "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.": "Jeśli wcześniej używałeś/aś nowszej wersji Riot, Twoja sesja może być niekompatybilna z tą wersją. Zamknij to okno i powróć do nowszej wersji.",
+ "Continue anyway": "Kontynuuj mimo to",
+ "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Aktualnie wpisujesz niezweryfikowane urządzenia na czarną listę; aby wysłać wiadomość do tych urządzeń musisz je zweryfikować.",
+ "Riot collects anonymous analytics to allow us to improve the application.": "Riot zbiera anonimowe dane analityczne, aby umożliwić nam rozwijanie aplikacji.",
+ "Verifies a user, device, and pubkey tuple": "Weryfikuje użytkownika, urządzenie i krotkę kluczy publicznych",
+ "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" zawiera niewidziane przez Ciebie wcześniej urządzenia.",
+ "ex. @bob:example.com": "np. @jan:example.com",
+ "This Home Server would like to make sure you are not a robot": "Ten serwer domowy chciałby się upewnić, że nie jesteś robotem",
+ "Sign in with CAS": "Zaloguj się używając CAS",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "To umożliwia Ci używanie tej aplikacji wraz z istniejącym kontem Matrix na innym serwerze domowym.",
+ "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Nastąpiła próba załadowania danego punktu w historii tego pokoju, lecz nie masz uprawnień, by zobaczyć określoną wiadomość.",
+ "Use compact timeline layout": "Użyj kompaktowego stylu linii czasu",
+ "You have enabled URL previews by default.": "Masz domyślnie włączone podglądy linków.",
+ "Opt out of analytics": "Zrezygnuj z analityk",
+ "Please check your email to continue registration.": "Sprawdź swój e-mail, aby kontynuować rejestrację.",
+ "Please enter the code it contains:": "Wpisz kod, który jest tam zawarty:",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Jeśli nie ustawisz adresu e-mail, nie będzie możliwe zresetowanie Twojego hasła. Kontynuować?",
+ "You are registering with %(SelectedTeamName)s": "Rejestrujesz się z %(SelectedTeamName)s",
+ "Custom server": "Serwer niestandardowy",
+ "Home server URL": "Adres serwera domowego",
+ "What does this mean?": "Co to znaczy?",
+ "Error decrypting audio": "Błąd deszyfrowania audio",
+ "Error decrypting image": "Błąd deszyfrowania obrazu",
+ "Image '%(Body)s' cannot be displayed.": "Obraz '%(Body)s' nie może zostać wyświetlony.",
+ "Error decrypting video": "Błąd deszyfrowania wideo",
+ "Removed or unknown message type": "Usunięto lub nieznany typ wiadomości",
+ "Disable URL previews by default for participants in this room": "Ustaw podglądy linków na domyślnie wyłączone dla uczestników w tym pokoju",
+ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Próbowano załadować konkretny punkt na osi czasu w tym pokoju, ale nie nie można go znaleźć.",
+ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Wyeksportowany plik pozwoli każdej osobie będącej w stanie go odczytać na deszyfrację jakichkolwiek zaszyfrowanych wiadomości, które możesz zobaczyć, tak więc zalecane jest zachowanie ostrożności. Aby w tym pomóc, powinieneś/aś wpisać hasło poniżej; hasło to będzie użyte do zaszyfrowania wyeksportowanych danych. Późniejsze zaimportowanie tych danych będzie możliwe tylko po uprzednim podaniu owego hasła.",
+ " (unsupported)": " (niewspierany)",
+ "for %(amount)ss": "za %(amount)s sek",
+ "for %(amount)sm": "%(amount)s min",
+ "for %(amount)sh": "%(amount)s godz",
+ "for %(amount)sd": "%(amount)s dni",
+ "Idle": "Bezczynny",
+ "Check for update": "Sprawdź aktualizacje",
+ "$senderDisplayName changed the room avatar to ": "$senderDisplayName zmienił awatar pokoju na ",
+ "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s usunął awatar pokoju.",
+ "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s zmienił awatar %(roomName)s",
+ "This will be your account name on the homeserver, or you can pick a different server .": "To będzie twoja nazwa konta na serwerze domowym; możesz też wybrać inny serwer .",
+ "If you already have a Matrix account you can log in instead.": "Jeśli już posiadasz konto Matrix możesz się zalogować .",
+ "Not a valid Riot keyfile": "Niepoprawny plik klucza Riot",
+ "Authentication check failed: incorrect password?": "Próba autentykacji nieudana: nieprawidłowe hasło?",
+ "Disable Peer-to-Peer for 1:1 calls": "Wyłącz P2P dla połączeń 1:1",
+ "Do you want to set an email address?": "Czy chcesz ustawić adres e-mail?",
+ "To return to your account in future you need to set a password": "By móc powrócić do swojego konta w przyszłości musisz ustawić hasło",
+ "Share without verifying": "Udostępnij bez weryfikacji",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "Dodałeś nowe urządzenie '%(displayName)s', które żąda kluczy szyfrujących.",
+ "Your unverified device '%(displayName)s' is requesting encryption keys.": "Twoje niezweryfikowane urządzenie '%(displayName)s' żąda kluczy szyfrujących.",
+ "Encryption key request": "Żądanie klucza szyfrującego",
+ "Autocomplete Delay (ms):": "Opóźnienie autouzupełniania (ms):",
+ "This Home server does not support groups": "Ten serwer domowy nie wspiera grup",
+ "Loading device info...": "Wczytywanie informacji o urządzeniu...",
+ "Create Group": "Utwórz grupę",
+ "Group Name": "Nazwa grupy",
+ "Example": "Przykład",
+ "Group ID": "ID grupy",
+ "+example:%(domain)s": "+przyklad:%(domain)s",
+ "Room creation failed": "Nie udało się utworzyć pokoju",
+ "You are a member of these groups:": "Jesteś członkiem następujących grup:",
+ "Drop file here to upload": "Upuść plik tutaj, aby go przesłać",
+ "Error whilst fetching joined groups": "Błąd podczas pobierania informacji o dołączonych grupach",
+ "Automatically replace plain text Emoji": "Automatycznie zastępuj tekstowe emotikony",
+ "Failed to upload image": "Przesyłanie obrazka nie powiodło się",
+ "Failed to update group": "Uaktualnienie grupy nie powiodło się",
+ "%(count)s new messages|one": "%(count)s nowa wiadomość",
+ "%(count)s new messages|other": "%(count)s nowe wiadomości",
+ "%(weekDayName)s, %(monthName)s %(day)s": "%(weekDayName)s, %(day)s %(monthName)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s",
+ "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Zalecamy Ci przejście przez proces weryfikacyjny dla każdego urządzenia aby potwierdzić, że należy ono do ich prawdziwego właściciela. Możesz jednak wysłać tę wiadomość bez potwierdzania.",
+ "Unblacklist": "Usuń z czarnej listy",
+ "Blacklist": "Dodaj do czarnej listy",
+ "Unverify": "Usuń weryfikację",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Możesz zalogować się do innych serwerów usługi Matrix poprzez podanie innego URL serwera domowego w ustawieniach niestandardowych serwera.",
+ "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Możesz również ustawić niestandardowy serwer Identity, ale to z reguły nie pozwala na interakcję z użytkowniki w oparciu o ich adres e-mail.",
+ "Identity server URL": "URL serwera Identity",
+ "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Za chwilę zostaniesz przekierowany/a na zewnętrzną stronę w celu powiązania Twojego konta z %(integrationsUrl)s. Czy chcesz kontynuować?",
+ "Disable URL previews for this room (affects only you)": "Wyłącz podglądy linków w tym pokoju (dotyczy tylko Ciebie)",
+ "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "Podglądy linków są domyślnie %(globalDisableUrlPreview)s dla uczestników tego pokoju.",
+ "URL Previews": "Podglądy linków",
+ "Enable URL previews for this room (affects only you)": "Włącz podglądy linków w tym pokoju (dotyczy tylko Ciebie)",
+ "Ongoing conference call%(supportedText)s.": "Połączenie grupowe %(supportedText)s w toku.",
+ "Group IDs must be of the form +localpart:%(domain)s": "ID grupy muszą mieć format +częśćlokalna:%(domain)s",
+ "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "W chwili obecnej tworzenie grup jest możliwe wyłącznie na Twoim własnym serwerze domowym: użyj ID grupy kończącego się na %(domain)s",
+ "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Stwórz grupę, aby reprezentować Twoją społeczność! Zdefiniuj zestaw kanałów i Twoją własną stronę WWW by oznaczyć swoje miejsce w wszechświecie Matrixa.",
+ "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org .": "Aby dołączyć do istniejącej grupy musisz znać jej identyfikator; wygląda on mniej więcej tak: +example:matrix.org .",
+ "Featured Rooms:": "Wyróżnione pokoje:",
+ "Featured Users:": "Wyróżnieni użytkownicy:",
+ "Hide avatars in user and room mentions": "Ukryj awatary we wzmiankach użytkowników i pokoi",
+ "%(widgetName)s widget added by %(senderName)s": "Widżet %(widgetName)s został dodany przez %(senderName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "Widżet %(widgetName)s został usunięty przez %(senderName)s",
+ "%(widgetName)s widget modified by %(senderName)s": "Widżet %(widgetName)s został zmodyfikowany przez %(senderName)s",
+ "Robot check is currently unavailable on desktop - please use a web browser ": "Sprawdzanie człowieczeństwa jest obecnie niedostępne na aplikacji klienckiej desktop - proszę użyć przeglądarki internetowej "
}
diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json
index 16ffc1f107..ba4968b7ad 100644
--- a/src/i18n/strings/pt.json
+++ b/src/i18n/strings/pt.json
@@ -8,9 +8,6 @@
"Admin": "Administrador/a",
"Advanced": "Avançado",
"Algorithm": "Algoritmo",
- "all room members, from the point they are invited.": "todos os membros da sala, a partir de quando foram convidados",
- "all room members, from the point they joined.": "todos os membros da sala, a partir de quando entraram",
- "all room members": "todas as pessoas da sala",
"an address": "um endereço",
"and": "e",
"An email has been sent to": "Um email foi enviado para",
@@ -63,7 +60,6 @@
"Deops user with given id": "Retirar função de moderador do usuário com o identificador informado",
"Device ID": "Identificador do dispositivo",
"Devices will not yet be able to decrypt history from before they joined the room": "Os dispositivos não serão ainda capazes de descriptografar o histórico anterior à sua entrada na sala",
- "Direct Chat": "Conversa pessoal",
"Disable inline URL previews by default": "Desabilitar visualizações prévias por padrão",
"Display name": "Nome",
"Displays action": "Visualizar atividades",
@@ -99,9 +95,6 @@
"For security, this session has been signed out. Please sign in again.": "Por questões de segurança, esta sessão foi encerrada. Por gentileza conecte-se novamente.",
"Found a bug?": "Encontrou um problema de funcionamento do sistema?",
"Guests cannot join this room even if explicitly invited.": "Visitantes não podem entrar nesta sala, mesmo se forem explicitamente convidadas/os.",
- "Guests can't set avatars. Please register.": "Convidados não podem definir uma foto do perfil. Por favor, registre-se.",
- "Guests can't use labs features. Please register.": "Convidados não podem usar as funcionalidades de laboratório (lab), por gentileza se registre.",
- "Guest users can't upload files. Please register to upload.": "Usuários não podem fazer envio de arquivos. Por favor se cadastre para enviar arquivos.",
"had": "teve",
"Hangup": "Desligar",
"Historical": "Histórico",
@@ -130,7 +123,6 @@
"Login as guest": "Entrar como visitante",
"Logout": "Sair",
"Low priority": "Baixa prioridade",
- "made future room history visible to": "deixou o histórico futuro da sala visível para",
"Manage Integrations": "Gerenciar integrações",
"Members only": "Apenas integrantes da sala",
"Mobile phone number": "Telefone celular",
@@ -149,7 +141,7 @@
"No users have specific privileges in this room": "Nenhum/a usuário/a possui privilégios específicos nesta sala",
"olm version: ": "Versão do olm: ",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Assim que a criptografia é ativada para uma sala, ela não poderá ser desativada novamente (ainda)",
- "Once you've followed the link it contains, click below": "Quando você tiver clicado no link que está no email, clique o botão abaixo",
+ "Once you've followed the link it contains, click below": "Quando você tiver clicado no link que está no email, clique o botão abaixo",
"Only people who have been invited": "Apenas pessoas que tenham sido convidadas",
"or": "ou",
"other": "outro",
@@ -161,7 +153,6 @@
"Phone": "Telefone",
"placed a": "iniciou uma",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor verifique seu email e clique no link enviado. Quando finalizar este processo, clique para continuar.",
- "Please Register": "Por favor registe-se",
"Privacy warning": "Alerta sobre privacidade",
"Privileged Users": "Usuárias/os privilegiadas/os",
"Profile": "Perfil",
@@ -243,7 +234,6 @@
"unencrypted": "não criptografado",
"unknown device": "dispositivo desconhecido",
"unknown error code": "código de erro desconhecido",
- "unknown": "desconhecido",
"Upload avatar": "Enviar icone de perfil de usuário",
"uploaded a file": "enviou um arquivo",
"Upload Files": "Enviar arquivos",
@@ -303,11 +293,6 @@
"Dec": "Dez",
"%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s de %(monthName)s às %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s às %(time)s",
- "en": "Inglês",
- "pt-br": "Português do Brasil",
- "de": "Alemão",
- "da": "Dinamarquês",
- "ru": "Russo",
"%(targetName)s accepted an invitation.": "%(targetName)s aceitou um convite.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceitou o convite para %(displayName)s.",
"all room members, from the point they are invited": "todas/os as/os integrantes da sala, a partir do momento em que foram convidadas/os",
@@ -316,7 +301,6 @@
"%(names)s and one other are typing": "%(names)s e uma outra pessoa estão escrevendo",
"%(names)s and %(count)s others are typing": "%(names)s e %(count)s outras pessoas estão escrevendo",
"%(senderName)s answered the call.": "%(senderName)s atendeu à chamada.",
- "anyone": "qualquer pessoa",
"%(senderName)s banned %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.",
"Call Timeout": "Tempo esgotado. Chamada encerrada",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s mudou seu nome público de %(oldDisplayName)s para %(displayName)s.",
@@ -340,22 +324,23 @@
"Failed to verify email address: make sure you clicked the link in the email": "Não foi possível verificar o endereço de email: verifique se você realmente clicou no link que está no seu email",
"Failure to create room": "Não foi possível criar a sala",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s para %(toPowerLevel)s",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Visitantes não podem criar novas salas. Por favor, registre-se para criar uma sala e iniciar uma conversa.",
"%(senderName)s invited %(targetName)s.": "%(senderName)s convidou %(targetName)s.",
"%(displayName)s is typing": "%(displayName)s está escrevendo",
"%(targetName)s joined the room.": "%(targetName)s entrou na sala.",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.",
"%(targetName)s left the room.": "%(targetName)s saiu da sala.",
- "%(senderName)s made future room history visible to": "%(senderName)s deixou o histórico futuro da sala visível para",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s deixou o histórico futuro da sala visível para todos os membros da sala, a partir de quando foram convidados.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s deixou o histórico futuro da sala visível para todos os membros da sala, a partir de quando entraram.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s deixou o histórico futuro da sala visível para todas as pessoas da sala.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s deixou o histórico futuro da sala visível para qualquer pessoa.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s deixou o histórico futuro da sala visível para desconhecido (%(visibility)s).",
"Missing room_id in request": "Faltou o id da sala na requisição",
"Missing user_id in request": "Faltou o id de usuário na requisição",
"Must be viewing a room": "Tem que estar visualizando uma sala",
- "New Composer & Autocomplete": "Nova ferramenta de formatação de mensagens e autocompletar",
"(not supported by this browser)": "(não é compatível com este navegador)",
"olm version": "versão olm",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s fez uma chamada de %(callType)s.",
"Power level must be positive integer.": "O nível de permissões tem que ser um número inteiro e positivo.",
- "Press": "Aperte",
"Reason": "Razão",
"%(targetName)s rejected the invitation.": "%(targetName)s recusou o convite.",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removeu o seu nome público (%(oldDisplayName)s).",
@@ -368,7 +353,6 @@
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s enviou um convite para %(targetDisplayName)s entrar na sala.",
"%(senderName)s set a profile picture.": "%(senderName)s definiu uma imagem de perfil.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s definiu seu nome público para %(displayName)s.",
- "tag as %(tagName)s": "marcar como %(tagName)s",
"This email address is already in use": "Este endereço de email já está sendo usado",
"This email address was not found": "Este endereço de email não foi encontrado",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "O arquivo '%(fileName)s' ultrapassa o limite de tamanho que nosso servidor permite enviar",
@@ -384,11 +368,9 @@
"To remove other users' messages": "Para apagar mensagens de outras pessoas",
"to restore": "para restaurar",
"to start a chat with someone": "para iniciar uma conversa com alguém",
- "to tag as %(tagName)s": "para marcar como %(tagName)s",
"to tag direct chat": "para marcar a conversa como pessoal",
"To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, espere o carregamento dos resultados de autocompletar e então escolha entre as opções.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ativou criptografia ponta a ponta (algoritmo %(algorithm)s).",
- "Unable to restore previous session": "Não foi possível restaurar a sessão anterior",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s desfez o banimento de %(targetName)s.",
"Unable to capture screen": "Não foi possível capturar a imagem da tela",
"Unable to enable Notifications": "Não foi possível ativar as notificações",
@@ -426,140 +408,27 @@
"Riot was unable to find the correct Data for the selected Language.": "Não foi possível encontrar os dados para o idioma selecionado.",
"Connectivity to the server has been lost.": "A conexão com o servidor foi perdida. Verifique sua conexão de internet.",
"Sent messages will be stored until your connection has returned.": "Imagens enviadas ficarão armazenadas até que sua conexão seja reestabelecida.",
- "Auto-complete": "Autocompletar",
"Resend all": "Reenviar todas as mensagens",
"cancel all": "cancelar todas",
"now. You can also select individual messages to resend or cancel.": "agora. Você também pode escolher mensagens individuais e definir se vai reenviar ou cancelar o envio.",
"Active call": "Chamada ativa",
- "af": "Afrikaans",
- "ar-ae": "Árabe (E.A.U.)",
- "ar-bh": "Árabe (Bahrain)",
- "ar-dz": "Árabe (Argélia)",
"Sunday": "Domingo",
"Monday": "Segunda-feira",
"ar-eg": "Árabe (Egito)",
"ar-tn": "Árabe (Tunísia)",
- "be": "Bielorrusso",
- "bg": "Búlgaro",
- "ca": "Catalão",
- "cs": "Checo",
- "el": "Grego",
- "en-au": "Inglês (Austrália)",
- "en-ca": "Inglês (Canadá)",
- "en-gb": "Inglês (Reino Unido)",
- "en-ie": "Inglês (Irlanda)",
- "en-nz": "Inglês (Nova Zelândia)",
- "en-us": "Inglês (Estados Unidos)",
- "es-ar": "Espanhol (Argentina)",
- "es-py": "Espanhol (Paraguai)",
- "es": "Espanhol (Espanha)",
- "et": "Estônia",
- "fa": "Farsi",
- "fi": "Finlandês",
- "fr-be": "Francês (Bélgica)",
- "fr-ca": "Francês (Canadá)",
- "fr-ch": "Francês (Suíça)",
- "fr": "Francês",
- "ga": "Irlandês",
- "he": "Hebreu",
- "hi": "Hindu",
- "hr": "Croácia",
- "hu": "Hungria",
- "id": "Indonésio",
- "is": "Islandês",
- "it": "Italiano",
- "ja": "Japonês",
- "ji": "Ídiche",
- "lt": "Lituânia",
- "lv": "Letão",
- "ms": "Malaio",
- "mt": "Maltês",
- "nl-be": "Holandês (Bélgica)",
- "nl": "Holandês",
- "no": "Norueguês",
- "pl": "Polonês",
- "pt": "Português (Portugal)",
- "rm": "Romanche",
- "ro": "Romeno",
- "sk": "Eslovaco",
- "sl": "Esloveno",
- "sq": "Albanês",
- "sr": "Sérvio",
- "sv": "Suécia",
- "th": "Tailandês",
- "tn": "Tsuana",
- "tr": "Turquia",
- "ts": "Tsonga",
- "uk": "Ucraniano",
- "ur": "Urdu",
- "vi": "Vietnamita",
- "xh": "Xhosa",
- "zu": "Zulu",
"Failed to forget room %(errCode)s": "Falha ao esquecer a sala %(errCode)s",
- "Failed to join the room": "Falha ao entrar na sala",
"Tuesday": "Terça-feira",
"Wednesday": "Quarta-feira",
"Thursday": "Quinta-feira",
"Friday": "Sexta-feira",
"Saturday": "Sábado",
- "ar-iq": "Árabe (Iraque)",
- "ar-jo": "Árabe (Jordânia)",
- "ar-kw": "Árabe (Kuwait)",
- "ar-lb": "Árabe (Líbano)",
- "ar-ly": "Árabe (Líbia)",
- "ar-ma": "Árabe (Marrocos)",
- "ar-om": "Árabe (Omã)",
- "ar-qa": "Árabe (Catar)",
- "ar-sa": "Árabe (Arábia Saudita)",
- "ar-sy": "Árabe (Síria)",
- "ar-ye": "Árabe (Iémen)",
- "de-at": "Alemão (Áustria)",
- "de-ch": "Alemão (Suíça)",
- "de-li": "Alemão (Liechtenstein)",
- "de-lu": "Alemão (Luxemburgo)",
- "en-bz": "Inglês (Belize)",
- "en-jm": "Inglês (Jamaica)",
- "en-tt": "Inglês (Trindade)",
- "en-za": "English (África do Sul)",
- "es-bo": "Espanhol (Bolívia)",
- "es-cl": "Espanhol (Chile)",
- "es-co": "Espanhol (Colômbia)",
- "es-cr": "Espanhol (Costa Rica)",
- "es-do": "Espanhol (República Dominicana)",
- "es-ec": "Espanhol (Equador)",
- "es-gt": "Espanhol (Guatemala)",
- "es-hn": "Espanhol (Honduras)",
- "es-mx": "Espanhol (México)",
- "es-ni": "Espanhol (Nicarágua)",
- "es-pa": "Espanhol (Panamá)",
"%(oneUser)schanged their avatar": "%(oneUser)salterou sua imagem pública",
- "es-pe": "Espanhol (Peru)",
- "es-pr": "Espanhol (Porto Rico)",
- "es-sv": "Espanhol (El Salvador)",
- "es-uy": "Espanhol (Uruguai)",
- "es-ve": "Espanhol (Venezuela)",
- "eu": "Basco (Basco)",
- "fr-lu": "Francês (Luxemburgo)",
- "gd": "Galês (Escócia)",
- "it-ch": "Italiano (Suíça)",
- "ko": "Coreano",
- "mk": "Macedônio (República da Macedônia)",
- "ro-mo": "Romano (Moldávia)",
- "ru-mo": "Russo (Moldávia)",
- "sb": "Sorábio",
- "sv-fi": "Sueco (Finlândia)",
- "zh-cn": "Chinês (República Popular da China)",
- "zh-hk": "Chinês (Hong Kong SAR)",
- "zh-sg": "Chinês (Singapura)",
- "zh-tw": "Chinês (Taiwan)",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Uma mensagem de texto foi enviada para +%(msisdn)s. Gentileza entrar com o código de verificação que contém",
"%(items)s and %(remaining)s others": "%(items)s e %(remaining)s outros",
"%(items)s and one other": "%(items)s e um outro",
"%(items)s and %(lastItem)s": "%(items)s e %(lastItem)s",
- "and %(count)s others...": {
- "other": "e %(count)s outros...",
- "one": "e um outro..."
- },
+ "and %(count)s others...|other": "e %(count)s outros...",
+ "and %(count)s others...|one": "e um outro...",
"Are you sure?": "Você tem certeza?",
"Attachment": "Anexo",
"Autoplay GIFs and videos": "Reproduzir automaticamente GIFs e videos",
@@ -571,7 +440,6 @@
"Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Não consigo conectar ao servidor padrão - favor checar sua conexão à internet e verificar se o certificado SSL do seu servidor padrão é confiável.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts .": "Não consigo conectar ao servidor padrão através de HTTP quando uma URL HTTPS está na barra de endereços do seu navegador. Use HTTPS ou então habilite scripts não seguros no seu navegador .",
"Change Password": "Alterar senha",
- "changing room on a RoomView is not supported": "mudar a sala em uma 'RoomView' não é permitido",
"Click to mute audio": "Clique para colocar o áudio no mudo",
"Click to mute video": "Clique para desabilitar imagens de vídeo",
"Click to unmute video": "Clique para voltar a mostrar imagens de vídeo",
@@ -631,7 +499,6 @@
"Some of your messages have not been sent.": "Algumas das suas mensagens não foram enviadas.",
"Submit": "Enviar",
"The main address for this room is": "O endereço principal desta sala é",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "Esta ação não pode ser realizada por um/a usuário/a visitante. Por favor, registre-se para poder fazer isso.",
"%(actionVerb)s this person?": "%(actionVerb)s esta pessoa?",
"This room has no local addresses": "Esta sala não tem endereços locais",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tentei carregar um ponto específico na linha do tempo desta sala, mas parece que você não tem permissões para ver a mensagem em questão.",
@@ -740,7 +607,6 @@
"You must join the room to see its files": "Você precisa ingressar na sala para ver seus arquivos",
"Reject all %(invitedRooms)s invites": "Rejeitar todos os %(invitedRooms)s convites",
"Start new chat": "Iniciar nova conversa",
- "Guest users can't invite users. Please register.": "Visitantes não podem convidar usuárias(os) registradas(os). Favor registrar.",
"Failed to invite": "Falha ao enviar o convite",
"Failed to invite user": "Falha ao convidar a(o) usuária(o)",
"Failed to invite the following users to the %(roomName)s room:": "Falha ao convidar as(os) seguintes usuárias(os) para a sala %(roomName)s:",
@@ -762,7 +628,6 @@
"Unable to restore session": "Não foi possível restaurar a sessão",
"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.": "Se você já usou antes uma versão mais recente do Riot, a sua sessão pode ser incompatível com esta versão. Feche esta janela e tente abrir com a versão mais recente.",
"Continue anyway": "Continuar de qualquer maneira",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "O seu nome público é como você aparecerá para as outras pessoas quando conversar nas salas. Qual nome público você deseja ter?",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Você está atualmente bloqueando dispositivos não verificados. Para enviar mensagens para estes dispositivos, você necessita antes verificá-los.",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Nós recomendamos que você passe pelo processo de verificação para cada dispositivo para confirmar que eles pertencem às pessoas que efetivamente são suas donas, mas você pode reenviar a mensagem sem verificar isso, se assim o desejar.",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contém dispositivos que você não viu antes.",
@@ -829,7 +694,6 @@
"Results from DuckDuckGo": "Resultados de DuckDuckGo",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "A chave de assinatura que você forneceu é a mesma que a chave de assinatura que você recebeu do dispositivo %(deviceId)s de %(userId)s . O dispositivo foi portanto marcado como verificado.",
"This Home Server does not support login using email address.": "Este Servidor de Base não permite login usando endereço de e-mail.",
- "There was a problem logging in.": "Houve um problema ao fazer login.",
"Unknown (user, device) pair:": "Par usuária(o)-dispositivo desconhecido:",
"Unrecognised command:": "Comando não reconhecido:",
"Unrecognised room alias:": "Apelido de sala não reconhecido:",
@@ -837,7 +701,6 @@
"Verified key": "Chave verificada",
"WARNING: Device already verified, but keys do NOT MATCH!": "ATENÇÃO: O dispositivo já foi verificado, mas as chaves NÃO SÃO IGUAIS!",
"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!": "ATENÇÃO: VERIFICAÇÃO DE CHAVE FALHOU! A chave de assinatura para a(o) usuária(o) %(userId)s e dispositivo %(deviceId)s é \"%(fprint)s\", que não é igual à chave fornecida \"%(fingerprint)s\". Isso pode significar que suas comunicações estão sendo interceptadas!",
- "Set a Display Name": "Definir seu nome público",
"for %(amount)ss": "por %(amount)ss",
"for %(amount)sm": "por %(amount)sm",
"for %(amount)sh": "por %(amount)sh",
@@ -862,7 +725,6 @@
"device id: ": "id do dispositivo: ",
"Device key:": "Chave do dispositivo:",
"Email address (optional)": "Endereço de e-mail (opcional)",
- "List this room in %(domain)s's room directory?": "Deseja listar esta sala na lista pública de salas de %(domain)s?",
"Mobile phone number (optional)": "Número de telefone celular (opcional)",
"Password:": "Senha:",
"Register": "Registre-se",
@@ -871,28 +733,25 @@
"Tagged as: ": "Marcado como: ",
"You have disabled URL previews by default.": "Você desabilitou pré-visualizações de links por padrão.",
"You have enabled URL previews by default.": "Você habilitou pré-visualizações de links por padrão.",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "Você inseriu um contato inválido. Tente usar o ID Matrix ou endereço de e-mail da pessoa que está buscando.",
"You have been banned from %(roomName)s by %(userName)s.": "Você foi expulso(a) da sala %(roomName)s por %(userName)s.",
"Send anyway": "Enviar de qualquer maneira",
"This room": "Esta sala",
"Create new room": "Criar nova sala",
"Click on the button below to start chatting!": "Clique no botão abaixo para começar a conversar!",
- "Disable markdown formatting": "Desabilitar formatação MarkDown",
"No display name": "Sem nome público de usuária(o)",
"This will be your account name on the homeserver, or you can pick a different server .": "Este será seu nome de conta no Servidor de Base , ou então você pode escolher um servidor diferente .",
- "Uploading %(filename)s and %(count)s others.one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos",
+ "Uploading %(filename)s and %(count)s others|one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos",
"Hide removed messages": "Ocultar mensagens removidas",
"You may wish to login with a different account, or add this email to this account.": "Você pode querer fazer login com uma conta diferente, ou adicionar este e-mail a esta conta.",
- "Welcome page": "Página de boas vindas",
"Upload new:": "Enviar novo:",
"Private Chat": "Conversa privada",
"You must register to use this functionality": "Você deve se registrar para poder usar esta funcionalidade",
"And %(count)s more...": "E mais %(count)s...",
"Start chatting": "Iniciar a conversa",
"Public Chat": "Conversa pública",
- "Uploading %(filename)s and %(count)s others.zero": "Enviando o arquivo %(filename)s",
+ "Uploading %(filename)s and %(count)s others|zero": "Enviando o arquivo %(filename)s",
"Room contains unknown devices": "Esta sala contém dispositivos desconhecidos",
- "Admin tools": "Ferramentas de administração",
+ "Admin Tools": "Ferramentas de administração",
"You have been kicked from %(roomName)s by %(userName)s.": "Você foi removido(a) da sala %(roomName)s por %(userName)s.",
"Undecryptable": "Não é possível descriptografar",
"Incoming video call from %(name)s": "Chamada de vídeo de %(name)s recebida",
@@ -900,7 +759,6 @@
"To link to a room it must have an address .": "Para produzir um link para uma sala, ela necessita ter um endereço .",
"a room": "uma sala",
"Your home server does not support device management.": "O seu Servidor de Base não suporta o gerenciamento de dispositivos.",
- "Searching known users": "Buscando pessoas conhecidas",
"Alias (optional)": "Apelido (opcional)",
"Active call (%(roomName)s)": "Chamada ativa (%(roomName)s)",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Não foi possível garantir que o endereço para o qual este convite foi enviado bate com alqum que está associado com sua conta.",
@@ -908,7 +766,7 @@
"Failed to upload profile picture!": "Falha ao enviar a imagem de perfil!",
"This invitation was sent to an email address which is not associated with this account:": "Este convite foi enviado para um endereço de e-mail que não é associado a esta conta:",
"Show Text Formatting Toolbar": "Exibir barra de formatação de texto",
- "Room directory": "Lista pública de salas",
+ "Room directory": "Lista de salas",
"Failed to fetch avatar URL": "Falha ao obter a URL da imagem de perfil",
"Incoming call from %(name)s": "Chamada de %(name)s recebida",
"Last seen": "Último uso",
@@ -921,14 +779,14 @@
"Enable Notifications": "Habilitar notificações",
"Username not available": "Nome de usuária(o) indisponível",
"Encrypted by a verified device": "Criptografado por um dispositivo verificado",
- "(~%(count)s results).other": "(~%(count)s resultados)",
+ "(~%(count)s results)|other": "(~%(count)s resultados)",
"unknown caller": "a pessoa que está chamando é desconhecida",
"Start authentication": "Iniciar autenticação",
- "(~%(count)s results).one": "(~%(count)s resultado)",
+ "(~%(count)s results)|one": "(~%(count)s resultado)",
"New Password": "Nova senha",
"Username invalid: %(errMessage)s": "Nome de usuária(o) inválido: %(errMessage)s",
"Disable Notifications": "Desabilitar notificações",
- "%(count)s new messages.one": "%(count)s nova mensagem",
+ "%(count)s new messages|one": "%(count)s nova mensagem",
"Device Name": "Nome do dispositivo",
"Incoming voice call from %(name)s": "Chamada de voz de %(name)s recebida",
"If you already have a Matrix account you can log in instead.": "Se você já tem uma conta Matrix, pode também fazer login .",
@@ -937,11 +795,11 @@
"Set": "Definir",
"Unencrypted message": "Mensagem não criptografada",
"Join as voice or video .": "Participar por voz ou por vídeo .",
- "Uploading %(filename)s and %(count)s others.other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos",
+ "Uploading %(filename)s and %(count)s others|other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos",
"Username available": "Nome de usuária(o) disponível",
"Close": "Fechar",
"Level:": "Nível:",
- "%(count)s new messages.other": "%(count)s novas mensagens",
+ "%(count)s new messages|other": "%(count)s novas mensagens",
"Unverified": "Não verificado",
"Click here to join the discussion!": "Clique aqui para participar da conversa!",
"Decline": "Recusar",
@@ -957,7 +815,7 @@
"Home": "Início",
"Something went wrong!": "Algo deu errado!",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nível de permissão %(powerLevelNumber)s)",
- "Start chat": "Iniciar conversa pessoal",
+ "Start chat": "Iniciar conversa",
"You already have existing direct chats with this user:": "Você já tem conversas pessoais com esta pessoa:",
"Accept": "Aceitar",
"%(roomName)s is not accessible at this time.": "%(roomName)s não está acessível neste momento."
diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json
index 5ad721188a..af4804bd85 100644
--- a/src/i18n/strings/pt_BR.json
+++ b/src/i18n/strings/pt_BR.json
@@ -8,9 +8,6 @@
"Admin": "Administrador/a",
"Advanced": "Avançado",
"Algorithm": "Algoritmo",
- "all room members, from the point they are invited.": "todos os membros da sala, a partir de quando foram convidados",
- "all room members, from the point they joined.": "todos os membros da sala, a partir de quando entraram",
- "all room members": "todas as pessoas da sala",
"an address": "um endereço",
"and": "e",
"An email has been sent to": "Um email foi enviado para",
@@ -63,7 +60,6 @@
"Deops user with given id": "Retirar função de moderador do usuário com o identificador informado",
"Device ID": "Identificador do dispositivo",
"Devices will not yet be able to decrypt history from before they joined the room": "Os dispositivos não serão ainda capazes de descriptografar o histórico anterior à sua entrada na sala",
- "Direct Chat": "Conversa pessoal",
"Disable inline URL previews by default": "Desabilitar visualizações prévias por padrão",
"Display name": "Nome",
"Displays action": "Visualizar atividades",
@@ -99,9 +95,6 @@
"For security, this session has been signed out. Please sign in again.": "Por questões de segurança, esta sessão foi encerrada. Por gentileza conecte-se novamente.",
"Found a bug?": "Encontrou um problema de funcionamento do sistema?",
"Guests cannot join this room even if explicitly invited.": "Visitantes não podem entrar nesta sala, mesmo se forem explicitamente convidadas/os.",
- "Guests can't set avatars. Please register.": "Convidados não podem definir uma foto do perfil. Por favor, registre-se.",
- "Guests can't use labs features. Please register.": "Convidados não podem usar as funcionalidades de laboratório (lab), por gentileza se registre.",
- "Guest users can't upload files. Please register to upload.": "Usuários não podem fazer envio de arquivos. Por favor se cadastre para enviar arquivos.",
"had": "teve",
"Hangup": "Desligar",
"Historical": "Histórico",
@@ -130,7 +123,6 @@
"Login as guest": "Entrar como visitante",
"Logout": "Sair",
"Low priority": "Baixa prioridade",
- "made future room history visible to": "deixou o histórico futuro da sala visível para",
"Manage Integrations": "Gerenciar integrações",
"Members only": "Apenas integrantes da sala",
"Mobile phone number": "Telefone celular",
@@ -149,7 +141,7 @@
"No users have specific privileges in this room": "Nenhum/a usuário/a possui privilégios específicos nesta sala",
"olm version: ": "Versão do olm: ",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Assim que a criptografia é ativada para uma sala, ela não poderá ser desativada novamente (ainda)",
- "Once you've followed the link it contains, click below": "Quando você tiver clicado no link que está no email, clique o botão abaixo",
+ "Once you've followed the link it contains, click below": "Quando você tiver clicado no link que está no email, clique o botão abaixo",
"Only people who have been invited": "Apenas pessoas que tenham sido convidadas",
"or": "ou",
"other": "outro",
@@ -161,7 +153,6 @@
"Phone": "Telefone",
"placed a": "iniciou uma",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor verifique seu email e clique no link enviado. Quando finalizar este processo, clique para continuar.",
- "Please Register": "Por favor, cadastre-se",
"Privacy warning": "Alerta sobre privacidade",
"Privileged Users": "Usuárias/os privilegiadas/os",
"Profile": "Perfil",
@@ -243,7 +234,6 @@
"unencrypted": "não criptografado",
"unknown device": "dispositivo desconhecido",
"unknown error code": "código de erro desconhecido",
- "unknown": "desconhecido",
"Upload avatar": "Enviar icone de perfil de usuário",
"uploaded a file": "enviou um arquivo",
"Upload Files": "Enviar arquivos",
@@ -303,20 +293,12 @@
"Dec": "Dez",
"%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s de %(monthName)s às %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s às %(time)s",
- "en": "Inglês",
- "pt-br": "Português do Brasil",
- "de": "Alemão",
- "da": "Dinamarquês",
- "ru": "Russo",
"%(targetName)s accepted an invitation.": "%(targetName)s aceitou um convite.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceitou o convite para %(displayName)s.",
- "all room members, from the point they are invited": "todas/os as/os integrantes da sala, a partir do momento em que foram convidadas/os",
- "all room members, from the point they joined": "todas/os as/os integrantes da sala, a partir do momento em que entraram na sala",
"%(names)s and %(lastPerson)s are typing": "%(names)s e %(lastPerson)s estão escrevendo",
"%(names)s and one other are typing": "%(names)s e uma outra pessoa estão escrevendo",
"%(names)s and %(count)s others are typing": "%(names)s e %(count)s outras pessoas estão escrevendo",
"%(senderName)s answered the call.": "%(senderName)s atendeu à chamada.",
- "anyone": "qualquer pessoa",
"%(senderName)s banned %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.",
"Call Timeout": "Tempo esgotado. Chamada encerrada",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s mudou seu nome público de %(oldDisplayName)s para %(displayName)s.",
@@ -340,22 +322,23 @@
"Failed to verify email address: make sure you clicked the link in the email": "Não foi possível verificar o endereço de email: verifique se você realmente clicou no link que está no seu email",
"Failure to create room": "Não foi possível criar a sala",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s para %(toPowerLevel)s",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Visitantes não podem criar novas salas. Por favor, registre-se para criar uma sala e iniciar uma conversa.",
"%(senderName)s invited %(targetName)s.": "%(senderName)s convidou %(targetName)s.",
"%(displayName)s is typing": "%(displayName)s está escrevendo",
"%(targetName)s joined the room.": "%(targetName)s entrou na sala.",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.",
"%(targetName)s left the room.": "%(targetName)s saiu da sala.",
- "%(senderName)s made future room history visible to": "%(senderName)s deixou o histórico futuro da sala visível para",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s deixou o histórico futuro da sala visível para todos os membros da sala, a partir de quando foram convidados.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s deixou o histórico futuro da sala visível para todos os membros da sala, a partir de quando entraram.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s deixou o histórico futuro da sala visível para todas as pessoas da sala.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s deixou o histórico futuro da sala visível para qualquer pessoa.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s deixou o histórico futuro da sala visível para desconhecido (%(visibility)s).",
"Missing room_id in request": "Faltou o id da sala na requisição",
"Missing user_id in request": "Faltou o id de usuário na requisição",
"Must be viewing a room": "Tem que estar visualizando uma sala",
- "New Composer & Autocomplete": "Nova ferramenta de formatação de mensagens e autocompletar",
"(not supported by this browser)": "(não é compatível com este navegador)",
"olm version": "versão olm",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s fez uma chamada de %(callType)s.",
"Power level must be positive integer.": "O nível de permissões tem que ser um número inteiro e positivo.",
- "Press": "Aperte",
"Press to start a chat with someone": "Clique em para iniciar a conversa com alguém",
"Reason": "Razão",
"%(targetName)s rejected the invitation.": "%(targetName)s recusou o convite.",
@@ -369,7 +352,6 @@
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s enviou um convite para %(targetDisplayName)s entrar na sala.",
"%(senderName)s set a profile picture.": "%(senderName)s definiu uma imagem de perfil.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s definiu seu nome público para %(displayName)s.",
- "tag as %(tagName)s": "marcar como %(tagName)s",
"This email address is already in use": "Este endereço de email já está sendo usado",
"This email address was not found": "Este endereço de email não foi encontrado",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "O arquivo '%(fileName)s' ultrapassa o limite de tamanho que nosso servidor permite enviar",
@@ -385,11 +367,9 @@
"To remove other users' messages": "Para apagar mensagens de outras pessoas",
"to restore": "para restaurar",
"to start a chat with someone": "para iniciar uma conversa com alguém",
- "to tag as %(tagName)s": "para marcar como %(tagName)s",
"to tag direct chat": "para marcar a conversa como pessoal",
"To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, espere o carregamento dos resultados de autocompletar e então escolha entre as opções.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ativou criptografia ponta a ponta (algoritmo %(algorithm)s).",
- "Unable to restore previous session": "Não foi possível restaurar a sessão anterior",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s desfez o banimento de %(targetName)s.",
"Unable to capture screen": "Não foi possível capturar a imagem da tela",
"Unable to enable Notifications": "Não foi possível ativar as notificações",
@@ -397,6 +377,8 @@
"Usage": "Uso",
"Use with caution": "Use com cautela",
"VoIP is unsupported": "Chamada de voz não permitida",
+ "Sunday": "Domingo",
+ "Monday": "Segunda",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s desfez o convite a %(targetName)s.",
"You are already in a call.": "Você já está em uma chamada.",
"You're not in any rooms yet! Press to make a room or to browse the directory": "Você ainda não está em nenhuma sala! Clique em para criar uma sala ou em para navegar pela lista pública de salas",
@@ -427,140 +409,23 @@
"Riot was unable to find the correct Data for the selected Language.": "Não foi possível encontrar os dados para o idioma selecionado.",
"Connectivity to the server has been lost.": "A conexão com o servidor foi perdida. Verifique sua conexão de internet.",
"Sent messages will be stored until your connection has returned.": "Imagens enviadas ficarão armazenadas até que sua conexão seja reestabelecida.",
- "Auto-complete": "Autocompletar",
"Resend all": "Reenviar todas as mensagens",
"cancel all": "cancelar todas",
"now. You can also select individual messages to resend or cancel.": "agora. Você também pode escolher mensagens individuais e definir se vai reenviar ou cancelar o envio.",
"Active call": "Chamada ativa",
- "af": "Afrikaans",
- "ar-ae": "Árabe (U.A.E.)",
- "ar-bh": "Árabe (Bahrain)",
- "ar-dz": "Árabe (Algéria)",
- "Sunday": "Domingo",
- "Monday": "Segunda",
- "ar-eg": "Árabe (Egito)",
- "ar-tn": "Árabe (Tunisia)",
- "be": "Bielorusso",
- "bg": "Búlgaro",
- "ca": "Catalão",
- "cs": "Tcheco",
- "el": "Grego",
- "en-au": "Inglês (Austrália)",
- "en-ca": "Inglês (Canadá)",
- "en-gb": "Inglês (Reino Unido)",
- "en-ie": "Inglês (Irlanda)",
- "en-nz": "Inglês (Nova Zelândia)",
- "en-us": "Inglês (Estados Unidos)",
- "es-ar": "Espanhol (Argentina)",
- "es-py": "Espanhol (Paraguai)",
- "es": "Espanhol (Espanha)",
- "et": "Estônia",
- "fa": "Farsi",
- "fi": "Finlandês",
- "fr-be": "Francês (Bélgica)",
- "fr-ca": "Francês (Canadá)",
- "fr-ch": "Francês (Suíça)",
- "fr": "Francês",
- "ga": "Irlandês",
- "he": "Hebreu",
- "hi": "Hindu",
- "hr": "Croácia",
- "hu": "Hungria",
- "id": "Indonésio",
- "is": "Islandês",
- "it": "Italiano",
- "ja": "Japonês",
- "ji": "Ídiche",
- "lt": "Lituânia",
- "lv": "Letão",
- "ms": "Malaio",
- "mt": "Maltês",
- "nl-be": "Holandês (Bélgica)",
- "nl": "Holandês",
- "no": "Norueguês",
- "pl": "Polonês",
- "pt": "Português (Portugal)",
- "rm": "Romanche",
- "ro": "Romeno",
- "sk": "Eslovaco",
- "sl": "Esloveno",
- "sq": "Albanês",
- "sr": "Sérvio",
- "sv": "Suécia",
- "th": "Tailandês",
- "tn": "Tsuana",
- "tr": "Turquia",
- "ts": "Tsonga",
- "uk": "Ucraniano",
- "ur": "Urdu",
- "vi": "Vietnamita",
- "xh": "Xhosa",
- "zu": "Zulu",
"Failed to forget room %(errCode)s": "Falhou ao esquecer a sala %(errCode)s",
- "Failed to join the room": "Falhou ao entrar na sala",
"Tuesday": "Terça",
"Wednesday": "Quarta",
"Thursday": "Quinta",
"Friday": "Sexta",
"Saturday": "Sábado",
- "ar-iq": "Árabe (Iraque)",
- "ar-jo": "Árabe (Jordânia)",
- "ar-kw": "Árabe (Kuwait)",
- "ar-lb": "Árabe (Líbano)",
- "ar-ly": "Árabe (Líbia)",
- "ar-ma": "Árabe (Marrocos)",
- "ar-om": "Árabe (Omã)",
- "ar-qa": "Árabe (Catar)",
- "ar-sa": "Árabe (Arábia Saudita)",
- "ar-sy": "Árabe (Síria)",
- "ar-ye": "Árabe (Iémen)",
- "de-at": "Alemão (Austria)",
- "de-ch": "Alemão (Suíça)",
- "de-li": "Alemão (Liechtenstein)",
- "de-lu": "Alemão (Luxemburgo)",
- "en-bz": "Inglês (Belize)",
- "en-jm": "Inglês (Jamaica)",
- "en-tt": "English (Trindade)",
- "en-za": "English (África do Sul)",
- "es-bo": "Espanhol (Bolívia)",
- "es-cl": "Espanhol (Chile)",
- "es-co": "Espanhol (Colômbia)",
- "es-cr": "Espanhol (Costa Rica)",
- "es-do": "Espanhol (República Dominicana)",
- "es-ec": "Espanhol (Equador)",
- "es-gt": "Espanhol (Guatemala)",
- "es-hn": "Espanhol (Honduras)",
- "es-mx": "Espanhol (México)",
- "es-ni": "Espanhol (Nicarágua)",
- "es-pa": "Espanhol (Panamá)",
"%(oneUser)schanged their avatar": "%(oneUser)salterou sua imagem pública",
- "es-pe": "Espanhol (Peru)",
- "es-pr": "Espanhol (Porto Rico)",
- "es-sv": "Espanhol (El Salvador)",
- "es-uy": "Espanhol (Uruguai)",
- "es-ve": "Espanhol (Venezuela)",
- "eu": "Basco (Basco)",
- "fr-lu": "Francês (Luxemburgo)",
- "gd": "Galês (Escócia)",
- "it-ch": "Italiano (Suíça)",
- "ko": "Coreano",
- "mk": "Macedônio (República da Macedônia)",
- "ro-mo": "Romano (Moldávia)",
- "ru-mo": "Russo (Moldávia)",
- "sb": "Sorábio",
- "sv-fi": "Sueco (Finlândia)",
- "zh-cn": "Chinês (República Popular da China)",
- "zh-hk": "Chinês (Hong Kong SAR)",
- "zh-sg": "Chinês (Singapura)",
- "zh-tw": "Chinês (Taiwan)",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Uma mensagem de texto foi enviada para +%(msisdn)s. Gentileza entrar com o código de verificação que contém",
"%(items)s and %(remaining)s others": "%(items)s e %(remaining)s outros",
"%(items)s and one other": "%(items)s e um outro",
"%(items)s and %(lastItem)s": "%(items)s e %(lastItem)s",
- "and %(count)s others...": {
- "other": "e %(count)s outros...",
- "one": "e um outro..."
- },
+ "and %(count)s others...|one": "e um outro...",
+ "and %(count)s others...|other": "e %(count)s outros...",
"Are you sure?": "Você tem certeza?",
"Attachment": "Anexo",
"Autoplay GIFs and videos": "Reproduzir automaticamente GIFs e videos",
@@ -572,7 +437,6 @@
"Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Não consigo conectar ao servidor padrão - favor checar sua conexão à internet e verificar se o certificado SSL do seu servidor padrão é confiável.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts .": "Não consigo conectar ao servidor padrão através de HTTP quando uma URL HTTPS está na barra de endereços do seu navegador. Use HTTPS ou então habilite scripts não seguros no seu navegador .",
"Change Password": "Alterar senha",
- "changing room on a RoomView is not supported": "mudar a sala em uma 'RoomView' não é permitido",
"Click to mute audio": "Clique para colocar o áudio no mudo",
"Click to mute video": "Clique para desabilitar imagens de vídeo",
"Click to unmute video": "Clique para voltar a mostrar imagens de vídeo",
@@ -632,7 +496,6 @@
"Some of your messages have not been sent.": "Algumas das suas mensagens não foram enviadas.",
"Submit": "Enviar",
"The main address for this room is": "O endereço principal desta sala é",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "Esta ação não pode ser realizada por um/a usuário/a visitante. Por favor, registre-se para poder fazer isso.",
"%(actionVerb)s this person?": "%(actionVerb)s esta pessoa?",
"This room has no local addresses": "Esta sala não tem endereços locais",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tentei carregar um ponto específico na linha do tempo desta sala, mas parece que você não tem permissões para ver a mensagem em questão.",
@@ -741,7 +604,6 @@
"You must join the room to see its files": "Você precisa ingressar na sala para ver seus arquivos",
"Reject all %(invitedRooms)s invites": "Rejeitar todos os %(invitedRooms)s convites",
"Start new chat": "Iniciar nova conversa",
- "Guest users can't invite users. Please register.": "Visitantes não podem convidar usuárias(os) registradas(os). Favor registrar.",
"Failed to invite": "Falha ao enviar o convite",
"Failed to invite user": "Falha ao convidar a(o) usuária(o)",
"Failed to invite the following users to the %(roomName)s room:": "Falha ao convidar as(os) seguintes usuárias(os) para a sala %(roomName)s:",
@@ -763,7 +625,6 @@
"Unable to restore session": "Não foi possível restaurar a sessão",
"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.": "Se você já usou antes uma versão mais recente do Riot, a sua sessão pode ser incompatível com esta versão. Feche esta janela e tente abrir com a versão mais recente.",
"Continue anyway": "Continuar de qualquer maneira",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "O seu nome público é como você aparecerá para as outras pessoas quando conversar nas salas. Qual nome público você deseja ter?",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Você está atualmente bloqueando dispositivos não verificados. Para enviar mensagens para estes dispositivos, você necessita antes verificá-los.",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Nós recomendamos que você passe pelo processo de verificação para cada dispositivo para confirmar que eles pertencem às pessoas que efetivamente são suas donas, mas você pode reenviar a mensagem sem verificar isso, se assim o desejar.",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contém dispositivos que você não viu antes.",
@@ -830,7 +691,6 @@
"Results from DuckDuckGo": "Resultados de DuckDuckGo",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "A chave de assinatura que você forneceu é a mesma que a chave de assinatura que você recebeu do dispositivo %(deviceId)s de %(userId)s . O dispositivo foi portanto marcado como verificado.",
"This Home Server does not support login using email address.": "Este Servidor de Base não permite login usando endereço de e-mail.",
- "There was a problem logging in.": "Houve um problema ao fazer login.",
"Unknown (user, device) pair:": "Par usuária(o)-dispositivo desconhecido:",
"Unrecognised command:": "Comando não reconhecido:",
"Unrecognised room alias:": "Apelido de sala não reconhecido:",
@@ -838,7 +698,6 @@
"Verified key": "Chave verificada",
"WARNING: Device already verified, but keys do NOT MATCH!": "ATENÇÃO: O dispositivo já foi verificado, mas as chaves NÃO SÃO IGUAIS!",
"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!": "ATENÇÃO: VERIFICAÇÃO DE CHAVE FALHOU! A chave de assinatura para a(o) usuária(o) %(userId)s e dispositivo %(deviceId)s é \"%(fprint)s\", que não é igual à chave fornecida \"%(fingerprint)s\". Isso pode significar que suas comunicações estão sendo interceptadas!",
- "Set a Display Name": "Definir seu nome público",
"for %(amount)ss": "por %(amount)ss",
"for %(amount)sm": "por %(amount)sm",
"for %(amount)sh": "por %(amount)sh",
@@ -863,7 +722,6 @@
"device id: ": "id do dispositivo: ",
"Device key:": "Chave do dispositivo:",
"Email address (optional)": "Endereço de e-mail (opcional)",
- "List this room in %(domain)s's room directory?": "Deseja listar esta sala na lista pública de salas de %(domain)s?",
"Mobile phone number (optional)": "Número de telefone celular (opcional)",
"Password:": "Senha:",
"Register": "Registre-se",
@@ -872,25 +730,21 @@
"Tagged as: ": "Marcado como: ",
"You have disabled URL previews by default.": "Você desabilitou pré-visualizações de links por padrão.",
"You have enabled URL previews by default.": "Você habilitou pré-visualizações de links por padrão.",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "Você inseriu um contato inválido. Tente usar o ID Matrix ou endereço de e-mail da pessoa que está buscando.",
"Hide removed messages": "Ocultar mensagens removidas",
"Add": "Adicionar",
- "%(count)s new messages.one": "%(count)s nova mensagem",
- "%(count)s new messages.other": "%(count)s novas mensagens",
- "Disable markdown formatting": "Desabilitar formatação MarkDown",
+ "%(count)s new messages|one": "%(count)s nova mensagem",
+ "%(count)s new messages|other": "%(count)s novas mensagens",
"Error: Problem communicating with the given homeserver.": "Erro: problema de comunicação com o Servidor de Base fornecido.",
"Failed to fetch avatar URL": "Falha ao obter a URL da imagem de perfil",
"Home": "Início",
"The phone number entered looks invalid": "O número de telefone inserido parece ser inválido",
- "Uploading %(filename)s and %(count)s others.zero": "Enviando o arquivo %(filename)s",
- "Uploading %(filename)s and %(count)s others.one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos",
- "Uploading %(filename)s and %(count)s others.other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos",
+ "Uploading %(filename)s and %(count)s others|zero": "Enviando o arquivo %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos",
+ "Uploading %(filename)s and %(count)s others|other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos",
"Username invalid: %(errMessage)s": "Nome de usuária(o) inválido: %(errMessage)s",
- "Searching known users": "Buscando pessoas conhecidas",
"You must register to use this functionality": "Você deve se registrar para poder usar esta funcionalidade",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Reenviar todas ou cancelar todas agora. Você também pode selecionar mensagens individuais que queira reenviar ou cancelar.",
"Create new room": "Criar nova sala",
- "Welcome page": "Página de boas vindas",
"Room directory": "Lista pública de salas",
"Start chat": "Iniciar conversa pessoal",
"New Password": "Nova senha",
@@ -907,7 +761,7 @@
"a room": "uma sala",
"Accept": "Aceitar",
"Active call (%(roomName)s)": "Chamada ativa (%(roomName)s)",
- "Admin tools": "Ferramentas de administração",
+ "Admin Tools": "Ferramentas de administração",
"And %(count)s more...": "E mais %(count)s...",
"Alias (optional)": "Apelido (opcional)",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Não foi possível conectar ao Servidor de Base. Por favor, confira sua conectividade à internet, garanta que o certificado SSL do Servidor de Base é confiável, e que uma extensão do navegador não esteja bloqueando as requisições de rede.",
@@ -959,8 +813,8 @@
"You have been kicked from %(roomName)s by %(userName)s.": "Você foi removido(a) da sala %(roomName)s por %(userName)s.",
"You may wish to login with a different account, or add this email to this account.": "Você pode querer fazer login com uma conta diferente, ou adicionar este e-mail a esta conta.",
"Your home server does not support device management.": "O seu Servidor de Base não suporta o gerenciamento de dispositivos.",
- "(~%(count)s results).one": "(~%(count)s resultado)",
- "(~%(count)s results).other": "(~%(count)s resultados)",
+ "(~%(count)s results)|one": "(~%(count)s resultado)",
+ "(~%(count)s results)|other": "(~%(count)s resultados)",
"Device Name": "Nome do dispositivo",
"(could not connect media)": "(não foi possível conectar-se à mídia)",
"(no answer)": "(sem resposta)",
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index 51fbeee0fd..cfab960e32 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -8,15 +8,11 @@
"Admin": "Администратор",
"Advanced": "Дополнительно",
"Algorithm": "Алгоритм",
- "all room members": "все участники комнаты",
- "all room members, from the point they are invited": "все участники комнаты, с момента приглашения",
- "all room members, from the point they joined": "все участники комнаты, с момента входа",
"an address": "адрес",
"and": "и",
"An email has been sent to": "Email был отправлен",
"A new password must be entered.": "Введите новый пароль.",
"answered the call.": "принятый звонок.",
- "anyone": "любой",
"Anyone who knows the room's link, apart from guests": "Любой, кто знает ссылку на комнату, кроме гостей",
"Anyone who knows the room's link, including guests": "Любой, кто знает ссылку комнаты, включая гостей",
"Are you sure you want to reject the invitation?": "Вы уверены что вы хотите отклонить приглашение?",
@@ -59,8 +55,7 @@
"Deops user with given id": "Снимает полномочия оператора с пользователя с заданным ID",
"Device ID": "ID устройства",
"Devices will not yet be able to decrypt history from before they joined the room": "Устройства пока не могут дешифровать историю до их входа в комнату",
- "Direct Chat": "Прямой чат",
- "Disable inline URL previews by default": "Отключить предварительный просмотр URL-адресов по умолчанию",
+ "Disable inline URL previews by default": "Отключить предпросмотр URL-адресов по умолчанию",
"Display name": "Отображаемое имя",
"Displays action": "Отображение действий",
"Ed25519 fingerprint": "Ed25519 отпечаток",
@@ -118,7 +113,6 @@
"Login as guest": "Войти как гость",
"Logout": "Выйти",
"Low priority": "Низкий приоритет",
- "made future room history visible to": "made future room history visible to",
"Manage Integrations": "Управление интеграциями",
"Members only": "Только участники",
"Mobile phone number": "Номер мобильного телефона",
@@ -145,7 +139,6 @@
"Permissions": "Разрешения",
"Phone": "Телефон",
"placed a": "placed a",
- "Please Register": "Пожалуйста, зарегистрируйтесь",
"rejected the invitation.": "rejected the invitation.",
"removed their display name": "removed their display name",
"removed their profile picture": "removed their profile picture",
@@ -173,7 +166,6 @@
"unencrypted": "без шифрования",
"unknown device": "неизвестное устройство",
"unknown error code": "неизвестный код ошибки",
- "unknown": "неизвестный",
"Upload avatar": "Загрузить аватар",
"uploaded a file": "отправил(а) файл",
"Upload Files": "Отправка файлов",
@@ -211,11 +203,6 @@
"Your password has been reset": "Ваш пароль был сброшен",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Пароль успешно изменен. До повторной авторизации вы не будете получать push-уведомления на других устройствах",
"You should not yet trust it to secure data": "На сегодняшний день не следует полностью полагаться на то, что ваши данные будут надежно зашифрованы",
- "en": "Английский",
- "pt-br": "Португальский (Бразилия)",
- "de": "Немецкий",
- "da": "Датский",
- "ru": "Русский",
"%(targetName)s accepted an invitation.": "%(targetName)s принял приглашение.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s принял приглашение от %(displayName)s.",
"Resend all": "Переслать снова всем",
@@ -247,80 +234,22 @@
"Failed to verify email address: make sure you clicked the link in the email": "Не удалось проверить адрес электронной почты: убедитесь, что вы перешли по ссылке в письме",
"Failure to create room": "Не удалось создать комнату",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s с %(fromPowerLevel)s на %(toPowerLevel)s",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Гости не могут создавать новые комнаты. Зарегистрируйтесь, чтобы создать комнату и начать чат.",
"click to reveal": "нажмите для открытия",
"%(senderName)s invited %(targetName)s.": "%(senderName)s приглашает %(targetName)s.",
"%(displayName)s is typing": "%(displayName)s печатает",
"%(targetName)s joined the room.": "%(targetName)s вошел(ла) в комнату.",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s выкинул %(targetName)s.",
"%(targetName)s left the room.": "%(targetName)s покинул комнату.",
- "%(senderName)s made future room history visible to": "%(senderName)s сделал будущую историю комнаты видимой",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s сделал будущую историю комнаты видимой все участники комнаты, с момента приглашения.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s сделал будущую историю комнаты видимой все участники комнаты, с момента входа.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s сделал будущую историю комнаты видимой все участники комнаты.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s сделал будущую историю комнаты видимой любой.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s сделал будущую историю комнаты видимой неизвестный (%(visibility)s).",
"Missing room_id in request": "Отсутствует room_id в запросе",
"Missing user_id in request": "Отсутствует user_id в запросе",
"Must be viewing a room": "Необходимо посмотреть комнату",
- "New Composer & Autocomplete": "Новый текстовый редактор и автозаполнение",
"(not supported by this browser)": "(не поддерживается этим браузером)",
- "af": "Африкаанс",
- "ar-ae": "Арабский (ОАЭ)",
- "ar-bh": "Арабский (Бахрейн)",
- "ar-dz": "Арабский (Алжир)",
- "ar-eg": "Арабский (Египет)",
- "ar-iq": "Арабский (Ирак)",
- "ar-jo": "Арабский (Иордания)",
- "ar-kw": "Арабский (Кувейт)",
- "ar-lb": "Арабский (Ливан)",
- "ar-ly": "Арабский (Ливия)",
- "ar-ma": "Арабский (Марокко)",
- "ar-om": "Арабский (Оман)",
- "ar-qa": "Арабский (Катар)",
- "ar-sa": "Арабский (Саудовская Аравия)",
- "ar-sy": "Арабский (Сирия)",
- "ar-tn": "Арабский (Тунис)",
- "ar-ye": "Арабский (Йемен)",
- "be": "Беларуский",
- "bg": "Болгарский",
- "ca": "Каталанский",
- "cs": "Чешский",
- "de-at": "Немецкий (Австрия)",
- "de-ch": "Немецкий (Швейцария)",
- "de-li": "Немецкий (Лихтенштейн)",
- "de-lu": "Немецкий (Люксембург)",
- "el": "Греческий",
- "en-au": "Английский (Австралия)",
- "en-bz": "Английский (Белиз)",
- "en-ca": "Английский (Канада)",
- "en-gb": "Английский (Великобритания)",
- "en-ie": "Английский (Ирландия)",
- "en-jm": "Английский (Ямайка)",
- "en-nz": "Английский (Новая Зеландия)",
- "en-tt": "Английский (Тринидад)",
- "en-us": "Английский (США)",
- "en-za": "Английский (Южная Африка)",
- "es-ar": "Испанский (Аргентина)",
- "es-bo": "Испанский (Боливия)",
- "es-cl": "Испанский (Чили)",
- "es-co": "Испанский (Колумбия)",
- "es-cr": "Испанский (Коста Рика)",
- "es-do": "Испанский (Доминиканская Республика)",
- "es-ec": "Испанский (Эквадор)",
- "es-gt": "Испанский (Гватемала)",
- "es-hn": "Испанский (Гондурас)",
- "es-mx": "Испанский (Мексика)",
- "es-ni": "Испанский (Никарагуа)",
- "es-pa": "Испанский (Панама)",
- "et": "Эстонский",
- "fi": "Финский",
- "fr": "Французский",
- "hr": "Хорватский",
- "it": "Итальянский",
- "ja": "Японский",
- "pl": "Польский",
- "pt": "Португальский",
- "ru-mo": "Русский (Республика Молдова)",
- "ro": "Румынский",
- "uk": "Украинский",
"now. You can also select individual messages to resend or cancel.": "теперь. Вы можете также выбрать отдельные сообщения, чтобы снова послать или отменить.",
- "Auto-complete": "Автозаполнение",
"Error changing language": "Ошибка изменения языка",
"Riot was unable to find the correct Data for the selected Language.": "Riot был неспособен найти правельные данные для выбранного языка.",
"Connectivity to the server has been lost.": "Связь с сервером потеряна.",
@@ -341,13 +270,6 @@
"Make this room private": "Сделать эту комнату приватной",
"Share message history with new users": "Разрешить доступ к истории сообщений новым пользователям",
"Encrypt room": "Шифрование комнаты",
- "es-pe": "Испанский (Перу)",
- "hu": "Венгерский",
- "nl": "Датский",
- "no": "Норвежский",
- "sv": "Шведский",
- "th": "Тайский",
- "vi": "Ветнамский",
"Monday": "Понедельник",
"Tuesday": "Вторник",
"Wednesday": "Среда",
@@ -390,7 +312,6 @@
"to tag direct chat": "отметить прямой чат",
"To use it, just wait for autocomplete results to load and tab through them.": "Для того, чтобы использовать эту функцию, просто подождите автозаполнения результатов, а затем используйте клавишу TAB для прокрутки.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s включено сквозное шифрование (algorithm %(algorithm)s).",
- "Unable to restore previous session": "Не удалось восстановить предыдущий сеанс",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s разблокировал(а) %(targetName)s.",
"Unable to capture screen": "Не удается сделать снимок экрана",
"Unable to enable Notifications": "Не удалось включить уведомления",
@@ -398,64 +319,12 @@
"Usage": "Использование",
"Use with caution": "Использовать с осторожностью",
"VoIP is unsupported": "VoIP не поддерживается",
- "es-pr": "Испанский (Пуэрто-Рико)",
- "es-py": "Испанский язык (Парагвай)",
- "es": "Испанский (Испания)",
- "es-sv": "Испанский (Сальвадор)",
- "es-uy": "Испанский (Уругвай)",
- "es-ve": "Испанский (Венесуэла)",
- "fa": "Фарси",
- "fo": "Фарерский",
- "fr-be": "Французский (Бельгия)",
- "fr-ca": "Французский (Канада)",
- "fr-ch": "Французский (Швейцария)",
- "ga": "Ирландский",
- "he": "Иврит",
- "hi": "Хинди",
- "id": "Индонезийский",
- "is": "Исландский",
- "ji": "Идиш",
- "lt": "Литовский",
- "lv": "Латвийский",
- "ms": "Малазийский",
- "mt": "Мальтийский",
- "nl-be": "Голландский (Бельгия)",
- "rm": "Ретороманский",
- "sb": "Лужицкий",
- "sk": "Словацкий",
- "sl": "Словенский",
- "sq": "Албанский",
- "sr": "Сербский",
- "sv-fi": "Шведский (Финляндия)",
- "sz": "Сами (Саамы)",
- "tn": "Тсвана",
- "tr": "Турецкий",
- "ts": "Тсонга",
- "ur": "Урду",
- "ve": "Венда",
- "xh": "Кхоса",
- "zh-cn": "Китайский (КНР)",
- "zh-sg": "Китайский (Сингапур)",
- "zh-tw": "Китайский (Тайвань)",
- "zu": "Зулусский",
- "eu": "Баскский",
- "fr-lu": "Французский (Люксембург)",
- "gd": "Гаэльский (Шотландия)",
- "it-ch": "Итальянский (Швейцария)",
- "ko": "Корейский",
- "mk": "Македонский (БЮРМ)",
- "ro-mo": "Румынский (Республика Молдова)",
- "sx": "Суту",
- "zh-hk": "Китайский (Гонконг)",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Текстовое сообщение было отправлено на +%(msisdn)s. Введите проверочный код, который оно содержит",
- "and %(count)s others...": {
- "other": "и %(count)s других...",
- "one": "и ещё один..."
- },
+ "and %(count)s others...|other": "и %(count)s других...",
+ "and %(count)s others...|one": "и ещё один...",
"Are you sure?": "Вы уверены?",
"Autoplay GIFs and videos": "Автовоспроизведение GIF и видео",
"Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Невозможно соединиться с домашним сервером - проверьте своё соединение и убедитесь, что SSL-сертификат вашего домашнего сервера включён в доверяемые.",
- "changing room on a RoomView is not supported": "изменение комнаты в RoomView не поддерживается",
"Click to mute audio": "Щелкните, чтобы выключить звук",
"Click to mute video": "Щелкните, чтобы выключить видео",
"Click to unmute video": "Щелкните, чтобы включить видео",
@@ -474,7 +343,6 @@
"Failed to delete device": "Не удалось удалить устройство",
"Failed to forget room %(errCode)s": "Не удалось удалить комнату %(errCode)s",
"Failed to join room": "Не удалось войти в комнату",
- "Failed to join the room": "Не удалось войти в комнату",
"Access Token:": "Токен доступа:",
"Always show message timestamps": "Всегда показывать временные метки сообщений",
"Authentication": "Аутентификация",
@@ -498,7 +366,6 @@
"Failed to set display name": "Не удалось задать отображаемое имя",
"Failed to toggle moderator status": "Не удалось изменить статус модератора",
"Fill screen": "Заполнить экран",
- "Guest users can't upload files. Please register to upload.": "Гости не могут отправлять файлы. Зарегистрируйтесь для отправки.",
"Hide read receipts": "Скрыть отметки о прочтении",
"Hide Text Formatting Toolbar": "Скрыть панель форматирования текста",
"Incorrect verification code": "Неверный код подтверждения",
@@ -528,7 +395,6 @@
"%(senderName)s placed a %(callType)s call.": "%(senderName)s выполнил %(callType)s вызов.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Проверьте свою электронную почту и нажмите на содержащуюся ссылку. После этого нажмите кнопку Продолжить.",
"Power level must be positive integer.": "Уровень авторизации должен быть положительным целым числом.",
- "Press": "Нажать",
"Profile": "Профиль",
"Reason": "Причина",
"rejected": "отклонено",
@@ -570,11 +436,9 @@
"Someone": "Кто-то",
"Submit": "Отправить",
"Success": "Успех",
- "tag as %(tagName)s": "пометить как %(tagName)s",
"tag direct chat": "Тег прямого чата",
"The default role for new room members is": "Роль по умолчанию для новых участников комнаты",
"The main address for this room is": "Основной адрес для этой комнаты",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "Это действие не может быть выполнено гостем. Пожалуйста, зарегистрируйтесь, чтобы получить возможность сделать то что вы хотите.",
"This email address is already in use": "Этот адрес электронной почты уже используется",
"This email address was not found": "Этот адрес электронной почты не найден",
"The email address linked to your account must be entered.": "Необходимо ввести адрес электронной почты, связанный с вашей учетной записью.",
@@ -584,7 +448,7 @@
"This room is not recognised.": "Эта комната не опознана.",
"These are experimental features that may break in unexpected ways": "Это экспериментальные функции, которые могут себя вести неожиданным образом",
"This doesn't appear to be a valid email address": "Похоже, это недействительный адрес электронной почты",
- "This is a preview of this room. Room interactions have been disabled": "Это предварительный просмотр комнаты. Взаимодействие с комнатой отключено",
+ "This is a preview of this room. Room interactions have been disabled": "Это предпросмотр комнаты. Взаимодействие с комнатой отключено",
"This phone number is already in use": "Этот номер телефона уже используется",
"This room's internal ID is": "Внутренний ID этой комнаты",
"times": "раз",
@@ -673,8 +537,6 @@
"VoIP": "VoIP",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Для обеспечения безопасности при выходе будут удалены все ключи сквозного шифрования из этого браузера. Если вы хотите иметь возможность расшифровать историю сообщений в будущем, необходимо экспортировать ключи комнат вручную.",
"Guest access is disabled on this Home Server.": "Гостевой доступ отключен на этом сервере.",
- "Guests can't set avatars. Please register.": "Гости не могут устанавливать аватары. Пожалуйста, зарегистрируйтесь.",
- "Guests can't use labs features. Please register.": "Гости не могут использовать экспериментальные возможности. Пожалуйста, зарегистрируйтесь.",
"Guests cannot join this room even if explicitly invited.": "Гости не могут войти в эту комнату, даже если они приглашены.",
"Missing Media Permissions, click here to request.": "Отсутствуют разрешения, нажмите для запроса.",
"No media permissions": "Нет разрешенных носителей",
@@ -689,7 +551,6 @@
"device id: ": "ID устройства: ",
"Device key:": "Ключ устройства:",
"disabled": "отключено",
- "Disable markdown formatting": "Отключить Markdown-форматирование",
"Email address": "Адрес электронной почты",
"Email address (optional)": "Адрес электронной почты (необязательно)",
"enabled": "включено",
@@ -702,10 +563,9 @@
"Invalid file%(extra)s": "Недопустимый файл%(extra)s",
"Invited": "Приглашен",
"Jump to first unread message.": "Перейти к первому непрочитанному сообщению.",
- "List this room in %(domain)s's room directory?": "Показывать эту комнату в каталоге комнат %(domain)s?",
"Message not sent due to unknown devices being present": "Сообщение не отправлено из-за присутствия неизвестных устройств",
"Mobile phone number (optional)": "Номер мобильного телефона (не обязательно)",
- "Once you've followed the link it contains, click below": "После перехода по ссылке, нажмите на кнопку ниже",
+ "Once you've followed the link it contains, click below": "После перехода по ссылке, нажмите на кнопку ниже",
"Password:": "Пароль:",
"Privacy warning": "Предупреждение о конфиденциальности",
"Privileged Users": "Привилегированные пользователи",
@@ -733,13 +593,12 @@
"%(actionVerb)s this person?": "%(actionVerb)s этот человек?",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "Файл '%(fileName)s' превышает предельный размер, допустимый к отправке на этом домашнем сервере",
"This Home Server does not support login using email address.": "Этот домашний сервер не поддерживает авторизацию с использованием адреса электронной почты.",
- "There was a problem logging in.": "Возникла проблема при авторизации.",
"The visibility of existing history will be unchanged": "Видимость существующей истории не изменится",
"this invitation?": "это приглашение?",
"This room is not accessible by remote Matrix servers": "Это комната недоступна с удаленных серверов Matrix",
"To ban users": "Для блокировки пользователей",
"to browse the directory": "для просмотра каталога",
- "To configure the room": "для настройки комнаты",
+ "To configure the room": "Для настройки комнаты",
"To invite users into the room": "Чтобы приглашать пользователей в комнату",
"to join the discussion": "присоединиться к дискуссии",
"To kick users": "Чтобы удалять пользователей",
@@ -747,7 +606,6 @@
"to make a room or": "чтобы создать комнату или",
"To remove other users' messages": "Чтобы удалить сообщения других пользователей",
"To reset your password, enter the email address linked to your account": "Чтобы сбросить пароль, введите адрес электронной почты, связанный с вашей учетной записью",
- "to tag as %(tagName)s": "пометить как %(tagName)s",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Попытка загрузить выбранный интервал истории чата этой комнаты не удалась, так как у вас нет разрешений на просмотр.",
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Попытка загрузить выбранный интервал истории чата этой комнаты не удалась, так как запрошенный элемент не найден.",
"Unable to load device list": "Не удалось загрузить список устройств",
@@ -760,11 +618,9 @@
"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!": "ВНИМАНИЕ: ОШИБКА ПРОВЕРКИ КЛЮЧЕЙ! Ключ подписи пользователя %(userId)s на устройстве %(deviceId)s — \"%(fprint)s\", и он не соответствует предоставленному ключу \"%(fingerprint)s\". Это может означать, что ваше общение перехватывается!",
"You have disabled URL previews by default.": "Предварительный просмотр ссылок отключен по-умолчанию.",
"You have enabled URL previews by default.": "Предварительный просмотр ссылок включен по-умолчанию.",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "Вы ввели недопустимый контакт. Попробуйте использовать Matrix ID или адрес электронной почты.",
"You need to enter a user name.": "Необходимо ввести имя пользователя.",
"You seem to be in a call, are you sure you want to quit?": "Звонок не завершен, вы уверены, что хотите выйти?",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Вы не сможете отменить это изменение, так как этот пользователь получит уровень доступа, аналогичный вашему.",
- "Set a Display Name": "Указать отображаемое имя",
"(~%(searchCount)s results)": "(~%(searchCount)s результатов)",
"%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)s отозвали свои приглашения %(repeats)s раз",
"%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)s отозвал свои приглашения %(repeats)s раз",
@@ -786,7 +642,6 @@
"You must join the room to see its files": "Вы должны войти в комнату, чтобы просмотреть файлы",
"Reject all %(invitedRooms)s invites": "Отклонить все %(invitedRooms)s приглашения",
"Start new chat": "Начать новый чат",
- "Guest users can't invite users. Please register.": "Гости не могут приглашать пользователей. Пожалуйста, зарегистрируйтесь.",
"Failed to invite": "Пригласить не удалось",
"Failed to invite user": "Не удалось пригласить пользователя",
"Failed to invite the following users to the %(roomName)s room:": "Не удалось пригласить следующих пользователей в %(roomName)s:",
@@ -808,7 +663,6 @@
"Unable to restore session": "Восстановление сессии не удалось",
"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.": "Если вы использовали более новую версию Riot, то ваша сессия может быть несовместима с текущей. Закройте это окно и вернитесь к использованию более новой версии.",
"Continue anyway": "Все равно продолжить",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Отображаемое имя - это то, как вы отображаетесь в чате. Какое имя вы хотите?",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "У вас включено занесение непроверенных устройств в черный список. Для отправки сообщений на эти устройства вам необходимо их проверить.",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Мы рекомендуем вам выполнить процедуру проверки каждого устройства, чтобы удостовериться, что они принадлежат их законному владельцу, но вы можете переотправить сообщение без проверки, если хотите.",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" содержит неподтвержденные устройства.",
@@ -843,10 +697,10 @@
"Add an Integration": "Добавить интеграцию",
"You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Вы будете пернаправлены на внешний сайт, где сможете аутентифицировать свою учетную запись для использования с %(integrationsUrl)s. Продолжить?",
"Removed or unknown message type": "Удалено или неизвестный тип сообщения",
- "Disable URL previews by default for participants in this room": "Отключить предварительный просмотр URL-адресов по умолчанию для участников этой комнаты",
+ "Disable URL previews by default for participants in this room": "Отключить предпросмотр URL-адресов по умолчанию для участников этой комнаты",
"URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "Предварительный просмотр URL-адресов %(globalDisableUrlPreview)s по умолчанию для участников этой комнаты.",
"URL Previews": "Предварительный просмотр URL-адресов",
- "Enable URL previews for this room (affects only you)": "Включить предварительный просмотр URL-адресов для этой комнаты (влияет только на вас)",
+ "Enable URL previews for this room (affects only you)": "Включить предпросмотр URL-адресов для этой комнаты (влияет только на вас)",
"Drop file here to upload": "Перетащите файл сюда для отправки",
" (unsupported)": " (не поддерживается)",
"Ongoing conference call%(supportedText)s.": "Установлен групповой вызов %(supportedText)s.",
@@ -857,25 +711,23 @@
"Online": "В сети",
"Idle": "Неактивен",
"Offline": "Не в сети",
- "Disable URL previews for this room (affects only you)": "Отключить предварительный просмотр URL-адресов для этой комнаты (влияет только на вас)",
+ "Disable URL previews for this room (affects only you)": "Отключить предпросмотр URL-адресов для этой комнаты (влияет только на вас)",
"$senderDisplayName changed the room avatar to ": "$senderDisplayName сменил аватар комнаты на ",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s удалил аватар комнаты.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s сменил аватар для %(roomName)s",
"Create new room": "Создать новую комнату",
"Room directory": "Каталог комнат",
"Start chat": "Начать чат",
- "Welcome page": "Страница приветствия",
"Add": "Добавить",
- "%(count)s new messages.one": "%(count)s новое сообщение",
- "%(count)s new messages.other": "%(count)s новых сообщений",
+ "%(count)s new messages|one": "%(count)s новое сообщение",
+ "%(count)s new messages|other": "%(count)s новых сообщений",
"Error: Problem communicating with the given homeserver.": "Ошибка: проблема связи с данным сервером.",
"Failed to fetch avatar URL": "Не удалось извлечь URL-адрес аватара",
"The phone number entered looks invalid": "Введенный номер телефона недействителен",
- "Uploading %(filename)s and %(count)s others.zero": "Отправка %(filename)s",
- "Uploading %(filename)s and %(count)s others.one": "Отправка %(filename)s и %(count)s другой",
- "Uploading %(filename)s and %(count)s others.other": "Отправка %(filename)s и %(count)s других",
+ "Uploading %(filename)s and %(count)s others|zero": "Отправка %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Отправка %(filename)s и %(count)s другой",
+ "Uploading %(filename)s and %(count)s others|other": "Отправка %(filename)s и %(count)s других",
"Username invalid: %(errMessage)s": "Неверное имя пользователя: %(errMessage)s",
- "Searching known users": "Поиск известных пользователей",
"You must register to use this functionality": "Вы должны зарегистрироваться , чтобы использовать эту функцию",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Отправить все или отменить отправку . Также можно выбрать отдельные сообщения для повторной отправки или отмены.",
"New Password": "Новый пароль",
@@ -893,7 +745,7 @@
"a room": "комната",
"Accept": "Принять",
"Active call (%(roomName)s)": "Активный вызов (%(roomName)s)",
- "Admin tools": "Инструменты администратора",
+ "Admin Tools": "Инструменты администратора",
"And %(count)s more...": "И %(count)s больше...",
"Alias (optional)": "Псевдоним (опционально)",
"Click here to join the discussion!": "Нажмите здесь , чтобы присоединиться к обсуждению!",
@@ -921,7 +773,7 @@
"Set": "Установить",
"Start authentication": "Начать проверку подлинности",
"This room": "В этой комнате",
- "(~%(count)s results).other": "(~%(count)s результаты)",
+ "(~%(count)s results)|other": "(~%(count)s результаты)",
"Device Name": "Имя устройства",
"Custom": "Пользовательские",
"Decline": "Отклонить",
@@ -944,7 +796,7 @@
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (уровень доступа %(powerLevelNumber)s)",
"Verified": "Проверено",
"Would you like to accept or decline this invitation?": "Вы хотели бы подтвердить или отклонить это приглашение?",
- "(~%(count)s results).one": "(~%(count)s результат)",
+ "(~%(count)s results)|one": "(~%(count)s результат)",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Не удается подключиться к домашнему серверу - проверьте подключение, убедитесь, что ваш SSL-сертификат домашнего сервера является доверенным и что расширение браузера не блокирует запросы.",
"You have been banned from %(roomName)s by %(userName)s.": "%(userName)s заблокировал вас в %(roomName)s.",
"You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s выгнал вас из %(roomName)s.",
@@ -960,7 +812,7 @@
"Do you want to set an email address?": "Хотите указать адрес электронной почты?",
"This will allow you to reset your password and receive notifications.": "Это позволит при необходимости сбросить пароль и получать уведомления.",
"Press to start a chat with someone": "Нажмите для начала чата с кем-либо",
- "You're not in any rooms yet! Press to make a room or to browse the directory": "Вы ещё не находитесь ни в одной комнате! Нажмите , чтобы создать комнату или для просмотра каталога",
+ "You're not in any rooms yet! Press to make a room or to browse the directory": "Вы еще не вошли ни в одну из комнат! Нажмите , чтобы создать комнату или для просмотра каталога",
"To return to your account in future you need to set a password": "Чтобы вернуться к учетной записи в будущем, необходимо задать пароль",
"Skip": "Пропустить",
"Start verification": "Начать проверку",
@@ -970,5 +822,67 @@
"Your unverified device '%(displayName)s' is requesting encryption keys.": "Ваше непроверенное устройство '%(displayName)s' запрашивает ключи шифрования.",
"Encryption key request": "Запрос ключа шифрования",
"Updates": "Обновления",
- "Check for update": "Проверить наличие обновлений"
+ "Check for update": "Проверить наличие обновлений",
+ "Add a widget": "Добавить виджет",
+ "Allow": "Принять",
+ "Cannot add any more widgets": "Невозможно добавить больше виджетов",
+ "Changes colour scheme of current room": "Изменяет цветовую схему текущей комнаты",
+ "Delete widget": "Удалить виджет",
+ "Define the power level of a user": "Определить уровень доступа пользователя",
+ "Do you want to load widget from URL:": "Загрузить виджет из URL-адреса:",
+ "Edit": "Изменить",
+ "Enable automatic language detection for syntax highlighting": "Включить автоматическое определение языка для подсветки синтаксиса",
+ "Hide Apps": "Скрыть приложения",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Скрыть сообщения о входе/выходе (приглашениях/выкидываниях/банах)",
+ "Hide avatar and display name changes": "Скрыть сообщения об изменении аватаров и отображаемых имен",
+ "Integrations Error": "Ошибка интеграции",
+ "Matrix Apps": "Приложения Matrix",
+ "AM": "AM",
+ "PM": "PM",
+ "NOTE: Apps are not end-to-end encrypted": "ПРИМЕЧАНИЕ: приложения не защищены сквозным шифрованием",
+ "Revoke widget access": "Отозвать доступ к виджетам",
+ "Sets the room topic": "Задать тему комнаты",
+ "Show Apps": "Показать приложения",
+ "The maximum permitted number of widgets have already been added to this room.": "Максимально допустимое количество виджетов уже добавлено в эту комнату.",
+ "To get started, please pick a username!": "Чтобы начать, выберите имя пользователя!",
+ "Unable to create widget.": "Не удалось создать виджет.",
+ "Unbans user with given id": "Разбанить пользователя с заданным ID",
+ "You are not in this room.": "Вас нет в этой комнате.",
+ "You do not have permission to do that in this room.": "У вас нет разрешения на это в этой комнате.",
+ "Verifies a user, device, and pubkey tuple": "Проверка пользователя, устройства и открытого ключа",
+ "Autocomplete Delay (ms):": "Задержка автозаполнения (мс):",
+ "This Home server does not support groups": "Этот домашний сервер не поддерживает группы",
+ "Loading device info...": "Загрузка информации об устройстве...",
+ "Groups": "Группы",
+ "Create a new group": "Создать новую группу",
+ "Create Group": "Создать группу",
+ "Group Name": "Название группы",
+ "Example": "Пример",
+ "Create": "Создать",
+ "Group ID": "ID группы",
+ "+example:%(domain)s": "+пример:%(domain)s",
+ "Group IDs must be of the form +localpart:%(domain)s": "Идентификаторы групп должны иметь вид +локальная часть:%(domain)s",
+ "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "В настоящее время возможно создавать группы только на собственном домашнем сервере: используйте идентификатор группы, заканчивающийся на %(domain)s",
+ "Room creation failed": "Не удалось создать комнату",
+ "You are a member of these groups:": "Вы являетесь членом этих групп:",
+ "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Создайте группу для представления своего сообщества! Определите набор комнат и собственную домашнюю страницу, чтобы выделить свое пространство во вселенной Matrix.",
+ "Join an existing group": "Присоединиться к существующей группе",
+ "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org .": "Чтобы присоединиться к группе, вам нужно знать ее идентификатор; он выглядит примерно так:+example:matrix.org .",
+ "Featured Rooms:": "Рекомендуемые комнаты:",
+ "Error whilst fetching joined groups": "Ошибка при извлечении объединенных групп",
+ "Featured Users:": "Избранные пользователи:",
+ "Edit Group": "Изменить группу",
+ "Automatically replace plain text Emoji": "Автоматически заменять обычный текст на Emoji",
+ "Failed to upload image": "Не удалось загрузить изображение",
+ "Failed to update group": "Не удалось обновить группу",
+ "Hide avatars in user and room mentions": "Скрыть аватары в упоминаниях пользователей и комнат",
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s виджет, добавленный %(senderName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s виджет, удаленный %(senderName)s",
+ "Robot check is currently unavailable on desktop - please use a web browser ": "Проверка робота в настоящее время недоступна на компьютере - пожалуйста, используйте браузер ",
+ "Publish this room to the public in %(domain)s's room directory?": "Опубликовать эту комнату для пользователей в %(domain)s каталоге комнат?",
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s виджет, измененный %(senderName)s",
+ "%(weekDayName)s, %(monthName)s %(day)s": "%(weekDayName)s, %(monthName)s %(day)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s",
+ "Copied!": "Скопировано!",
+ "Failed to copy": "Не удалось скопировать"
}
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index 1c4d63c808..fb7257ecf9 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -1,124 +1,4 @@
{
- "af": "Afrikaans",
- "ar-ae": "Arabiska (U.A.E.)",
- "ar-bh": "Arabiska (Bahrain)",
- "ar-dz": "Arabiska (Algeriet)",
- "ar-eg": "Arabiska (Egypten)",
- "ar-iq": "Arabiska (Irak)",
- "ar-jo": "Arabiska (Jordanien)",
- "ar-kw": "Arabiska (Kuwait)",
- "ar-lb": "Arabiska (Libanon)",
- "ar-ly": "Arabiska (Libyen)",
- "ar-ma": "Arabiska (Marocko)",
- "ar-om": "Arabiska (Oman)",
- "ar-qa": "Arabiska (Qatar)",
- "ar-sa": "Arabiska (Saudiarabien)",
- "ar-sy": "Arabiska (Syrien)",
- "ar-tn": "Arabiska (Tunisien)",
- "ar-ye": "Arabiska (Yemen)",
- "be": "Vitryska",
- "bg": "Bulgariska",
- "ca": "Katalanska",
- "cs": "Tjeckiska",
- "da": "Danska",
- "de-at": "Tyska (Österrike)",
- "de-ch": "Tyska (Schweiz)",
- "de": "Tyska",
- "de-li": "Tyska (Liechtenstein)",
- "de-lu": "Tyska (Luxembourg)",
- "el": "Grekiska",
- "en-au": "Engelska (Australien)",
- "en-bz": "Engelska (Belize)",
- "en-ca": "Engelska (Kanada)",
- "en": "Engelska",
- "en-gb": "Engelska (Förenta kungariket)",
- "en-ie": "Engelska (Irland)",
- "en-jm": "Engelska (Jamaica)",
- "en-nz": "Engelska (Nya Zeeland)",
- "en-tt": "Engelska (Trinidad)",
- "en-us": "Engelska (Förenta staterna)",
- "en-za": "Engelska (Sydafrika)",
- "es-ar": "Spanska (Argentina)",
- "es-bo": "Spanska (Bolivia)",
- "es-cl": "Spanska (Chile)",
- "es-co": "Spanska (Colombia)",
- "es-cr": "Spanska (Costa Rica)",
- "es-do": "Spanska (Dominikanska republiken)",
- "es-ec": "Spanska (Ecuador)",
- "es-gt": "Spanska (Guatemala)",
- "es-hn": "Spanska (Honduras)",
- "es-mx": "Spanska (Mexico)",
- "es-ni": "Spanska (Nicaragua)",
- "es-pa": "Spanska (Panama)",
- "es-pe": "Spanska (Peru)",
- "es-pr": "Spanska (Puerto Rico)",
- "es-py": "Spanska (Paraguay)",
- "es": "Spanska (Spanien)",
- "es-sv": "Spanska (El Salvador)",
- "es-uy": "Spanska (Uruguay)",
- "es-ve": "Spanska (Venezuela)",
- "et": "Estniska",
- "eu": "Baskiska",
- "fa": "Persiska",
- "fi": "Finska",
- "fo": "Färöiska",
- "fr-be": "Franska (Belgien)",
- "fr-ca": "Franska (Kanada)",
- "fr-ch": "Franska (Schweiz)",
- "fr": "Franska",
- "fr-lu": "Franska (Luxembourg)",
- "ga": "Irländska",
- "gd": "Gaeliska (Skottland)",
- "he": "Hebreiska",
- "hi": "Hindi",
- "hr": "Kroatiska",
- "hu": "Ungerska",
- "id": "Indonesiska",
- "is": "Isländska",
- "it-ch": "Italienska (Schweiz)",
- "it": "Italienska",
- "ja": "Japanska",
- "ji": "Jiddisch",
- "ko": "Koreanska",
- "lt": "Litauiska",
- "lv": "Lettiska",
- "mk": "Makedonska (FYROM)",
- "ms": "Malaysiska",
- "mt": "Maltesiska",
- "nl-be": "Nederländska (Belgien)",
- "nl": "Nederländska",
- "no": "Norska",
- "pl": "Polska",
- "pt-br": "Brasiliansk portugisiska",
- "pt": "Portugisiska",
- "rm": "Rätoromanska",
- "ro-mo": "Rumänska (Republiken Moldavien)",
- "ro": "Rumänska",
- "ru-mo": "Ryska (Republiken Moldavien)",
- "ru": "Ryska",
- "sb": "Sorbiska",
- "sk": "Slovakiska",
- "sl": "Slovenska",
- "sq": "Albanska",
- "sr": "Serbiska",
- "sv-fi": "Svenska (Finland)",
- "sv": "Svenska",
- "sx": "Sutu",
- "sz": "Samiska",
- "th": "Thailändska",
- "tn": "Tswana",
- "tr": "Turkiska",
- "ts": "Tsonga",
- "uk": "Ukrainska",
- "ur": "Urdu",
- "ve": "Venda",
- "vi": "Vietnamesiska",
- "xh": "Xhosa",
- "zh-cn": "Kinesiska (Folkrepubliken Kina)",
- "zh-hk": "Kinesiska (Hongkong SAR)",
- "zh-sg": "Kinesiska (Singapore)",
- "zh-tw": "Kinesiska (Taiwan)",
- "zu": "Zulu",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ett SMS har skickats till +%(msisdn)s. Vänligen ange verifieringskoden ur meddelandet",
"accept": "acceptera",
"%(targetName)s accepted an invitation.": "%(targetName)s accepterade en inbjudan.",
@@ -142,18 +22,13 @@
"Always show message timestamps": "Visa alltid tidsstämpel för meddelanden",
"Hide removed messages": "Göm raderade meddelanden",
"Authentication": "Autentisering",
- "all room members": "alla rumsmedlemmar",
- "all room members, from the point they are invited": "alla rumsmedlemmar fr.o.m att de bjöds in",
- "all room members, from the point they joined": "alla rumsmedlemmar fr.o.m. att de gick med som medlem",
"an address": "en address",
"and": "och",
"%(items)s and %(remaining)s others": "%(items)s och %(remaining)s andra",
"%(items)s and one other": "%(items)s och en annan",
"%(items)s and %(lastItem)s": "%(items)s och %(lastItem)s",
- "and %(count)s others...": {
- "other": "och %(count)s andra...",
- "one": "och en annan..."
- },
+ "and %(count)s others...|other": "och %(count)s andra...",
+ "and %(count)s others...|one": "och en annan...",
"%(names)s and %(lastPerson)s are typing": "%(names)s och %(lastPerson)s skriver",
"%(names)s and one other are typing": "%(names)s och en annan skriver",
"%(names)s and %(count)s others are typing": "%(names)s och %(count)s andra skriver",
@@ -161,7 +36,6 @@
"A new password must be entered.": "Ett nytt lösenord måste anges.",
"%(senderName)s answered the call.": "%(senderName)s svarade på samtalet.",
"Anyone who knows the room's link, including guests": "Alla som har rummets adress, inklusive gäster",
- "anyone": "vem som helst",
"Anyone": "Vem som helst",
"Anyone who knows the room's link, apart from guests": "Alla som har rummets adress, förutom gäster",
"An error has occurred.": "Ett fel har inträffat.",
@@ -234,7 +108,6 @@
"Device key:": "Enhetsnyckel:",
"Devices": "Enheter",
"Devices will not yet be able to decrypt history from before they joined the room": "Enheter kan inte ännu dekryptera meddelandehistorik från före de gick med i rummet",
- "Direct Chat": "Direkt-chatt",
"Direct chats": "Direkta chattar",
"disabled": "avstängd",
"Disable inline URL previews by default": "Stäng av inline-URL-förhandsvisningar som standard",
@@ -271,7 +144,6 @@
"Failed to delete device": "Det gick inte att radera enhet",
"Failed to forget room %(errCode)s": "Det gick inte att glömma bort rummet %(errCode)s",
"Failed to join room": "Det gick inte att gå med i rummet",
- "Failed to join the room": "Det gick inte att gå med i rummet",
"Failed to kick": "Det gick inte att kicka",
"Failed to leave room": "Det gick inte att lämna rummet",
"Failed to load timeline position": "Det gick inte att hämta positionen på tidslinjen",
@@ -297,21 +169,19 @@
"Access Token:": "Åtkomsttoken:",
"Active call (%(roomName)s)": "Aktiv samtal (%(roomName)s)",
"Add": "Lägg till",
- "Admin tools": "Admin verktyg",
+ "Admin Tools": "Admin verktyg",
"And %(count)s more...": "Och %(count)s till...",
"Alias (optional)": "Alias (valfri)",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Det gick inte att ansluta till servern - kontrollera anslutningen, försäkra att din hemservers TLS-certifikat är betrott, och att inget webbläsartillägg blockerar förfrågningar.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ändrade maktnivån av %(powerLevelDiffText)s.",
- "changing room on a RoomView is not supported": "det går inte att byta rum i en RoomView",
"Click here to join the discussion!": "Klicka här för att gå med i diskussionen!",
"Close": "Stäng",
- "%(count)s new messages.one": "%(count)s nytt meddelande",
- "%(count)s new messages.other": "%(count)s nya meddelanden",
+ "%(count)s new messages|one": "%(count)s nytt meddelande",
+ "%(count)s new messages|other": "%(count)s nya meddelanden",
"Create a new chat or reuse an existing one": "Skapa en ny chatt eller använd en existerande",
"Custom": "Egen",
"Decline": "Avvisa",
"Disable Notifications": "Slå av aviseringar",
- "Disable markdown formatting": "Slå av Markdown-formattering",
"Drop File Here": "Dra filen hit",
"Enable Notifications": "Slå på aviseringar",
"Encrypted by a verified device": "Krypterat av en verifierad enhet",
@@ -333,10 +203,6 @@
"Found a bug?": "Hittade du en bugg?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s från %(fromPowerLevel)s till %(toPowerLevel)s",
"Guest access is disabled on this Home Server.": "Gäståtkomst är inte aktiverat på den här hemservern.",
- "Guests can't set avatars. Please register.": "Gäster kan inte välja en profilbild. Vänligen registrera dig.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Gäster kan inte skapa nya rum. Vänligen registrera dig för att skapa rum och starta chattar.",
- "Guest users can't upload files. Please register to upload.": "Gäster kan inte ladda upp filer. Vänligen registrera dig för att ladda upp.",
- "Guests can't use labs features. Please register.": "Gäster kan inte använda labb-egenskaper. Vänligen registrera dig.",
"Guests cannot join this room even if explicitly invited.": "Gäster kan inte gå med i det här rummet fastän de är uttryckligen inbjudna.",
"had": "hade",
"Hangup": "Lägg på",
@@ -385,13 +251,15 @@
"left": "lämnade",
"%(targetName)s left the room.": "%(targetName)s lämnade rummet.",
"Level:": "Nivå:",
- "List this room in %(domain)s's room directory?": "Visa det här rummet i katalogen på %(domain)s?",
"Local addresses for this room:": "Lokala adresser för rummet:",
"Logged in as:": "Inloggad som:",
"Login as guest": "Logga in som gäst",
"Logout": "Logga ut",
"Low priority": "Lågprioritet",
- "%(senderName)s made future room history visible to": "%(senderName)s gjorde framtida rumshistorik synligt åt",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s gjorde framtida rumshistorik synligt åt alla rumsmedlemmar fr.o.m att de bjöds in.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s gjorde framtida rumshistorik synligt åt alla rumsmedlemmar fr.o.m. att de gick med som medlem.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s gjorde framtida rumshistorik synligt åt alla rumsmedlemmar.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s gjorde framtida rumshistorik synligt åt vem som helst.",
"Manage Integrations": "Hantera integrationer",
"Markdown is disabled": "Markdown är inaktiverat",
"Markdown is enabled": "Markdown är aktiverat",
@@ -411,7 +279,6 @@
"Never send encrypted messages to unverified devices in this room": "Skicka aldrig krypterade meddelanden till overifierade enheter i det här rummet",
"Never send encrypted messages to unverified devices in this room from this device": "Skicka aldrig krypterade meddelanden till overifierade enheter i det här rummet från den här enheten",
"New address (e.g. #foo:%(localDomain)s)": "Ny address (t.ex. #foo:%(localDomain)s)",
- "New Composer & Autocomplete": "Ny redigerare och autoslutförande",
"New password": "Nytt lösenord",
"New passwords don't match": "De nya lösenorden matchar inte",
"New passwords must match each other.": "De nya lösenorden måste vara de samma.",
@@ -430,7 +297,7 @@
"OK": "OK",
"olm version:": "olm-version:",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "När kryptering aktiveras i ett rum kan det inte deaktiveras (tills vidare)",
- "Once you've followed the link it contains, click below": "När du har följt länken i meddelandet, klicka här",
+ "Once you've followed the link it contains, click below": "När du har följt länken i meddelandet, klicka här",
"Only people who have been invited": "Endast inbjudna",
"Operation failed": "Handlingen misslyckades",
"Otherwise, click here to send a bug report.": "Annars kan du klicka här för att skicka en buggrapport.",
@@ -442,9 +309,7 @@
"Phone": "Telefon",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s startade ett %(callType)ssamtal.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Öppna meddelandet i din epost och klicka på länken i meddelandet. När du har gjort detta, klicka vidare.",
- "Please Register": "Registrera dig",
"Power level must be positive integer.": "Maktnivån måste vara ett positivt heltal.",
- "Press": "Tryck",
"Press to start a chat with someone": "Tryck på för att starta en chatt med någon",
"Privacy warning": "Integritetsvarning",
"Private Chat": "Privatchatt",
@@ -489,7 +354,6 @@
"Search": "Sök",
"Search failed": "Sökning misslyckades",
"Searches DuckDuckGo for results": "Söker efter resultat på DuckDuckGo",
- "Searching known users": "Söker genom kända användare",
"Seen by %(userName)s at %(dateTime)s": "Sedd av %(userName)s %(dateTime)s",
"Send a message (unencrypted)": "Skicka ett meddelande (okrypterat)",
"Send an encrypted message": "Skicka ett krypterad meddelande",
@@ -499,7 +363,7 @@
"Send Reset Email": "Skicka återställningsmeddelande",
"sent an image": "skickade en bild",
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s skickade en bild.",
- "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s bjöd in %(targetDIsplayName)s med i rummet.",
+ "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s bjöd in %(targetDisplayName)s med i rummet.",
"sent a video": "skickade en video",
"Server error": "Serverfel",
"Server may be unavailable or overloaded": "Servern kan vara otillgänglig eller överbelastad",
@@ -526,5 +390,32 @@
"Sorry, this homeserver is using a login which is not recognised ": "Den här hemsevern använder en login-metod som inte stöds ",
"Start a chat": "Starta en chatt",
"Start authentication": "Starta autentisering",
- "Start Chat": "Starta en chatt"
+ "Start Chat": "Starta en chatt",
+ "Cancel": "Avbryt",
+ "Create new room": "Nytt rum",
+ "Custom Server Options": "Egna serverinställningar",
+ "Dismiss": "Avvisa",
+ "powered by Matrix": "drivs av Matrix",
+ "Room directory": "Rumskatalog",
+ "Start chat": "Starta chatt",
+ "unknown error code": "okänd felkod",
+ "Sunday": "söndag",
+ "Monday": "måndag",
+ "Tuesday": "tisdag",
+ "Wednesday": "onsdag",
+ "Thursday": "torsdag",
+ "Friday": "fredag",
+ "Saturday": "lördag",
+ "Add a widget": "Lägg till en widget",
+ "Allow": "Tillåt",
+ "Cannot add any more widgets": "Det går inte att lägga till fler widgets",
+ "Changes colour scheme of current room": "Ändrar färgschema för nuvarande rum",
+ "Delete widget": "Ta bort widget",
+ "Define the power level of a user": "Definiera anseende för en användare",
+ "Do you want to load widget from URL:": "Vill du ladda widgeten från URL:",
+ "Edit": "Redigera",
+ "Enable automatic language detection for syntax highlighting": "Aktivera automatisk språkdetektering för syntaxmarkering",
+ "Hide Apps": "Dölj Appar",
+ "Hide avatar and display name changes": "Dölj avatar och visningsnamns ändringar",
+ "Integrations Error": "Integrationsfel"
}
diff --git a/src/i18n/strings/te.json b/src/i18n/strings/te.json
index 0f1d5b9a6d..4cf9c847fb 100644
--- a/src/i18n/strings/te.json
+++ b/src/i18n/strings/te.json
@@ -1,89 +1,5 @@
{
"was invited": "తనని ఆహ్వానించారు",
- "ar-iq": "అరబిక్ (ఇరాక్)",
- "ar-jo": "అరబిక్ (జోర్డాన్)",
- "ar-kw": "అరబిక్ (కువైట్)",
- "ar-lb": "అరబిక్ (లెబనాన్)",
- "ar-ly": "అరబిక్ (లిబియా)",
- "ar-ma": "అరబిక్ (మొరాకో)",
- "ar-om": "అరబిక్ (ఒమన్)",
- "ar-qa": "అరబిక్ (కతర్)",
- "ar-sa": "అరబిక్ (సౌదీ అరేబియా)",
- "ar-sy": "అరబిక్ (సిరియా)",
- "ar-tn": "అరబిక్ (ట్యునీషియా)",
- "ar-ye": "అరబిక్ (యెమెన్)",
- "bg": "బల్గేరియన్",
- "da": "డానిష్",
- "de-at": "జర్మన్ (ఆస్ట్రియా)",
- "de-ch": "జర్మన్ (స్విట్జర్లాండ్)",
- "de": "జర్మన్",
- "de-li": "జర్మన్ (లిక్టెన్స్టీన్)",
- "de-lu": "జర్మన్ (లక్సెంబర్గ్)",
- "el": "గ్రీకు",
- "en-au": "ఆంగ్లము (ఆస్ట్రేలియా)",
- "en-bz": "ఇంగ్లీష్ (బెలిజ్)",
- "en-ca": "ఇంగ్లీష్ (కెనడా)",
- "en": "ఇంగ్లీష్",
- "en-gb": "ఇంగ్లీష్ (యునైటెడ్ కింగ్డమ్)",
- "en-ie": "ఇంగ్లీష్ (ఐర్లాండ్)",
- "en-jm": "ఇంగ్లీష్ (జమైకా)",
- "en-nz": "ఇంగ్లీష్ (న్యూజిలాండ్)",
- "en-tt": "ఇంగ్లీష్ (ట్రినిడాడ్)",
- "en-us": "ఇంగ్లీష్ (యునైటెడ్ స్టేట్స్)",
- "en-za": "ఇంగ్లీష్ (దక్షిణ ఆఫ్రికా)",
- "es-ar": "స్పానిష్ (అర్జెంటీనా)",
- "es-bo": "స్పానిష్ (బొలీవియా)",
- "es-cl": "స్పానిష్ (చిలీ)",
- "es-co": "స్పానిష్ (కొలంబియా)",
- "es-cr": "స్పానిష్ (కోస్టా రికా)",
- "af": "ఆఫ్రికాన్స్",
- "ar-ae": "అరబిక్ (యు.ఏ.ఈ.)",
- "ar-bh": "అరబిక్ (బహ్రెయిన్)",
- "ar-dz": "అరబిక్ (అల్జీరియా)",
- "ar-eg": "అరబిక్ (ఈజిప్ట్)",
- "be": "భెలరుసీన్",
- "ca": "కతలన్",
- "cs": "ఛ్జెచ్",
- "es-do": "స్పానిష్ (డొమినికన్ రిపబ్లిక్)",
- "lt": "లిథూనీన్",
- "lv": "లత్వీన్",
- "mk": "మాసిడోనియన్ (ఫ్య్ఋఓం)",
- "ms": "మలేషియన్",
- "mt": "మాల్టీస్",
- "nl-be": "డచ్ (బెల్జియం)",
- "nl": "డచ్",
- "no": "నార్వేజియన్",
- "pl": "పోలిష్",
- "pt-br": "బ్రెజిలియన్ పోర్చుగీస్",
- "pt": "పోర్చుగీస్",
- "rm": "ర్హెతో-రొమనిచ్",
- "ro-mo": "రోమేనియా (మోల్డోవా రిపబ్లిక్)",
- "ro": "రొమనీన్",
- "ru-mo": "రష్యన్ (మోల్డోవా రిపబ్లిక్)",
- "ru": "రష్యన్",
- "sb": "సోర్బియన్",
- "sk": "శ్లొవక్",
- "sl": "స్లోవేనియాన్",
- "sq": "ఆల్బనీన్",
- "sr": "సెర్బియన్",
- "sv-fi": "స్వీడిష్ (ఫిన్లాండ్)",
- "sv": "స్వీడిష్",
- "sx": "శుతు",
- "sz": "సామీ (లప్పీష్)",
- "th": "థాయ్",
- "tn": "సెటస్వానా",
- "tr": "టుర్కిష్",
- "ts": "సోంగా",
- "uk": "ఉక్రేనియన్",
- "ur": "ఉర్దూ",
- "ve": "వెండా",
- "vi": "వియత్నమెసె",
- "xh": "షోసా",
- "zh-cn": "చైనీస్ (ప్ ర్ సీ)",
- "zh-hk": "చైనీస్ (హాంకాంగ్ స్ఎఅర్)",
- "zh-sg": "చైనీస్ (సింగపూర్)",
- "zh-tw": "చైనీస్ (తైవాన్)",
- "zu": "జూలూ",
"a room": "ఓ గది",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "ఒక టెక్స్ట్ సందేశం +%(msisdn)s కు పంపబడింది. దయచేసి దీనిలో ఉన్న ధృవీకరణ కోడ్ను నమోదు చేయండి",
"Accept": "అంగీకరించు",
@@ -95,7 +11,7 @@
"Add email address": "ఇమెయిల్ చిరునామాను జోడించండి",
"Add phone number": "ఫోన్ నంబర్ను జోడించండి",
"Admin": "అడ్మిన్",
- "Admin tools": "నిర్వాహక ఉపకరణాలు",
+ "Admin Tools": "నిర్వాహక ఉపకరణాలు",
"VoIP": "విఒఐపి",
"Missing Media Permissions, click here to request.": "మీడియా అనుమతులు మిస్ అయయి, అభ్యర్థించడానికి ఇక్కడ క్లిక్ చేయండి.",
"No Microphones detected": "మైక్రోఫోన్లు కనుగొనబడలేదు",
@@ -111,46 +27,10 @@
"Always show message timestamps": "ఎల్లప్పుడూ సందేశాల సమయ ముద్రలు చూపించు",
"Authentication": "ప్రామాణీకరణ",
"Alias (optional)": "అలియాస్ (ఇవచు ఇవకపపోవచు)",
- "all room members": "అన్ని గదుల సభ్యులు",
"You do not have permission to post to this room": "మీకు ఈ గదికి పోస్ట్ చేయడానికి అనుమతి లేదు",
"You have been invited to join this room by %(inviterName)s": "%(inviterName)s ఈ గదిలో చేరడానికి మీరు ఆహ్వానించబడ్డారు",
- "es-ec": "స్పానిష్ (ఈక్వెడార్)",
- "es-gt": "స్పానిష్ (గ్వాటెమాల)",
- "es-hn": "స్పానిష్ (హోండురాస్)",
- "es-mx": "స్పానిష్ (మెక్సికో)",
- "es-ni": "స్పానిష్ (నికరాగువా)",
- "es-pa": "స్పానిష్ (పనామా)",
- "es-pe": "స్పానిష్ (పెరు)",
- "es-pr": "స్పానిష్ (ఫ్యూర్టో రికో)",
- "es-py": "స్పానిష్ (పరాగ్వే)",
- "es": "స్పానిష్ (స్పెయిన్)",
- "es-sv": "స్పానిష్ (ఎల్ సాల్వడార్)",
- "es-uy": "స్పానిష్ (ఉరుగ్వే)",
- "es-ve": "స్పానిష్ (వెనిజులా)",
- "eu": "బాస్క్ (బాస్క్)",
- "fa": "ఫార్సి",
- "fi": "ముగించు",
- "fo": "ఫెరోయెస్",
- "fr-be": "ఫ్రెంచ్ (బెల్జియం)",
- "fr-ca": "ఫ్రెంచ్ (కెనడా)",
- "fr-ch": "ఫ్రెంచ్ (స్విట్జర్లాండ్)",
- "fr": "ఫ్రెంచ్",
- "fr-lu": "ఫ్రెంచ్ (లక్సెంబర్గ్)",
- "ga": "ఐరిష్",
- "gd": "గేలిక్ (స్కాట్లాండ్)",
- "he": "హిబ్రూ",
- "hi": "హిందీ",
- "hu": "హంగేరియన్",
- "id": "ఇండోనేషియన్",
- "is": "ఐస్లాండిక్",
- "it-ch": "ఇటాలియన్ (స్విట్జర్లాండ్)",
- "it": "ఇటాలియన్",
- "ja": "జపనీస్",
- "ko": "కొరియన్",
"Active call (%(roomName)s)": "క్రియాశీల కాల్ల్ (%(roomName)s)",
"And %(count)s more...": "మరియు %(count)s ఇంకా ...",
- "all room members, from the point they are invited": "అన్ని గది సభ్యులు, పాయింట్ నుండి వారు ఆహ్వానించబడ్డారు",
- "all room members, from the point they joined": "అన్ని గది సభ్యులు, పాయింట్ నుండి వారు చేరారు",
"and": "మరియు",
"and one other...": "మరియు మరొకటి ...",
"%(names)s and one other are typing": "%(names)s మరియు మరొకటి టైప్ చేస్తున్నారు",
@@ -158,7 +38,6 @@
"An email has been sent to": "ఒక ఇమెయిల్ పంపబడింది",
"A new password must be entered.": "కొత్త పాస్ వర్డ్ ను తప్పక నమోదు చేయాలి.",
"%(senderName)s answered the call.": "%(senderName)s కు సమాధానం ఇచ్చారు.",
- "anyone": "ఎవరైనా",
"An error has occurred.": "ఒక లోపము సంభవించినది.",
"Anyone": "ఎవరైనా",
"Anyone who knows the room's link, apart from guests": "అతిథులు కాకుండా గది యొక్క లింక్ తెలిసిన వారు ఎవరైనా",
@@ -183,7 +62,6 @@
"%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s గది పేరు తొలగించబడింది.",
"Changes to who can read history will only apply to future messages in this room": "చరిత్ర చదివేవారికి మార్పులు ఈ గదిలో భవిష్య సందేశాలకు మాత్రమే వర్తిస్తాయి",
"Changes your display nickname": "మీ ప్రదర్శన మారుపేరుని మారుస్తుంది",
- "changing room on a RoomView is not supported": "ఒక రూమ్వ్యూలో గది మార్చుకునేకి మద్దతు లేదు",
"You cannot place a call with yourself.": "మీరు మీతో కాల్ చేయలేరు.",
"You are already in a call.": "మీరు ఇప్పటికే కాల్లో ఉన్నారు.",
"You are trying to access %(roomName)s.": "మీరు %(roomName)s లను యాక్సెస్ చేయడానికి ప్రయత్నిస్తున్నారు.",
@@ -214,8 +92,8 @@
"Confirm your new password": "మీ క్రొత్త పాస్వర్డ్ను నిర్ధారించండి",
"Continue": "కొనసాగించు",
"Could not connect to the integration server": "ఇంటిగ్రేషన్ సర్వర్కు కనెక్ట్ చేయడం సాధ్యం కాలేదు",
- "%(count)s new messages.one": "%(count)s కొత్త సందేశం",
- "%(count)s new messages.other": "%(count)s కొత్త సందేశాలు",
+ "%(count)s new messages|one": "%(count)s కొత్త సందేశం",
+ "%(count)s new messages|other": "%(count)s కొత్త సందేశాలు",
"Create a new chat or reuse an existing one": "క్రొత్త చాట్ ను సృష్టించుకోండి లేదా ఇప్పటికే ఉన్న ఒకదాన్ని తిరిగి ఉపయోగించండి",
"Create an account": "ఒక ఎకౌంటు ను సృష్టించండి",
"Create Room": "రూమ్ ని సృష్టించండి",
@@ -245,7 +123,6 @@
"Sat": "శనివారం",
"Jan": "జనవరి",
"Feb": "ఫిబ్రవరి",
- "Disable markdown formatting": "మార్క్డౌన్ ఆకృతీకరణని ఆపివేయి",
"Markdown is disabled": "మార్క్డౌన్ నిలిపివేయబడింది",
"Markdown is enabled": "మార్క్డౌన్ ప్రారంభించబడింది",
"Turn Markdown off": "మార్క్డౌన్ ఆఫ్ చెయ్యి",
@@ -270,7 +147,6 @@
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Set a display name:": "ప్రదర్శన పేరుని సెట్ చేయండి:",
- "Set a Display Name": "ప్రదర్శన పేరుని సెట్ చేయండి",
"Upload avatar": "అవతార్ను అప్లోడ్ చేయండి",
"Upload an avatar:": "అవతార్ను అప్లోడ్ చేయండి:",
"This server does not support authentication with a phone number.": "ఈ సర్వర్ ఫోన్ నంబర్తో ప్రామాణీకరణకు మద్దతు ఇవ్వదు.",
@@ -291,7 +167,6 @@
"There are no visible files in this room": "ఈ గదిలో కనిపించే ఫైల్లు లేవు",
"Connectivity to the server has been lost.": "సెర్వెర్ కనెక్టివిటీని కోల్పోయారు.",
"Sent messages will be stored until your connection has returned.": "మీ కనెక్షన్ తిరిగి వచ్చే వరకు పంపిన సందేశాలు నిల్వ చేయబడతాయి.",
- "Auto-complete": "ఆటో-పూర్తి",
"Cancel": "రద్దు",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "అన్నీ మళ్లీ పంపు లేదాఅన్నింటినీ రద్దు చేయండి ప్పుడు.వ్యక్తిగత సందేశాలను మీరు మళ్ళీ చేసుకోవచ్చు లేదా రద్దు చేసుకోవచ్చు.",
"Monday": "సోమవారం",
@@ -305,7 +180,7 @@
"strike": "సమ్మె",
"underline": "అండర్లైన్",
"Enter Code": "కోడ్ వ్రాయండి",
- "Failed to forget room %(errCode)s": "గది %(errCode)s మర్చిపోవడంలో విఫలమైంది",
+ "Failed to forget room %(errCode)s": "గది మర్చిపోవడం విఫలమైంది %(errCode)s",
"Incorrect verification code": "ధృవీకరణ కోడ్ సరిగా లెదు",
"unknown error code": "తెలియని కోడ్ లోపం",
"code": "కోడ్",
@@ -317,23 +192,19 @@
"Return to app": "అనువర్తనానికి తిరిగి వెళ్ళు",
"restore": "పునరుద్దరించండి",
"to restore": "పునరుద్ధరించడానికి",
- "Unable to restore previous session": "మునుపటి సెషన్ను పునరుద్ధరించడానికి సాధ్యపడలేదు",
"Unable to restore session": "సెషన్ను పునరుద్ధరించడానికి సాధ్యపడలేదు",
"Report it": "దానిని నివేదించండి",
"Remove": "తొలగించు",
"Room directory": "గది వివరము",
"Create new room": "క్రొత్త గది సృష్టించండి",
"Custom Server Options": "మలచిన సేవిక ఎంపికలు",
- "Direct Chat": "ప్రత్యక్ష మాటామంతి",
"Dismiss": "రద్దుచేసే",
"Drop here %(toAction)s": "ఇక్కడ వదలండి %(toAction)s",
"Error": "లోపం",
- "Failed to join the room": "గదిలో చేరడం విఫలమైంది",
"Favourite": "గుర్తుంచు",
"Mute": "నిశబ్ధము",
- "Notifications": "తాఖీదు",
+ "Notifications": "ప్రకటనలు",
"Operation failed": "కార్యం విఫలమైంది",
"Search": "శోధన",
- "Settings": "అమరికలు",
- "Welcome page": "స్వాగత పేజీ"
+ "Settings": "అమరికలు"
}
diff --git a/src/i18n/strings/th.json b/src/i18n/strings/th.json
index 619f081e3a..d45cb86986 100644
--- a/src/i18n/strings/th.json
+++ b/src/i18n/strings/th.json
@@ -1,13 +1,4 @@
{
- "de": "เยอร์มัน",
- "en-us": "อังกฤษ (สหรัฐอเมริกา)",
- "en": "อังกฤษ",
- "en-ca": "อังกฤษ(แคนาดา)",
- "ja": "ญี่ปุ่น",
- "fr": "ฝรั่งเศส",
- "ko": "เกาหลี",
- "th": "ไทย",
- "vi": "เวียดนาม",
"accept": "ยอมรับ",
"Account": "บัญชี",
"Add phone number": "เพิ่มหมายเลขโทรศัพท์",
@@ -30,7 +21,6 @@
"Device ID:": "ID อุปกรณ์:",
"device id: ": "id อุปกรณ์: ",
"Devices": "อุปกรณ์",
- "Direct Chat": "แชทโดยตรง",
"Download %(text)s": "ดาวน์โหลด %(text)s",
"Emoji": "อีโมจิ",
"Enable encryption": "เปิดใช้งานการเข้ารหัส",
@@ -49,7 +39,6 @@
"OK": "ตกลง",
"Password": "รหัสผ่าน",
"Password:": "รหัสผ่าน:",
- "Please Register": "กรุณาลงทะเบียน",
"Profile": "โปรไฟล์",
"Reason": "เหตุผล",
"Register": "ลงทะเบียน",
@@ -76,7 +65,6 @@
"Report it": "รายงานเลย",
"Remove": "ลบ",
"Custom Server Options": "กำหนดเซิร์ฟเวอร์เอง",
- "Failed to join the room": "การเข้าร่วมห้องล้มเหลว",
"Drop here %(toAction)s": "ปล่อยที่นี่%(toAction)s",
"Favourite": "รายการโปรด",
"Failed to forget room %(errCode)s": "การลืมห้องล้มเหลว %(errCode)s",
@@ -91,22 +79,16 @@
"Algorithm": "อัลกอริทึม",
"Hide removed messages": "ซ่อนข้อความที่ถูกลบแล้ว",
"Authentication": "การยืนยันตัวตน",
- "all room members": "สมาชิกทั้งหมด",
- "all room members, from the point they are invited": "สมาชิกทั้งหมด นับตั้งแต่เมื่อได้รับคำเชิญ",
- "all room members, from the point they joined": "สมาชิกทั้งหมด นับตั้งแต่เมื่อเข้าร่วมห้อง",
"an address": "ที่อยู่",
"%(items)s and %(remaining)s others": "%(items)s และอีก %(remaining)s ผู้ใช้",
"%(items)s and one other": "%(items)s และอีกหนึ่งผู้ใช้",
"%(items)s and %(lastItem)s": "%(items)s และ %(lastItem)s",
- "and %(count)s others...": {
- "other": "และอีก %(count)s ผู้ใช้...",
- "one": "และอีกหนึ่งผู้ใช้..."
- },
+ "and %(count)s others...|one": "และอีกหนึ่งผู้ใช้...",
+ "and %(count)s others...|other": "และอีก %(count)s ผู้ใช้...",
"%(names)s and %(lastPerson)s are typing": "%(names)s และ %(lastPerson)s กำลังพิมพ์",
"%(names)s and one other are typing": "%(names)s และอีกหนึ่งคนกำลังพิมพ์",
"%(names)s and %(count)s others are typing": "%(names)s และอีก %(count)s คนกำลังพิมพ์",
"%(senderName)s answered the call.": "%(senderName)s รับสายแล้ว",
- "anyone": "ทุกคน",
"An error has occurred.": "เกิดข้อผิดพลาด",
"Anyone": "ทุกคน",
"Anyone who knows the room's link, apart from guests": "ทุกคนที่มีลิงก์ ยกเว้นแขก",
@@ -126,7 +108,6 @@
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s เปลี่ยนชื่อห้องไปเป็น %(roomName)s",
"%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s ลบชื่อห้อง",
"Changes your display nickname": "เปลี่ยนชื่อเล่นที่แสดงของคุณ",
- "changing room on a RoomView is not supported": "ไม่รองรับการเปลี่ยนห้องใน RoomView",
"Clear Cache and Reload": "ล้างแคชแล้วโหลดใหม่",
"Clear Cache": "ล้างแคช",
"Click here": "คลิกที่นี่",
@@ -231,7 +212,6 @@
"left and rejoined": "ออกแล้วกลับเข้าร่วมอีกครั้ง",
"left": "ออกไปแล้ว",
"%(targetName)s left the room.": "%(targetName)s ออกจากห้องแล้ว",
- "List this room in %(domain)s's room directory?": "แสดงห้องนี้ในไดเรกทอรีห้องของ %(domain)s?",
"Logged in as:": "เข้าสู่ระบบในชื่อ:",
"Login as guest": "เข้าสู่ระบบในฐานะแขก",
"Logout": "ออกจากระบบ",
@@ -252,7 +232,7 @@
"NOT verified": "ยังไม่ได้ยืนยัน",
"No more results": "ไม่มีผลลัพธ์อื่น",
"No results": "ไม่มีผลลัพธ์",
- "Once you've followed the link it contains, click below": "หลังจากคุณเปิดลิงก์ข้างในแล้ว คลิกข้างล่าง",
+ "Once you've followed the link it contains, click below": "หลังจากคุณเปิดลิงก์ข้างในแล้ว คลิกข้างล่าง",
"Passwords can't be empty": "รหัสผ่านต้องไม่ว่าง",
"People": "บุคคล",
"Permissions": "สิทธิ์",
@@ -307,7 +287,6 @@
"Start Chat": "เริ่มแชท",
"Submit": "ส่ง",
"Success": "สำเร็จ",
- "tag as %(tagName)s": "แท็กว่า %(tagName)s",
"tag direct chat": "แท็กว่าแชทตรง",
"Tagged as: ": "แท็กไว้ว่า: ",
"The main address for this room is": "ที่อยู่หลักของห้องนี้คือ",
@@ -316,7 +295,6 @@
"%(actionVerb)s this person?": "%(actionVerb)s บุคคลนี้?",
"The file '%(fileName)s' failed to upload": "การอัปโหลดไฟล์ '%(fileName)s' ล้มเหลว",
"This Home Server does not support login using email address.": "เซิร์ฟเวอร์บ้านนี้ไม่รองรับการลงชื่อเข้าใช้ด้วยที่อยู่อีเมล",
- "There was a problem logging in.": "มีปัญหาในการลงชื่อเข้าใช้",
"this invitation?": "คำเชิญนี้?",
"This is a preview of this room. Room interactions have been disabled": "นี่คือตัวอย่างของห้อง การตอบสนองภายในห้องถูกปิดใช้งาน",
"This phone number is already in use": "หมายเลขโทรศัพท์นี้ถูกใช้งานแล้ว",
@@ -329,12 +307,10 @@
"Create new room": "สร้างห้องใหม่",
"Room directory": "ไดเรกทอรีห้อง",
"Start chat": "เริ่มแชท",
- "Welcome page": "หน้าต้อนรับ",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts .": "ไม่สามารถเชื่อมต่อไปยังเซิร์ฟเวอร์บ้านผ่านทาง HTTP ได้เนื่องจาก URL ที่อยู่บนเบราว์เซอร์เป็น HTTPS กรุณาใช้ HTTPS หรือเปิดใช้งานสคริปต์ที่ไม่ปลอดภัย .",
- "%(count)s new messages.one": "มี %(count)s ข้อความใหม่",
- "%(count)s new messages.other": "มี %(count)s ข้อความใหม่",
+ "%(count)s new messages|one": "มี %(count)s ข้อความใหม่",
+ "%(count)s new messages|other": "มี %(count)s ข้อความใหม่",
"Disable inline URL previews by default": "ตั้งค่าเริ่มต้นให้ไม่แสดงตัวอย่าง URL ในแชท",
- "Disable markdown formatting": "ปิดใช้งานการจัดรูปแบบ markdown",
"End-to-end encryption information": "ข้อมูลการเข้ารหัสจากปลายทางถึงปลายทาง",
"End-to-end encryption is in beta and may not be reliable": "การเข้ารหัสจากปลายทางถึงปลายทางยังอยู่ในเบต้า และอาจพึ่งพาไม่ได้",
"Error: Problem communicating with the given homeserver.": "ข้อผิดพลาด: มีปัญหาในการติดต่อกับเซิร์ฟเวอร์บ้านที่กำหนด",
@@ -349,7 +325,6 @@
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "ไฟล์ '%(fileName)s' มีขนาดใหญ่เกินจำกัดของเซิร์ฟเวอร์บ้าน",
"To send messages": "เพื่อส่งข้อความ",
"to start a chat with someone": "เพื่อเริ่มแชทกับผู้อื่น",
- "to tag as %(tagName)s": "เพื่อแท็กว่า %(tagName)s",
"to tag direct chat": "เพื่อแทกว่าแชทตรง",
"Turn Markdown off": "ปิด markdown",
"Turn Markdown on": "เปิด markdown",
@@ -366,12 +341,11 @@
"unknown device": "อุปกรณ์ที่ไม่รู้จัก",
"Unknown room %(roomId)s": "ห้องที่ไม่รู้จัก %(roomId)s",
"Unknown (user, device) pair:": "คู่ (ผู้ใช้, อุปกรณ์) ที่ไม่รู้จัก:",
- "unknown": "ไม่รู้จัก",
"Unrecognised command:": "คำสั่งที่ไม่รู้จัก:",
"Unrecognised room alias:": "นามแฝงห้องที่ไม่รู้จัก:",
- "Uploading %(filename)s and %(count)s others.zero": "กำลังอัปโหลด %(filename)s",
- "Uploading %(filename)s and %(count)s others.one": "กำลังอัปโหลด %(filename)s และอีก %(count)s ไฟล์",
- "Uploading %(filename)s and %(count)s others.other": "กำลังอัปโหลด %(filename)s และอีก %(count)s ไฟล์",
+ "Uploading %(filename)s and %(count)s others|zero": "กำลังอัปโหลด %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "กำลังอัปโหลด %(filename)s และอีก %(count)s ไฟล์",
+ "Uploading %(filename)s and %(count)s others|other": "กำลังอัปโหลด %(filename)s และอีก %(count)s ไฟล์",
"uploaded a file": "อัปโหลดไฟล์",
"Upload Failed": "การอัปโหลดล้มเหลว",
"Upload Files": "อัปโหลดไฟล์",
@@ -419,7 +393,6 @@
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s %(day)s %(monthName)s %(fullYear)s %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Set a display name:": "ตั้งชื่อที่แสดง:",
- "Set a Display Name": "ตั้งชื่อที่แสดง",
"Passwords don't match.": "รหัสผ่านไม่ตรงกัน",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "รหัสผ่านสั้นเกินไป (ขึ้นต่ำ %(MIN_PASSWORD_LENGTH)s ตัวอักษร)",
"An unknown error occurred.": "เกิดข้อผิดพลาดที่ไม่รู้จัก",
@@ -477,115 +450,7 @@
"%(oneUser)sleft %(repeats)s times": "%(oneUser)sออกจากห้อง %(repeats)s ครั้ง",
"%(severalUsers)sleft": "%(severalUsers)sออกจากห้องแล้ว",
"%(oneUser)sleft": "%(oneUser)sออกจากห้องแล้ว",
- "el": "กรีก",
- "en-au": "อังกฤษ (ออสเตรเลีย)",
- "en-bz": "อังกฤษ (เบลีซ)",
- "en-gb": "อังกฤษ (สหราชอาณาจักร)",
- "en-nz": "อังกฤษ (นิวซีแลนด์)",
- "en-jm": "อังกฤษ (จาเมกา)",
- "en-ie": "อังกฤษ (ไอร์แลนด์)",
- "en-tt": "อังกฤษ (ตรินิแดด)",
- "af": "แอฟริกาใต้",
- "ar-ae": "อาหรับ (สหรัฐอาหรับเอมิเรตส์)",
- "ar-bh": "อาหรับ (บาห์เรน)",
- "ar-dz": "อาหรับ (แอลจีเรีย)",
- "ar-eg": "อาหรับ (อียิปต์)",
- "ar-iq": "อาหรับ (อิรัก)",
- "ar-jo": "อาหรับ (จอร์แดน)",
- "ar-kw": "อาหรับ (คูเวต)",
- "ar-lb": "อาหรับ (เลบานอน)",
- "ar-ly": "อาหรับ (ลิเบีย)",
- "ar-ma": "อาหรับ (โมร็อกโก)",
- "ar-om": "อาหรับ (โอมาน)",
- "ar-qa": "อาหรับ (กาตาร์)",
- "ar-sa": "อาหรับ (ซาอุดีอาระเบีย)",
- "ar-sy": "อาหรับ (ซีเรีย)",
- "ar-tn": "อาหรับ (ตูนิเซีย)",
- "ar-ye": "อาหรับ (เยเมน)",
- "be": "เบลารุส",
- "bg": "บัลแกเรีย",
- "ca": "คาตาลัน",
- "cs": "สาธารณรัฐเช็ก",
- "da": "เดนมาร์ก",
- "de-at": "เยอรมัน (ออสเตรีย)",
- "de-ch": "เยอรมัน (สวิสเซอร์แลนด์)",
- "de-lu": "เยอรมัน (ลักเซมเบิร์ก)",
- "en-za": "อังกฤษ (แอฟริกาใต้)",
- "es-ar": "สเปน (อาร์เจนตินา)",
- "es-bo": "สเปน (โบลิเวีย)",
- "es-cl": "สเปน (ชิลี)",
- "es-co": "สเปน (โคลัมเบีย)",
- "es-cr": "สเปน (คอสตาริกา)",
- "es-do": "สเปน (สาธารณรัฐโดมินิกัน)",
- "zu": "สูลู",
- "zh-tw": "จีน (ไต้หวัน)",
- "zh-sg": "จีน (สิงคโปร์)",
- "zh-hk": "จีน (ฮ่องกง)",
- "xh": "โซซา",
- "ve": "เวนดา",
- "ur": "อูรดู",
- "uk": "ยูเครน",
- "ts": "ซองก้า",
- "tr": "ตุรกี",
- "tn": "ซวานา",
- "sv": "สวีเดน",
- "sv-fi": "สวีเดน (ฟินแลนด์)",
- "sr": "เซอร์เบีย",
- "sq": "แอลเบเนีย",
- "sl": "สโลเวเนีย",
- "sk": "สโลวาเกีย",
- "sb": "ซอร์เบีย",
- "ru": "รัสเซีย",
- "ru-mo": "รัสเซีย (สาธารณรัฐมอลโดวา)",
- "ro": "โรมาเนีย",
- "ro-mo": "โรมาเนีย (สาธารณรัฐมอลโดวา)",
- "pt": "โปรตุเกส",
- "pt-br": "โปรตุเกส (บราซิล)",
- "pl": "โปแลนด์",
- "no": "นอร์เวย์",
- "nl": "ดัตช์",
- "nl-be": "ดัตช์ (เบลเยียม)",
- "mt": "มอลตา",
- "ms": "มาเลเซีย",
- "lv": "ลัตเวีย",
- "lt": "ลิธัวเนีย",
- "ji": "ยิดดิช",
- "it": "อิตาลี",
- "it-ch": "อิตาลี (สวิสเซอร์แลนด์)",
- "is": "ไอซ์แลนด์",
- "id": "อินโดนีเซีย",
- "hu": "ฮังการี",
- "hr": "โครเอเชีย",
- "hi": "ฮินดู",
- "he": "อิสราเอล",
- "gd": "เกลิค (สกอตแลนด์)",
- "fr-lu": "ฝรั่งเศส (ลักเซมเบิร์ก)",
- "fr-ca": "ฝรั่งเศส (แคนาดา)",
- "fr-ch": "ฝรั่งเศส (สวิสเซอร์แลนด์)",
- "fr-be": "ฝรั่งเศส (เบลเยี่ยม)",
- "fo": "แฟโร",
- "fi": "ฟินแลนด์",
- "fa": "ฟาร์ซิ",
- "et": "เอสโตเนีย",
- "es-ve": "สเปน (เวเนซุเอลา)",
- "es-uy": "สเปน (อุรุกวัย)",
- "es-sv": "สเปน (เอลซัลวาดอร์)",
- "es": "สเปน (สเปน)",
- "es-py": "สเปน (ปารากวัย)",
- "es-pr": "สเปน (เปอร์โตริโก)",
- "es-pe": "สเปน (เปรู)",
- "es-pa": "สเปน (ปานามา)",
- "es-ni": "สเปน (นิการากัว)",
- "es-mx": "สเปน (เม็กซิโก)",
- "es-hn": "สเปน (ฮอนดูรัส)",
- "es-gt": "สเปน (กัวเตมาลา)",
- "es-ec": "สเปน (เอกวาดอร์)",
"Add": "เพิ่ม",
- "de-li": "เยอรมัน (ลิกเตนสไตน์)",
- "eu": "บาสก์ (บาสก์)",
- "ga": "ไอร์แลนด์",
- "zh-cn": "จีน (สาธารณรัฐประชาชนจีน)",
- "mk": "มาซิโดเนีย (อดีตสาธารณรัฐยูโกสลาฟมาซิโดเนีย)",
"a room": "ห้อง",
"Accept": "ยอมรับ",
"VoIP": "VoIP",
@@ -599,8 +464,8 @@
"This room": "ห้องนี้",
"Unnamed Room": "ห้องที่ยังไม่ได้ตั้งชื่อ",
"%(user)s is a": "%(user)s เป็น",
- "(~%(count)s results).one": "(~%(count)s ผลลัพท์)",
- "(~%(count)s results).other": "(~%(count)s ผลลัพท์)",
+ "(~%(count)s results)|one": "(~%(count)s ผลลัพท์)",
+ "(~%(count)s results)|other": "(~%(count)s ผลลัพท์)",
"Admin tools": "เครื่องมือผู้ดูแล",
"And %(count)s more...": "เพิ่มอีก %(count)s ชิ้น...",
"Missing Media Permissions, click here to request.": "ไม่มีสิทธิ์เข้าถึงสื่อ, คลิกที่นี่เพื่อขอสิทธิ์",
@@ -611,7 +476,6 @@
"Drop File Here": "วางไฟล์ที่นี่",
"Enable Notifications": "เปิดใฃ้งานการแจ้งเตือน",
"Level:": "ระดับ:",
- "Press": "คลิก",
"Press to start a chat with someone": "คลิก เพื่อเริ่มแชทกับผู้อื่น",
"Private Chat": "แชทส่วนตัว",
"Public Chat": "แชทสาธารณะ",
diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json
index effc426464..23d4e284bc 100644
--- a/src/i18n/strings/tr.json
+++ b/src/i18n/strings/tr.json
@@ -1,124 +1,4 @@
{
- "af": "Afrikanca (Taal)",
- "ar-ae": "Arapça (B.A.E)",
- "ar-bh": "Arapça (Bahreyn)",
- "ar-dz": "Arapça (Cezayir)",
- "ar-eg": "Arapça (Mısır)",
- "ar-iq": "Arapça (Irak)",
- "ar-jo": "Arapça (Ürdün)",
- "ar-kw": "Arapça (Kuveyt)",
- "ar-lb": "Arapça (Lübnan)",
- "ar-ly": "Arapça (Libya)",
- "ar-ma": "Arapça (Fas)",
- "ar-om": "Arapça (Umman)",
- "ar-qa": "Arapça (Katar)",
- "ar-sa": "Arapça (Suudi Arabistan)",
- "ar-sy": "Arapça (Suriye)",
- "ar-tn": "Arapça (Tunus)",
- "ar-ye": "Arapça (Yemen)",
- "be": "Beyaz Rusça",
- "bg": "Bulgarca",
- "ca": "Katalanca",
- "cs": "Çek Dili",
- "da": "Danimarkaca",
- "de-at": "Almanca (Avusturya)",
- "de-ch": "Almanca (İsviçre)",
- "de": "Almanca",
- "de-li": "Almanca (Liechtenstein)",
- "de-lu": "Almanca (Lüksemburg)",
- "el": "Yunanca",
- "en-au": "İngilizce (Avustralya)",
- "en-bz": "İngilizce (Belize)",
- "en-ca": "İngilizce (Kanada)",
- "en": "İngilizce",
- "en-gb": "İngilizce (İngiltere)",
- "en-ie": "İngilizce (İrlanda)",
- "en-jm": "İngilizce (Jamaika)",
- "en-nz": "İngilizce (Yeni Zellanda)",
- "en-tt": "İngilizce (Trinidad)",
- "en-us": "İngilizce (Amerika)",
- "en-za": "İngilizce (Güney Afrika)",
- "es-ar": "İspanyolca (Arjantin)",
- "es-bo": "İspanyolca (Bolivya)",
- "es-cl": "İspanyolca (Şili)",
- "es-co": "İspanyolca (Kolombiya)",
- "es-cr": "İspanyolca (Kosta Rika)",
- "es-do": "İspanyolca (Dominik Cumhuriyeti)",
- "es-ec": "İspanyolca (Ekvador)",
- "es-gt": "İspanyolca (Guatemala)",
- "es-hn": "İspanyolca (Honduras)",
- "es-mx": "İspanyolca (Meksika)",
- "es-ni": "İspanyolca (Nikaragua)",
- "es-pa": "İspanyolca (Panama)",
- "es-pe": "İspanyolca (Peru)",
- "es-pr": "İspanyolca (Porto Riko)",
- "es-py": "İspanyolca (Paraguay)",
- "es": "İspanyolca (İspanya)",
- "es-sv": "İspanyolca (El Salvador)",
- "es-uy": "İspanyolca (Uruguay)",
- "es-ve": "İspanyolca (Venezuela)",
- "et": "Estonya Dili",
- "eu": "Baskça",
- "fa": "Farsça",
- "fi": "Fince",
- "fo": "Faroe",
- "fr-be": "Fransızca (Belçika)",
- "fr-ca": "Fransızca (Kanada)",
- "fr-ch": "Fransızca (İsviçre)",
- "fr": "Fransızca",
- "fr-lu": "Fransızca (Lüxemburg)",
- "ga": "İrlandaca",
- "gd": "Gaelik (İskoçya)",
- "he": "İbranice",
- "hi": "Hintçe",
- "hr": "Hırvatça",
- "hu": "Macarca",
- "id": "Endonezya Dili",
- "is": "İzlandaca",
- "it-ch": "İtalyanca (İsviçre)",
- "it": "İtalyanca",
- "ja": "Japonca",
- "ji": "Eskenazi Dili",
- "ko": "Korece",
- "lt": "Litvanya Dili",
- "lv": "Letonya Dili",
- "mk": "Makedonca (FYROM)",
- "ms": "Malezyanca",
- "mt": "Malta Dili",
- "nl-be": "Hollandaca (Belçika)",
- "nl": "Hollandaca",
- "no": "Norveççe",
- "pl": "Polonya Dili",
- "pt-br": "Brezilya Portekizcesi",
- "pt": "Portekizce",
- "rm": "Reto-Latince",
- "ro-mo": "Romence (Moldova Cumhuriyeti)",
- "ro": "Romence",
- "ru-mo": "Rusça (Moldova Cumhuriyeti)",
- "ru": "Rusça",
- "sb": "Sorbca",
- "sk": "Slovakça",
- "sl": "Slovence",
- "sq": "Arnavutça",
- "sr": "Sırpça",
- "sv-fi": "İsveççe (Finlandiya)",
- "sv": "İsveççe",
- "sx": "Sutu Dili",
- "sz": "Sami Dili",
- "th": "Tayland Dili",
- "tn": "Setsvana",
- "tr": "Türkçe",
- "ts": "Tsonga Dili",
- "uk": "Ukraynaca",
- "ur": "Urduca",
- "ve": "Venda Dili",
- "vi": "Vietnam Dili",
- "xh": "Xhosa Dili",
- "zh-cn": "Çince (PRC)",
- "zh-hk": "Çince (Hong Kong)",
- "zh-sg": "Çince (Singapur)",
- "zh-tw": "Çince (Tayvan)",
- "zu": "Zulu Dili",
"a room": "bir oda",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "+%(msisdn)s 'ye bir kısa mesaj gönderildi . Lütfen içerdiği doğrulama kodunu girin",
"Accept": "Kabul Et",
@@ -132,7 +12,7 @@
"Add email address": "E-posta adresi ekle",
"Add phone number": "Telefon numarası ekle",
"Admin": "Admin",
- "Admin tools": "Admin araçları",
+ "Admin Tools": "Admin araçları",
"And %(count)s more...": "Ve %(count)s fazlası...",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Medya İzinleri Yok , talep etmek için burayı tıklayın.",
@@ -149,24 +29,18 @@
"Always show message timestamps": "Her zaman mesaj zaman dalgalarını (timestamps) gösterin",
"Authentication": "Doğrulama",
"Alias (optional)": "Diğer ad (isteğe bağlı)",
- "all room members": "Tüm oda üyeleri",
- "all room members, from the point they are invited": "Tüm oda üyeleri , davet edildiği noktadan",
- "all room members, from the point they joined": "Tüm oda üyeleri , katıldıkları noktalardan",
"and": "ve",
"%(items)s and %(remaining)s others": "%(items)s ve %(remaining)s diğerleri",
"%(items)s and one other": "%(items)s ve bir başkası",
"%(items)s and %(lastItem)s": "%(items)s ve %(lastItem)s",
- "and %(count)s others...": {
- "other": "ve %(count)s diğerleri...",
- "one": "ve bir diğeri..."
- },
+ "and %(count)s others...|one": "ve bir diğeri...",
+ "and %(count)s others...|other": "ve %(count)s diğerleri...",
"%(names)s and %(lastPerson)s are typing": "%(names)s ve %(lastPerson)s yazıyorlar",
"%(names)s and one other are typing": "%(names)s ve birisi yazıyor",
"%(names)s and %(count)s others are typing": "%(names)s ve %(count)s diğeri yazıyor",
"An email has been sent to": "Bir e-posta gönderildi",
"A new password must be entered.": "Yeni bir şifre girilmelidir.",
"%(senderName)s answered the call.": "%(senderName)s aramayı cevapladı.",
- "anyone": "herhangi biri",
"An error has occurred.": "Bir hata oluştu.",
"Anyone": "Kimse",
"Anyone who knows the room's link, apart from guests": "Misafirler dışında odanın bağlantısını bilen herkes",
@@ -197,7 +71,6 @@
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s konuyu \"%(topic)s\" olarak değiştirdi.",
"Changes to who can read history will only apply to future messages in this room": "Geçmişi kimlerin okuyabileceğine ait değişiklikler yalnızca bu odada gelecekteki iletiler için geçerli olur",
"Changes your display nickname": "Görünen takma adınızı değiştirir",
- "changing room on a RoomView is not supported": "Oda Ekranında oda değiştirme desteklenmiyor",
"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.": "Şifre değiştirme eğer oda anahtarlarınızı dışa aktarmaz ve daha sonra tekrar içe aktarmazsanız , şu anda tüm cihazlarda uçtan uca şifreleme anahtarlarını sıfırlayacak ve geçmişi okunamaz hale getirecek . Gelecekte bu geliştirilecek.",
"Claimed Ed25519 fingerprint key": "Ed25519 parmak izi anahtarı istendi",
"Clear Cache and Reload": "Önbelleği Temizle ve Yeniden Yükle",
@@ -220,8 +93,8 @@
"Confirm your new password": "Yeni Şifrenizi Onaylayın",
"Continue": "Devam Et",
"Could not connect to the integration server": "Bütünleştirme (Integration) Sunucusuna bağlanamadı",
- "%(count)s new messages.one": "%(count)s yeni mesaj",
- "%(count)s new messages.other": "%(count)s yeni mesajlar",
+ "%(count)s new messages|one": "%(count)s yeni mesaj",
+ "%(count)s new messages|other": "%(count)s yeni mesajlar",
"Create a new chat or reuse an existing one": "Yeni sohbet oluştur veya mevcut sohbetinizi tekrar kullanın",
"Create an account": "Hesap Oluştur",
"Create Room": "Oda Oluştur",
@@ -247,12 +120,10 @@
"Device key:": "Cihaz anahtarı:",
"Devices": "Cihazlar",
"Devices will not yet be able to decrypt history from before they joined the room": "Cihazlar odaya girdiğinden önceki geçmişin şifresini çözemez",
- "Direct Chat": "Doğrudan Sohbet",
"Direct chats": "Doğrudan Sohbetler",
"Disable Notifications": "Bildirimleri Devre Dışı Bırak",
"disabled": "Devre Dışı Bırakıldı",
"Disable inline URL previews by default": "Satır için URL önizlemelerini varsayılan olarak devre dışı bırak",
- "Disable markdown formatting": "Markdown formatlamayı devre dışı bırak",
"Disinvite": "Daveti İptal Et",
"Display name": "Görünür İsim",
"Displays action": "Görünür eylem",
@@ -295,7 +166,6 @@
"Failed to fetch avatar URL": "Avatar URL'i alınamadı",
"Failed to forget room %(errCode)s": "Oda unutulması başarısız oldu %(errCode)s",
"Failed to join room": "Odaya girme hatası",
- "Failed to join the room": "Odaya girme başarısız oldu",
"Failed to kick": "Atma(Kick) işlemi başarısız oldu",
"Failed to leave room": "Odadan ayrılma başarısız oldu",
"Failed to load timeline position": "Zaman çizelgesi konumu yüklenemedi",
@@ -328,10 +198,6 @@
"Found a bug?": "Hata buldunuz mu ?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s %(fromPowerLevel)s den %(toPowerLevel)s ' ye",
"Guest access is disabled on this Home Server.": "Misafir erişimi bu Ana Sunucu için devre dışı.",
- "Guests can't set avatars. Please register.": "Misafirler Avatarlarını ayarlayamazlar . Lütfen kayıt olun.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "Misafir kullanıcılar yeni oda oluşturamazlar. Yeni oda oluşturmak ve sohbet başlatmak için lütfen kayıt olun.",
- "Guest users can't upload files. Please register to upload.": "Misafir kullanıcılar dosya yükleyemezler . Lütfen yüklemek için kayıt olun.",
- "Guests can't use labs features. Please register.": "Misafirler laboratuar özelliklerini kullanamazlar . Lütfen kayıt olun.",
"Guests cannot join this room even if explicitly invited.": "Misafirler açıkca davet edilseler bile bu odaya katılamazlar.",
"had": "vardı",
"Hangup": "Sorun",
@@ -380,13 +246,16 @@
"left": "ayrıldı",
"%(targetName)s left the room.": "%(targetName)s odadan ayrıldı.",
"Level:": "Seviye :",
- "List this room in %(domain)s's room directory?": "Bu oda %(domain)s' in oda dizininde listelensin mi ?",
"Local addresses for this room:": "Bu oda için yerel adresler :",
"Logged in as:": "Olarak giriş yaptı :",
"Login as guest": "Misafir olarak giriş yaptı",
"Logout": "Çıkış Yap",
"Low priority": "Düşük öncelikli",
- "%(senderName)s made future room history visible to": "%(senderName)s gelecekte oda geçmişini görünür yaptı",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s gelecekte oda geçmişini görünür yaptı Tüm oda üyeleri , davet edildiği noktadan.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s gelecekte oda geçmişini görünür yaptı Tüm oda üyeleri , katıldıkları noktalardan.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s gelecekte oda geçmişini görünür yaptı Tüm oda üyeleri.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s gelecekte oda geçmişini görünür yaptı herhangi biri.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s gelecekte oda geçmişini görünür yaptı bilinmeyen (%(visibility)s).",
"Manage Integrations": "Entegrasyonları Yönet",
"Markdown is disabled": "Markdown devre dışı",
"Markdown is enabled": "Markdown aktif",
@@ -406,7 +275,6 @@
"Never send encrypted messages to unverified devices in this room": "Bu odada doğrulanmamış cihazlara asla şifreli mesajlar göndermeyin",
"Never send encrypted messages to unverified devices in this room from this device": "Bu odada bu cihazdan doğrulanmamış cihazlara asla şifrelenmiş mesajlar göndermeyin",
"New address (e.g. #foo:%(localDomain)s)": "Yeni adres (e.g. #foo:%(localDomain)s)",
- "New Composer & Autocomplete": "Yeni Besteci & Otomatik Tamamlama",
"New password": "Yeni Şifre",
"New passwords don't match": "Yeni şifreler uyuşmuyor",
"New passwords must match each other.": "Yeni şifreler birbirleriyle eşleşmelidir.",
@@ -425,7 +293,7 @@
"OK": "Tamam",
"olm version:": "olm versiyon:",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Bu oda için şifreleme etkinleştirildikten sonra tekrar kapatılamaz (şimdilik)",
- "Once you've followed the link it contains, click below": "Bir kere ' içerdiği bağlantıyı takip ettikten sonra , aşağıya tıklayın",
+ "Once you've followed the link it contains, click below": "Bir kere ' içerdiği bağlantıyı takip ettikten sonra , aşağıya tıklayın",
"Only people who have been invited": "Sadece davet edilmiş insanlar",
"Operation failed": "Operasyon başarısız oldu",
"Otherwise, click here to send a bug report.": "Aksi taktirde , bir hata raporu göndermek için buraya tıklayın .",
@@ -437,9 +305,7 @@
"Phone": "Telefon",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s bir %(callType)s çağrısı yerleştirdi.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Lütfen e-postanızı kontrol edin ve içerdiği bağlantıya tıklayın . Bu işlem tamamlandıktan sonra , 'devam et' e tıklayın .",
- "Please Register": "Lütfen Kaydolun",
"Power level must be positive integer.": "Güç seviyesi pozitif tamsayı olmalıdır.",
- "Press": "Basın",
"Press to start a chat with someone": "Birisiyle sohbet başlatmak için tuşuna basın",
"Privacy warning": "Gizlilik uyarısı",
"Private Chat": "Özel Sohbet",
@@ -484,7 +350,6 @@
"Search": "Ara",
"Search failed": "Arama başarısız",
"Searches DuckDuckGo for results": "Sonuçlar için DuckDuckGo'yu arar",
- "Searching known users": "Bilinen kullanıcıları arama",
"Seen by %(userName)s at %(dateTime)s": "%(dateTime)s ' de %(userName)s tarafından görüldü",
"Send a message (unencrypted)": "Bir mesaj gönder (Şifrelenmemiş)",
"Send an encrypted message": "Şifrelenmiş bir mesaj gönder",
@@ -524,14 +389,12 @@
"Start Chat": "Sohbet Başlat",
"Submit": "Gönder",
"Success": "Başarı",
- "tag as %(tagName)s": "%(tagName)s olarak etiketle",
"tag direct chat": "Doğrudan sohbeti etiketle",
"Tagged as: ": "Olarak etiketlendi : ",
"The default role for new room members is": "Yeni oda üyelerinin varsayılan rolü",
"The main address for this room is": "Bu oda için ana adres",
"The phone number entered looks invalid": "Girilen telefon numarası geçersiz görünüyor",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Sağladığınız imza anahtarı %(userId)s aygıtından %(deviceId)s ile eşleşiyor . Aygıt doğrulanmış olarak işaretlendi.",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "Bu eylem bir Misafir Kullanıcı tarafından yapılamaz . Lütfen bunu yapabilmek için Kaydolun .",
"This email address is already in use": "Bu e-posta adresi zaten kullanımda",
"This email address was not found": "Bu e-posta adresi bulunamadı",
"%(actionVerb)s this person?": "Bu kişi %(actionVerb)s yapılsın mı ?",
@@ -541,7 +404,6 @@
"The remote side failed to pick up": "Uzak taraf toplanamadı(alınamadı)",
"This Home Server does not support login using email address.": "Bu Ana Sunucu E-posta adresi kullanarak giriş yapmayı desteklemiyor.",
"This invitation was sent to an email address which is not associated with this account:": "Bu davet bu hesapla ilişkili olmayan bir e-posta adresine gönderildi :",
- "There was a problem logging in.": "Oturum açarken bir sorun oluştu.",
"This room has no local addresses": "Bu oda hiçbir yerel adrese sahip değil",
"This room is not recognised.": "Bu oda tanınmıyor.",
"These are experimental features that may break in unexpected ways": "Bunlar beklenmedik yollarla bozulabilecek deneysel özellikler",
@@ -568,7 +430,6 @@
"To send events of type": "Tip olayını göndermek için",
"To send messages": "Mesaj göndermek için",
"to start a chat with someone": "birisiyle sohbet başlatmak için",
- "to tag as %(tagName)s": "%(tagName)s olarak etiketlemek için",
"to tag direct chat": "doğrudan sohbeti etiketlemek için",
"To use it, just wait for autocomplete results to load and tab through them.": "Kullanmak için , otomatik tamamlama sonuçlarının yüklenmesini ve bitmesini bekleyin.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Bu odanın zaman çizelgesinde belirli bir nokta yüklemeye çalışıldı , ama geçerli mesajı görüntülemeye izniniz yok.",
@@ -578,7 +439,6 @@
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s uçtanuca şifrelemeyi açtı (algoritma -> %(algorithm)s).",
"Unable to add email address": "E-posta adresi eklenemiyor",
"Unable to remove contact information": "Kişi bilgileri kaldırılamıyor",
- "Unable to restore previous session": "Önceki oturumlar geri yüklenemiyor",
"Unable to verify email address.": "E-posta adresi doğrulanamıyor.",
"Unban": "Yasağı Kaldır",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s %(targetName)s 'in yasağını kaldırdı.",
@@ -595,15 +455,14 @@
"unknown error code": "bilinmeyen hata kodu",
"Unknown room %(roomId)s": "Bilinmeyen oda %(roomId)s",
"Unknown (user, device) pair:": "Bilinmeyen (kullanıcı , cihaz) çifti :",
- "unknown": "bilinmeyen",
"Unmute": "Sesi aç",
"Unnamed Room": "İsimsiz Oda",
"Unrecognised command:": "Tanınmayan komut :",
"Unrecognised room alias:": "Tanınmayan oda isimleri :",
"Unverified": "Doğrulanmamış",
- "Uploading %(filename)s and %(count)s others.zero": "%(filename)s yükleniyor",
- "Uploading %(filename)s and %(count)s others.one": "%(filename)s ve %(count)s kadarı yükleniyor",
- "Uploading %(filename)s and %(count)s others.other": "%(filename)s ve %(count)s kadarları yükleniyor",
+ "Uploading %(filename)s and %(count)s others|zero": "%(filename)s yükleniyor",
+ "Uploading %(filename)s and %(count)s others|one": "%(filename)s ve %(count)s kadarı yükleniyor",
+ "Uploading %(filename)s and %(count)s others|other": "%(filename)s ve %(count)s kadarları yükleniyor",
"uploaded a file": "bir dosya yüklendi",
"Upload avatar": "Avatar yükle",
"Upload Failed": "Yükleme Başarısız",
@@ -657,7 +516,6 @@
"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": "Tüm cihazlardan çıkış yaptınız ve artık bildirimler almayacaksınız . Bildirimleri yeniden etkinleştirmek için , her cihazda tekrar giriş yapın",
"You have disabled URL previews by default.": "URL önizlemelerini varsayılan olarak devre dışı bıraktınız.",
"You have enabled URL previews by default.": "URL önizlemelerini varsayılan olarak etkinleştirdiniz .",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "Geçersiz bir kişi girdiniz . Matrix ID veya e-posta adresini kullanarak tekrar deneyin.",
"You have no visible notifications": "Hiçbir görünür bildiriminiz yok",
"You may wish to login with a different account, or add this email to this account.": "Farklı bir hesap ile giriş yapmak veya bu e-postayı bu hesaba eklemek istemiş olabilirsiniz.",
"you must be a": "olabilirsiniz",
@@ -697,7 +555,6 @@
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "Hafta - %(weekDayName)s , %(day)s -%(monthName)s -%(fullYear)s , %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Set a display name:": "Görünür isim ayarla :",
- "Set a Display Name": "Görünür bir isim Ayarla",
"Upload an avatar:": "Bir Avatar yükle :",
"This server does not support authentication with a phone number.": "Bu sunucu bir telefon numarası ile kimlik doğrulamayı desteklemez.",
"Missing password.": "Şifre eksik.",
@@ -718,10 +575,9 @@
"Room": "Oda",
"Connectivity to the server has been lost.": "Sunucuyla olan bağlantı kesildi.",
"Sent messages will be stored until your connection has returned.": "Gönderilen iletiler bağlantınız geri gelene kadar saklanacak.",
- "Auto-complete": "Otomatik tamamlama",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": " Hepsini yeniden gönderin veya Hepsini iptal edin şimdi . Ayrıca yeniden göndermek veya iptal etmek için özel iletiler seçebilirsin.",
- "(~%(count)s results).one": "(~%(count)s sonuç)",
- "(~%(count)s results).other": "(~%(count)s sonuçlar)",
+ "(~%(count)s results)|one": "(~%(count)s sonuç)",
+ "(~%(count)s results)|other": "(~%(count)s sonuçlar)",
"Cancel": "İptal Et",
"or": "veya",
"Active call": "Aktif çağrı",
@@ -790,7 +646,6 @@
"%(oneUser)schanged their avatar": "%(oneUser)s Avatarını değiştirdi",
"Please select the destination room for this message": "Bu ileti için lütfen hedef oda seçin",
"Create new room": "Yeni Oda Oluştur",
- "Welcome page": "Karşılama sayfası",
"Room directory": "Oda Rehberi",
"Start chat": "Sohbet Başlat",
"New Password": "Yeni Şifre",
@@ -813,7 +668,6 @@
"You must join the room to see its files": "Dosyalarını görmek için odaya katılmalısınız",
"Reject all %(invitedRooms)s invites": "Tüm %(invitedRooms)s davetlerini reddet",
"Start new chat": "Yeni sohbet başlat",
- "Guest users can't invite users. Please register.": "Misafir Kullanıcılar kullanıcıları davet edemez . Lütfen kaydolun .",
"Failed to invite": "Davet edilemedi",
"Failed to invite user": "Kullanıcı davet edilemedi",
"Failed to invite the following users to the %(roomName)s room:": "Aşağıdaki kullanıcılar %(roomName)s odasına davet edilemedi :",
@@ -836,7 +690,6 @@
"Unable to restore session": "Oturum geri yüklenemiyor",
"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.": "Eğer daha önce Riot'un daha yeni bir versiyonunu kullandıysanız , oturumunuz bu sürümle uyumsuz olabilir . Bu pencereyi kapatın ve daha yeni sürüme geri dönün.",
"Continue anyway": "Her halükarda devam et",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Görünür isminiz , odalarda konuşurken başkalarına nasıl görüneceğinizdir . İsminizin ne olmasını istersiniz ?",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Şu anda doğrulanmamış cihazları kara listeye alıyorsunuz , bu cihazlara mesaj göndermek için onları doğrulamanız gerekir.",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Her cihazın yasal sahiplerine ait olduklarını doğrulamak için doğrulama işlemini gerçekleştirmenizi öneririz, ancak tercih edip onaylamadan iletiyi tekrar gönderebilirsiniz.",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" daha önce görmediğiniz cihazları içeriyor.",
diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json
index 1b74eed81e..697ed818a2 100644
--- a/src/i18n/strings/uk.json
+++ b/src/i18n/strings/uk.json
@@ -1,82 +1,16 @@
{
- "af": "афрікаанс",
- "ar-ae": "арабська (ОАЕ)",
- "ar-bh": "арабська (Бахрейн)",
- "ar-dz": "арабська (Алжир)",
- "ar-eg": "арабська (Єгипет)",
- "ar-iq": "арабська (Ірак)",
- "ar-jo": "арабська (Йорданія)",
- "ar-kw": "арабська (Кувейт)",
- "ar-lb": "арабська (Ліван)",
- "ar-ly": "арабська (Лівія)",
- "ar-ma": "арабська (Марокко)",
- "ar-om": "арабська (Оман)",
- "ar-qa": "арабська (Катар)",
- "ar-sa": "арабська (Саудівська Аравія)",
- "ar-sy": "арабська (Сирія)",
- "ar-tn": "арабська (Туніс)",
- "ar-ye": "арабська (Йемен)",
- "be": "білоруська",
- "bg": "болгарська",
- "ca": "каталонська",
- "cs": "чеська",
- "da": "данська",
- "de-at": "німецька (Австрія)",
- "de-ch": "німецька (Швейцарія)",
- "de": "німецька",
- "de-li": "німецька (Ліхтенштейн)",
- "de-lu": "німецька (Люксембург)",
- "el": "грецька",
- "en-au": "англійська (Австралія)",
- "en-bz": "англійська (Беліз)",
- "en-ca": "англійська (Канада)",
- "en": "англійська",
- "en-gb": "англійська (Великобританія)",
- "en-ie": "англійська (Ірландія)",
- "en-jm": "англійська (Ямайка)",
- "en-nz": "англійська (Нова Зеландія)",
- "en-tt": "англійська (Тринідад)",
- "en-us": "англійська (Сполучені Штати)",
- "en-za": "англійська (ПАР)",
- "es-ar": "іспанська (Аргентина)",
- "es-bo": "іспанська (Болівія)",
- "es-cl": "іспанська (Чилі)",
- "es-co": "іспанська (Колумбія)",
- "es-cr": "іспанська (Коста Ріка)",
- "es-do": "іспанська (Домініканська Республіка)",
- "es-ec": "іспанська (Еквадор)",
- "es-gt": "іспанська (Гватемала)",
- "es-hn": "іспанська (Гондурас)",
- "es-mx": "іспанська (Мексика)",
- "es-ni": "іспанська (Нікарагуа)",
- "es-pa": "іспанська (Панама)",
- "es-pe": "іспанська (Перу)",
- "es-pr": "іспанська (Пуерто Ріко)",
- "es-py": "іспанська (Парагвай)",
- "es": "іспанська (Іспанія)",
- "es-sv": "іспанська (Сальвадор)",
- "es-uy": "іспанська (Уругвай)",
- "es-ve": "іспанська (Венесуела)",
- "et": "естонська",
- "eu": "баскійська",
- "fa": "перська",
- "fi": "фінська",
- "fo": "фарерська",
"Cancel": "Скасувати",
"Close": "Закрити",
"Create new room": "Створити нову кімнату",
"Custom Server Options": "Нетипові параметри сервера",
- "Direct Chat": "Прямий чат",
"Dismiss": "Відхилити",
"Drop here %(toAction)s": "Кидайте сюди %(toAction)s",
"Error": "Помилка",
"Failed to forget room %(errCode)s": "Не вдалось забути кімнату %(errCode)s",
- "Failed to join the room": "Не вдалося приєднатись до кімнати",
"Favourite": "Вибране",
"Mute": "Стишити",
"Notifications": "Сповіщення",
"Operation failed": "Не вдалося виконати дію",
- "Please Register": "Зареєструйтеся, будь ласка",
"powered by Matrix": "працює на Matrix",
"Remove": "Прибрати",
"Room directory": "Каталог кімнат",
@@ -92,66 +26,8 @@
"Friday": "П'ятниця",
"Saturday": "Субота",
"OK": "Гаразд",
- "Welcome page": "Ласкаво просимо",
"Failed to change password. Is your password correct?": "Не вдалось змінити пароль. Ви впевнені, що пароль введено правильно?",
"Continue": "Продовжити",
- "fr-be": "французька (Бельгія)",
- "fr-ca": "французька (Канада)",
- "fr-ch": "французька (Швейцарія)",
- "fr": "французька",
- "fr-lu": "французька (Люксембург)",
- "ga": "ірландська",
- "gd": "гельська (Шотландія)",
- "he": "іврит",
- "hi": "гінді",
- "hr": "хорватська",
- "hu": "угорська",
- "id": "індонезійська",
- "is": "ісландська",
- "it-ch": "італійська (Швейцарія)",
- "it": "італійська",
- "ja": "японська",
- "ji": "ідиш",
- "ko": "корейська",
- "lt": "литовська",
- "lv": "латвійська",
- "mk": "македонська (КЮРМ)",
- "ms": "малайська",
- "mt": "мальтійська",
- "nl-be": "нідерландська (Бельгія)",
- "nl": "нідерландська",
- "no": "норвезька",
- "pl": "польська",
- "pt-br": "бразильська португальська",
- "pt": "португальська",
- "rm": "ретороманська",
- "ro-mo": "румунська (Молдова)",
- "ro": "румунська",
- "ru-mo": "російська (Молдова)",
- "ru": "російська",
- "sb": "лужицька",
- "sk": "словацька",
- "sl": "словенська",
- "sq": "албанська",
- "sr": "сербська",
- "sv-fi": "шведська (Фінляндія)",
- "sv": "шведська",
- "sx": "сесото",
- "sz": "північносаамська",
- "th": "тайська",
- "tn": "свана",
- "tr": "турецька",
- "ts": "тсонга",
- "uk": "українська",
- "ur": "урду",
- "ve": "венда",
- "vi": "в’єтнамська",
- "xh": "коса",
- "zh-cn": "спрощена китайська (КНР)",
- "zh-hk": "традиційна китайська (Гонконг)",
- "zh-sg": "спрощена китайська (Сингапур)",
- "zh-tw": "традиційна китайська (Тайвань)",
- "zu": "зулу",
"a room": "кімната",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Текстове повідомлення було надіслано +%(msisdn)s. Введіть, будь ласка, код підтвердження з цього повідомлення",
"Accept": "Прийняти",
@@ -165,7 +41,7 @@
"Add email address": "Додати адресу е-пошти",
"Add phone number": "Додати номер телефону",
"Admin": "Адміністратор",
- "Admin tools": "Засоби адміністрування",
+ "Admin Tools": "Засоби адміністрування",
"And %(count)s more...": "І %(count)s більше...",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Відсутні дозволи, натисніть для запиту.",
@@ -173,5 +49,27 @@
"No Webcams detected": "Веб-камеру не виявлено",
"Favourites": "Вибрані",
"favourite": "вибране",
- "Fill screen": "На весь екран"
+ "Fill screen": "На весь екран",
+ "No media permissions": "Нема дозволів на відео/аудіо",
+ "You may need to manually permit Riot to access your microphone/webcam": "Можливо, вам треба дозволити Riot використання мікрофону/камери вручну",
+ "Default Device": "Уставний пристрій",
+ "Microphone": "Мікрофон",
+ "Camera": "Камера",
+ "Advanced": "Додаткові",
+ "Algorithm": "Алгоритм",
+ "Hide removed messages": "Приховати видалені повідомлення",
+ "Always show message timestamps": "Завжди показувати часові позначки повідомлень",
+ "Authentication": "Впізнавання",
+ "Alias (optional)": "Псевдонім (необов'язково)",
+ "and": "та",
+ "%(items)s and %(remaining)s others": "%(items)s та інші %(remaining)s",
+ "%(items)s and one other": "%(items)s і ще один інший",
+ "%(items)s and %(lastItem)s": "%(items)s та %(lastItem)s",
+ "and %(count)s others...|one": "і інше...",
+ "and %(count)s others...|other": "та %(count)s інші...",
+ "%(names)s and %(lastPerson)s are typing": "%(names)s та %(lastPerson)s пишуть",
+ "%(names)s and one other are typing": "%(names)s та інші пишуть",
+ "%(names)s and %(count)s others are typing": "%(names)s та %(count)s інших пишуть",
+ "An email has been sent to": "Лист було надіслано",
+ "A new password must be entered.": "Має бути введений новий пароль."
}
diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json
index cee8f224c4..69ba19ca27 100644
--- a/src/i18n/strings/zh_Hans.json
+++ b/src/i18n/strings/zh_Hans.json
@@ -14,7 +14,6 @@
"Device ID": "设备识别码",
"Devices": "设备列表",
"Devices will not yet be able to decrypt history from before they joined the room": "新加入聊天室的设备不能解密加入之前的聊天记录",
- "Direct Chat": "私聊",
"Direct chats": "私聊",
"Disable inline URL previews by default": "默认禁用自动网址预览",
"Disinvite": "取消邀请",
@@ -26,7 +25,7 @@
"Email": "电子邮箱",
"Email address": "电子邮箱地址",
"Email, name or matrix ID": "电子邮箱,姓名或者matrix ID",
- "Emoji": "Emoji",
+ "Emoji": "表情",
"Enable encryption": "启用加密",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "不支持加密的客户端将看不到加密的消息",
"Encrypted room": "加密聊天室",
@@ -44,7 +43,6 @@
"Failed to delete device": "删除设备失败",
"Failed to forget room %(errCode)s": "无法忘记聊天室 %(errCode)s",
"Failed to join room": "无法加入聊天室",
- "Failed to join the room": "无法加入此聊天室",
"Failed to kick": "踢人失败",
"Failed to leave room": "无法离开聊天室",
"Failed to load timeline position": "无法加载时间轴位置",
@@ -74,10 +72,6 @@
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "出于安全考虑,用户注销时会清除浏览器里的端到端加密密钥。如果你想要下次登录 Riot 时能解密过去的聊天记录,请导出你的聊天室密钥。",
"Found a bug?": "发现漏洞?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s 从 %(fromPowerLevel)s 变为 %(toPowerLevel)s",
- "Guests can't set avatars. Please register.": "游客不能设置头像。请注册。.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "游客不能创建聊天室。请注册以创建聊天室和聊天.",
- "Guest users can't upload files. Please register to upload.": "游客不能上传文件。请注册以上传文件",
- "Guests can't use labs features. Please register.": "游客不能使用实验性功能。请注册。.",
"Guests cannot join this room even if explicitly invited.": "游客不能加入此聊天室,即使有人主动邀请。.",
"had": "已经",
"Hangup": "挂断",
@@ -138,7 +132,7 @@
"since the point in time of selecting this option": "从选择此选项起",
"since they joined": "从他们加入时起",
"since they were invited": "从他们被邀请时起",
- "Some of your messages have not been sent.": "部分消息发送失败",
+ "Some of your messages have not been sent.": "部分消息未发送。",
"Someone": "某个用户",
"Sorry, this homeserver is using a login which is not recognised ": "很抱歉,无法识别此主服务器使用的登录方式 ",
"Start a chat": "创建聊天",
@@ -147,7 +141,6 @@
"Success": "成功",
"The default role for new room members is": "此聊天室新成员的默认角色是",
"The main address for this room is": "此聊天室的主要地址是",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "游客不能进行此操作。请注册",
"This email address is already in use": "此邮箱地址已经被使用",
"This email address was not found": "未找到此邮箱地址",
"%(actionVerb)s this person?": "%(actionVerb)s 这个用户?",
@@ -155,29 +148,11 @@
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "文件 '%(fileName)s' 超过了此主服务器的上传大小限制",
"The file '%(fileName)s' failed to upload": "文件 '%(fileName)s' 上传失败",
"Disable URL previews for this room (affects only you)": "在这个房间禁止URL预览(只影响你)",
- "af": "南非荷兰语",
- "ca": "加泰罗尼亚语",
- "cs": "捷克语",
- "da": "丹麦语",
- "de-at": "德语(奥地利)",
- "de-ch": "德语(瑞士)",
- "de": "德语",
- "de-lu": "德语 (卢森堡)",
- "el": "希腊语",
- "en-au": "英语 (澳大利亚)",
- "en": "英语",
- "zh-cn": "中文(中国)",
- "zh-hk": "中文(香港)",
- "zh-sg": "中文(新加坡)",
- "zh-tw": "中国(台湾)",
"Add email address": "添加邮件地址",
"Add phone number": "添加电话号码",
"Advanced": "高级",
"Algorithm": "算法",
"Always show message timestamps": "总是显示消息时间戳",
- "all room members": "所有聊天室成员",
- "all room members, from the point they are invited": "所有聊天室成员,从他们被邀请开始",
- "all room members, from the point they joined": "所有聊天室成员,从他们加入开始",
"an address": "一个地址",
"and": "和",
"%(names)s and %(lastPerson)s are typing": "%(names)s 和 %(lastPerson)s 正在打字",
@@ -206,24 +181,9 @@
"Leave room": "离开聊天室",
"Login as guest": "以游客的身份登录",
"New password": "新密码",
- "ar-ae": "阿拉伯语 (阿联酋)",
- "ar-bh": "阿拉伯语 (巴林)",
- "ar-dz": "阿拉伯语 (阿尔及利亚)",
- "ar-eg": "阿拉伯语 (埃及)",
- "ar-iq": "阿拉伯语 (伊拉克)",
- "ar-jo": "阿拉伯语 (约旦)",
- "ar-kw": "阿拉伯语 (科威特)",
- "ar-lb": "阿拉伯语 (黎巴嫩)",
- "ar-ly": "阿拉伯语 (利比亚)",
- "ar-ma": "阿拉伯语 (摩洛哥)",
- "ar-ye": "阿拉伯语 (也门)",
- "en-ca": "英语 (加拿大)",
- "en-gb": "英语 (英国)",
- "en-ie": "英语 (爱尔兰)",
- "en-nz": "英语 (新西兰)",
- "Add a topic": "新话题",
+ "Add a topic": "添加一个主题",
"Admin": "管理员",
- "Admin tools": "管理工具",
+ "Admin Tools": "管理工具",
"VoIP": "IP 电话",
"Missing Media Permissions, click here to request.": "没有媒体存储权限,点此获取。",
"No Microphones detected": "未检测到麦克风",
@@ -236,15 +196,12 @@
"Hide removed messages": "隐藏被删除的消息",
"Authentication": "认证",
"Alias (optional)": "别名 (可选)",
- "%(items)s and %(remaining)s others": "%(items)s 和其它 %(remaining)s 个",
- "%(items)s and one other": "%(items)s 和其它一个",
+ "%(items)s and %(remaining)s others": "%(items)s 和其它 %(remaining)s 个人",
+ "%(items)s and one other": "%(items)s 和另一个人",
"%(items)s and %(lastItem)s": "%(items)s 和 %(lastItem)s",
- "and %(count)s others...": {
- "other": "和其它 %(count)s 个...",
- "one": "和其它一个..."
- },
+ "and %(count)s others...|other": "和其它 %(count)s 个...",
+ "and %(count)s others...|one": "和其它一个...",
"%(names)s and one other are typing": "%(names)s 和另一个人正在打字",
- "anyone": "任何人",
"Anyone": "任何人",
"Anyone who knows the room's link, apart from guests": "任何知道聊天室链接的人,游客除外",
"Anyone who knows the room's link, including guests": "任何知道聊天室链接的人,包括游客",
@@ -284,8 +241,8 @@
"Conference calling is in development and may not be reliable.": "视频会议功能还在开发状态,可能不稳定。",
"Conference calls are not supported in encrypted rooms": "加密聊天室不支持视频会议",
"Conference calls are not supported in this client": "此客户端不支持视频会议",
- "%(count)s new messages.one": "%(count)s 条新消息",
- "%(count)s new messages.other": "%(count)s 新消息",
+ "%(count)s new messages|one": "%(count)s 条新消息",
+ "%(count)s new messages|other": "%(count)s 新消息",
"Create a new chat or reuse an existing one": "创建新聊天或使用已有的聊天",
"Custom": "自定义",
"Custom level": "自定义级别",
@@ -296,7 +253,6 @@
"Device key:": "设备密钥 :",
"Disable Notifications": "关闭消息通知",
"disabled": "已禁用",
- "Disable markdown formatting": "禁用 Markdown 格式",
"Drop File Here": "把文件拖拽到这里",
"Email address (optional)": "电子邮件地址 (可选)",
"Enable Notifications": "启用消息通知",
@@ -359,7 +315,6 @@
"Create new room": "创建新聊天室",
"Custom Server Options": "自定义服务器选项",
"Dismiss": "设为已读",
- "Please Register": "请注册",
"powered by Matrix": "由 Matrix 提供",
"Remove": "移除",
"Room directory": "聊天室目录",
@@ -372,8 +327,350 @@
"Thursday": "星期四",
"Friday": "星期五",
"Saturday": "星期六",
- "Welcome page": "欢迎页面",
- "ar-om": "阿拉伯语(阿曼)",
- "ar-qa": "阿拉伯语(卡塔尔)",
- "ar-sa": "阿拉伯语(沙特阿拉伯)"
+ "Account": "账户",
+ "Add": "添加",
+ "Allow": "允许",
+ "Claimed Ed25519 fingerprint key": "声称的 Ed25519 指纹密钥",
+ "Could not connect to the integration server": "无法连接集成服务器",
+ "Curve25519 identity key": "Curve25519 认证密钥",
+ "Edit": "编辑",
+ "Hide Apps": "隐藏应用",
+ "joined and left": "加入并离开",
+ "Joins room with given alias": "以指定的别名加入聊天室",
+ "Labs": "实验室",
+ "left and rejoined": "离开并加入",
+ "left": "离开",
+ "%(targetName)s left the room.": "%(targetName)s 离开了聊天室。",
+ "Logged in as:": "登录为:",
+ "Logout": "登出",
+ "Low priority": "低优先级",
+ "Markdown is disabled": "Markdown 已禁用",
+ "Markdown is enabled": "Markdown 已启用",
+ "matrix-react-sdk version:": "matrix-react-sdk 版本:",
+ "Matrix Apps": "Matrix 应用",
+ "No more results": "没有更多结果",
+ "olm version:": "olm 版本:",
+ "Only people who have been invited": "只有被邀请的人",
+ "Otherwise, click here to send a bug report.": "否则,点击这里 发送一个错误报告。",
+ "Privacy warning": "隐私警告",
+ "Private Chat": "私聊",
+ "Privileged Users": "特权用户",
+ "Reason": "原因",
+ "Register": "注册",
+ "rejected": "拒绝",
+ "%(targetName)s rejected the invitation.": "%(targetName)s 拒绝了邀请。",
+ "Reject invitation": "拒绝邀请",
+ "Rejoin": "重新加入",
+ "Users": "用户",
+ "User": "用户",
+ "Verification": "验证",
+ "verified": "已验证",
+ "Verified": "已验证",
+ "Verified key": "已验证的密钥",
+ "Video call": "视频通话",
+ "Voice call": "音频通话",
+ "VoIP conference finished.": "VoIP 会议结束。",
+ "VoIP conference started.": "VoIP 会议开始。",
+ "VoIP is unsupported": "不支持 VoIP",
+ "Warning!": "警告!",
+ "you must be a": "你必须是",
+ "You must register to use this functionality": "你必须注册 以使用这个功能",
+ "You need to be logged in.": "你需要登录。",
+ "You need to enter a user name.": "你需要输入一个用户名。",
+ "Your password has been reset": "你的密码已被重置",
+ "Topic": "主题",
+ "Make Moderator": "使成为主持人",
+ "Room": "聊天室",
+ "Connectivity to the server has been lost.": "到服务器的连接已经丢失。",
+ "bold": "加粗",
+ "italic": "斜体",
+ "strike": "删除线",
+ "underline": "下划线",
+ "code": "代码",
+ "quote": "引用",
+ "bullet": "项目符号",
+ "numbullet": "数字项目符号",
+ "were invited": "被邀请",
+ "was invited": "被邀请",
+ "were banned %(repeats)s times": "被封禁 %(repeats)s 次",
+ "was banned %(repeats)s times": "被封禁 %(repeats)s 次",
+ "were banned": "被封禁",
+ "was banned": "被封禁",
+ "New Password": "新密码",
+ "Options": "选项",
+ "Passphrases must match": "密码必须匹配",
+ "Passphrase must not be empty": "密码不能为空",
+ "Export room keys": "导出聊天室密钥",
+ "Confirm passphrase": "确认密码",
+ "Import room keys": "导入聊天室密钥",
+ "File to import": "要导入的文件",
+ "Start new chat": "开始新的聊天",
+ "Failed to invite": "邀请失败",
+ "Failed to invite user": "邀请用户失败",
+ "Unknown error": "未知错误",
+ "Incorrect password": "密码错误",
+ "This action is irreversible.": "此操作不可逆。",
+ "To continue, please enter your password.": "请输入你的密码继续。",
+ "Device name": "设备名",
+ "Device Name": "设备名",
+ "Device key": "设备密钥",
+ "Verify device": "验证设备",
+ "I verify that the keys match": "我验证密钥匹配",
+ "Unable to restore session": "无法恢复会话",
+ "Continue anyway": "无论如何都继续",
+ "Blacklist": "列入黑名单",
+ "Unverify": "取消验证",
+ "ex. @bob:example.com": "例如 @bob:example.com",
+ "Add User": "添加用户",
+ "This Home Server would like to make sure you are not a robot": "这个Home Server想要确认你不是一个机器人",
+ "Token incorrect": "令牌错误",
+ "Default server": "默认服务器",
+ "Custom server": "自定义服务器",
+ "URL Previews": "URL 预览",
+ "Drop file here to upload": "把文件拖到这里以上传",
+ "Online": "在线",
+ "Idle": "空闲",
+ "Offline": "离线",
+ "Start chatting": "开始聊天",
+ "Start Chatting": "开始聊天",
+ "Click on the button below to start chatting!": "点击下面的按钮开始聊天!",
+ "Username available": "用户名可用",
+ "Username not available": "用户名不可用",
+ "Skip": "跳过",
+ "Start verification": "开始验证",
+ "Ignore request": "忽略请求",
+ "Loading device info...": "正在加载设备信息...",
+ "Groups": "群",
+ "Create a new group": "创建一个新群",
+ "Group Name": "群名称",
+ "Example": "例子",
+ "Create": "创建",
+ "Edit Group": "编辑群",
+ "Failed to upload image": "上传图像失败",
+ "Add a widget": "添加一个小部件",
+ "a room": "一个聊天室",
+ "Accept": "接受",
+ "Access Token:": "访问令牌:",
+ "Cannot add any more widgets": "无法添加更多小组件",
+ "Delete widget": "删除小组件",
+ "Define the power level of a user": "定义一个用户的特权级",
+ "Drop here to tag %(section)s": "拖拽到这里标记 %(section)s",
+ "Enable automatic language detection for syntax highlighting": "启用自动语言检测用于语法高亮",
+ "Failed to change power level": "修改特权级别失败",
+ "Hide avatar and display name changes": "隐藏头像和显示名称的修改",
+ "Kick": "踢出",
+ "Kicks user with given id": "踢出指定 ID 的用户",
+ "Last seen": "上次看见",
+ "Level:": "级别:",
+ "Local addresses for this room:": "这个聊天室的本地地址:",
+ "New passwords must match each other.": "新密码必须互相匹配。",
+ "Power level must be positive integer.": "特权级别必须是正整数。",
+ "Reason: %(reasonText)s": "原因: %(reasonText)s",
+ "Revoke Moderator": "撤销主持人",
+ "Revoke widget access": "撤销小部件的访问",
+ "Remote addresses for this room:": "这个聊天室的远程地址:",
+ "Remove Contact Information?": "移除联系人信息?",
+ "Remove %(threePid)s?": "移除 %(threePid)s?",
+ "Results from DuckDuckGo": "来自 DuckDuckGo 的结果",
+ "Room contains unknown devices": "聊天室有未知设备",
+ "%(roomName)s does not exist.": "%(roomName)s 不存在。",
+ "Save": "保存",
+ "Send anyway": "无论任何都发送",
+ "Sets the room topic": "设置聊天室主题",
+ "Show Text Formatting Toolbar": "显示文字格式工具栏",
+ "This room has no local addresses": "这个聊天室没有本地地址",
+ "This doesn't appear to be a valid email address": "这看起来不是一个合法的电子邮件地址",
+ "This is a preview of this room. Room interactions have been disabled": "这是这个聊天室的一个预览。聊天室交互已禁用",
+ "This phone number is already in use": "此电话号码已经被使用",
+ "This room": "这个聊天室",
+ "This room is not accessible by remote Matrix servers": "这个聊天室无法被远程 Matrix 服务器访问",
+ "This room's internal ID is": "这个聊天室的内部 ID 是",
+ "Turn Markdown off": "关闭 Markdown",
+ "Turn Markdown on": "打开 Markdown",
+ "Unable to create widget.": "无法创建小部件。",
+ "Unban": "解除封禁",
+ "Unable to capture screen": "无法录制屏幕",
+ "Unable to enable Notifications": "无法启用通知",
+ "Unable to load device list": "无法加载设备列表",
+ "Undecryptable": "无法解密的",
+ "Unencrypted room": "未加密的聊天室",
+ "unencrypted": "未加密的",
+ "Unencrypted message": "未加密的消息",
+ "unknown caller": "未知的呼叫者",
+ "unknown device": "未知设备",
+ "Unnamed Room": "未命名的聊天室",
+ "Unverified": "未验证",
+ "uploaded a file": "上传一个文件",
+ "Upload avatar": "上传头像",
+ "Upload Failed": "上传失败",
+ "Upload Files": "上传文件",
+ "Upload file": "上传文件",
+ "Usage": "用法",
+ "Who can read history?": "谁可以阅读历史消息?",
+ "You are not in this room.": "你不在这个聊天室。",
+ "You have no visible notifications": "你没有可见的通知",
+ "Missing password.": "缺少密码。",
+ "Passwords don't match.": "密码不匹配。",
+ "I already have an account": "我已经有一个帐号",
+ "Unblacklist": "移出黑名单",
+ "Not a valid Riot keyfile": "不是一个合法的 Riot 密钥文件",
+ "%(targetName)s accepted an invitation.": "%(targetName)s 接受了一个邀请。",
+ "Do you want to load widget from URL:": "你想从此 URL 加载小组件吗:",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "隐藏加入/离开消息(邀请/踢出/封禁不受影响)",
+ "Integrations Error": "集成错误",
+ "Publish this room to the public in %(domain)s's room directory?": "把这个聊天室发布到 %(domain)s 的聊天室目录吗?",
+ "Manage Integrations": "管理集成",
+ "Members only": "只有成员",
+ "No users have specific privileges in this room": "没有用户在这个聊天室有特殊权限",
+ "%(senderName)s placed a %(callType)s call.": "%(senderName)s 发起了一个 %(callType)s 通话。",
+ "Please check your email and click on the link it contains. Once this is done, click continue.": "请检查你的电子邮箱并点击里面包含的链接。完成时请点击继续。",
+ "Press to start a chat with someone": "按下 来开始和某个人聊天",
+ "%(senderName)s removed their profile picture.": "%(senderName)s 移除了他们的头像。",
+ "%(senderName)s requested a VoIP conference.": "%(senderName)s 请求一个 VoIP 会议。",
+ "Seen by %(userName)s at %(dateTime)s": "在 %(dateTime)s 被 %(userName)s 看到",
+ "Show Apps": "显示应用",
+ "Tagged as: ": "标记为:",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "验证码将发送到+%(msisdn)s,请输入接收到的验证码",
+ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s 接受了 %(displayName)s 的邀请。",
+ "Active call (%(roomName)s)": "%(roomName)s 的呼叫",
+ "And %(count)s more...": "添加%(count)s 个...",
+ "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s 将级别调整到%(powerLevelDiffText)s 。",
+ "Changes colour scheme of current room": "修改了样式",
+ "changing room on a RoomView is not supported": "暂不支持修改",
+ "demote": "降级",
+ "Deops user with given id": "Deops user",
+ "Join as voice or video .": "通过 语言 或者 视频 加入.",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s 设定历史浏览功能为 所有聊天室成员,从他们被邀请开始.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s 设定历史浏览功能为 所有聊天室成员,从他们加入开始.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s 设定历史浏览功能为 所有聊天室成员.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s 设定历史浏览功能为 任何人.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s 设定历史浏览功能为 未知的 (%(visibility)s).",
+ "AM": "上午",
+ "PM": "下午",
+ "NOTE: Apps are not end-to-end encrypted": "提示:APP不支持端对端加密",
+ "People": "联系人",
+ "Profile": "个人配置",
+ "Public Chat": "公开的",
+ "Refer a friend to Riot:": "介绍朋友加入Riot:",
+ "%(roomName)s is not accessible at this time.": "%(roomName)s 此时无法访问。",
+ "Set": "设置",
+ "Start authentication": "开始认证",
+ "tag direct chat": "标签",
+ "The maximum permitted number of widgets have already been added to this room.": "小部件的最大允许数量已经添加到这个房间了。",
+ "The phone number entered looks invalid": "输入的电话号码看起来无效",
+ "The remote side failed to pick up": "远端未能接收到",
+ "This Home Server does not support login using email address.": "HS不支持使用电子邮件地址登陆。",
+ "This invitation was sent to an email address which is not associated with this account:": "此邀请被发送到与此帐户不相关的电子邮件地址:",
+ "This room is not recognised.": "这个房间未匹配。",
+ "times": "次",
+ "To get started, please pick a username!": "请点击用户名!",
+ "Unable to add email address": "无法添加电子邮件地址",
+ "Failed to update group": "更新群组失败",
+ "Automatically replace plain text Emoji": "文字、表情自动转换",
+ "Join an existing group": "试图加入一个不存在的群组",
+ "To reset your password, enter the email address linked to your account": "要重置你的密码,请输入关联你的帐号的电子邮箱地址",
+ "Unable to verify email address.": "无法验证电子邮箱地址。",
+ "Unknown room %(roomId)s": "未知聊天室 %(roomId)s",
+ "Unknown (user, device) pair:": "未知(用户,设备)对:",
+ "Unrecognised command:": "无法识别的命令:",
+ "Unrecognised room alias:": "无法识别的聊天室别名:",
+ "Use with caution": "谨慎使用",
+ "User Interface": "用户界面",
+ "%(user)s is a": "%(user)s 是一个",
+ "User name": "用户名",
+ "(no answer)": "(没有回答)",
+ "(warning: cannot be disabled again!)": "(警告:无法再被禁用!)",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "警告:设备已经验证,但密钥不匹配!",
+ "Who can access this room?": "谁可以访问这个聊天室?",
+ "Who would you like to add to this room?": "你想把谁加入这个聊天室?",
+ "Who would you like to communicate with?": "你想和谁交流?",
+ "You are already in a call.": "你已经在一个通话之中。",
+ "You do not have permission to do that in this room.": "你没有权限在这个聊天室里面做那件事。",
+ "You are trying to access %(roomName)s.": "你正在尝试访问 %(roomName)s.",
+ "You cannot place VoIP calls in this browser.": "你不能在这个浏览器中发起 VoIP 通话。",
+ "You do not have permission to post to this room": "你没有发送到这个聊天室的权限",
+ "You have been invited to join this room by %(inviterName)s": "你已经被 %(inviterName)s 邀请加入这个聊天室",
+ "You seem to be in a call, are you sure you want to quit?": "你好像在一个通话中,你确定要退出吗?",
+ "You seem to be uploading files, are you sure you want to quit?": "你好像正在上传文件,你确定要退出吗?",
+ "You should not yet trust it to secure data": "你不应该相信它来保护你的数据",
+ "Upload an avatar:": "上传一个头像:",
+ "This doesn't look like a valid email address.": "这看起来不是一个合法的电子邮件地址。",
+ "This doesn't look like a valid phone number.": "这看起来不是一个合法的电话号码。",
+ "User names may only contain letters, numbers, dots, hyphens and underscores.": "用户名只可以包含字母、数字、点、连字号和下划线。",
+ "An unknown error occurred.": "一个未知错误出现了。",
+ "An error occurred: %(error_string)s": "一个错误出现了: %(error_string)s",
+ "Encrypt room": "加密聊天室",
+ "There are no visible files in this room": "这个聊天室里面没有可见的文件",
+ "Active call": "活跃的通话",
+ "Verify...": "验证...",
+ "Error decrypting audio": "解密音频时出错",
+ "Error decrypting image": "解密图像时出错",
+ "Error decrypting video": "解密视频时出错",
+ " (unsupported)": "(不支持)",
+ "Updates": "更新",
+ "Check for update": "检查更新",
+ "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s 移除了聊天室头像。",
+ "Something went wrong!": "出了点问题!",
+ "If you already have a Matrix account you can log in instead.": "如果你已经有一个 Matrix 帐号,你可以登录 。",
+ "Do you want to set an email address?": "你要设置一个电子邮箱地址吗?",
+ "Room creation failed": "创建聊天室失败",
+ "New address (e.g. #foo:%(localDomain)s)": "新的地址(例如 #foo:%(localDomain)s)",
+ "Upload new:": "上传新的:",
+ "User ID": "用户 ID",
+ "Username invalid: %(errMessage)s": "用户名无效: %(errMessage)s",
+ "Verification Pending": "验证等待中",
+ "(unknown failure: %(reason)s)": "(未知错误:%(reason)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!": "警告:密钥验证失败!%(userId)s 和 device %(deviceId)s 的签名密钥是 \"%(fprint)s\",和提供的咪呀 \"%(fingerprint)s\" 不匹配。这可能意味着你的通信正在被窃听!",
+ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s 收回了 %(targetName)s 的邀请。",
+ "Would you like to accept or decline this invitation?": "你想要 接受 还是 拒绝 这个邀请?",
+ "You already have existing direct chats with this user:": "你已经有和这个用户的直接聊天:",
+ "You're not in any rooms yet! Press to make a room or to browse the directory": "你现在还不再任何聊天室!按下 来创建一个聊天室或者 来浏览目录",
+ "You cannot place a call with yourself.": "你不能和你自己发起一个通话。",
+ "You have been kicked from %(roomName)s by %(userName)s.": "你已经被 %(userName)s 踢出了 %(roomName)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": "你已经登出了所有的设备并不再接收推送通知。要重新启用通知,请再在每个设备上登录",
+ "You have disabled URL previews by default.": "你已经默认 禁用 URL 预览。",
+ "You have enabled URL previews by default.": "你已经默认 启用 URL 预览。",
+ "Your home server does not support device management.": "你的 home server 不支持设备管理。",
+ "Set a display name:": "设置一个昵称:",
+ "This server does not support authentication with a phone number.": "这个服务器不支持用电话号码认证。",
+ "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "密码过短(最短为 %(MIN_PASSWORD_LENGTH)s)。",
+ "Make this room private": "使这个聊天室私密",
+ "Share message history with new users": "和新用户共享消息历史",
+ "Copied!": "已复制!",
+ "Failed to copy": "复制失败",
+ "Sent messages will be stored until your connection has returned.": "已发送的消息会被保存直到你的连接回来。",
+ "(~%(count)s results)|one": "(~%(count)s 个结果)",
+ "(~%(count)s results)|other": "(~%(count)s 个结果)",
+ "or": "或者",
+ "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s 加入了 %(repeats)s 次",
+ "%(oneUser)sjoined %(repeats)s times": "%(oneUser)s 加入了 %(repeats)s 次",
+ "%(severalUsers)sjoined": "%(severalUsers)s 加入了",
+ "%(oneUser)sjoined": "%(oneUser)s 加入了",
+ "%(severalUsers)sleft %(repeats)s times": "%(severalUsers)s 离开了 %(repeats)s 次",
+ "%(oneUser)sleft %(repeats)s times": "%(oneUser)s 离开了 %(repeats)s 次",
+ "%(severalUsers)sleft": "%(severalUsers)s 离开了",
+ "%(oneUser)sleft": "%(oneUser)s 离开了",
+ "%(oneUser)sjoined and left %(repeats)s times": "%(oneUser)s 加入并离开了 %(repeats)s 次",
+ "%(severalUsers)sjoined and left": "%(severalUsers)s 加入并离开了",
+ "%(oneUser)sjoined and left": "%(oneUser)s 加入并离开了",
+ "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)s 离开并重新加入了 %(repeats)s 次",
+ "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)s 离开并重新加入了 %(repeats)s 次",
+ "%(severalUsers)sleft and rejoined": "%(severalUsers)s 离开并重新加入了",
+ "%(oneUser)sleft and rejoined": "%(oneUser)s 离开并重新加入了",
+ "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)s 拒绝了他们的邀请 %(repeats)s 次",
+ "%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)s 拒绝了他们的邀请 %(repeats)s 次",
+ "%(severalUsers)srejected their invitations": "%(severalUsers)s 拒绝了他们的邀请",
+ "%(oneUser)srejected their invitation": "%(oneUser)s 拒绝了他们的邀请",
+ "%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)s 改了他们的名字 %(repeats)s 次",
+ "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)s 改了他们的名字 %(repeats)s 次",
+ "%(severalUsers)schanged their name": "%(severalUsers)s 改了他们的名字",
+ "%(oneUser)schanged their name": "%(oneUser)s 改了他们的名字",
+ "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)s 更换了他们的的头像 %(repeats)s 次",
+ "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)s 更换了他们的头像 %(repeats)s 次",
+ "%(severalUsers)schanged their avatar": "%(severalUsers)s 更换了他们的头像",
+ "%(oneUser)schanged their avatar": "%(oneUser)s 更换了他们的头像",
+ "Please select the destination room for this message": "请选择这条消息的目标聊天室",
+ "Start automatically after system login": "在系统登录后自动启动",
+ "Analytics": "分析",
+ "Reject all %(invitedRooms)s invites": "拒绝所有 %(invitedRooms)s 邀请"
}
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 78d7b39782..596bc55a01 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1,7 +1,6 @@
{
"An email has been sent to": "一封郵件已經被發送到",
"A new password must be entered.": "一個新的密碼必須被輸入。.",
- "anyone": "任何人",
"An error has occurred.": "一個錯誤出現了。",
"Anyone who knows the room's link, apart from guests": "任何知道房間連結的人,但訪客除外",
"Anyone who knows the room's link, including guests": "任何知道房間連結的人,包括訪客",
@@ -9,7 +8,7 @@
"Are you sure you want to reject the invitation?": "您確認要謝絕邀請嗎?",
"Are you sure you want to upload the following files?": "您確認要上傳以下文件嗎?",
"Attachment": "附件",
- "Autoplay GIFs and videos": "自動播放GIF和視頻",
+ "Autoplay GIFs and videos": "自動播放 GIF 和影片",
"%(senderName)s banned %(targetName)s.": "%(senderName)s 封禁了 %(targetName)s.",
"Ban": "封禁",
"Banned users": "被封禁的用戶",
@@ -21,73 +20,6 @@
"Can't load user settings": "無法載入使用者設定",
"Change Password": "變更密碼",
"%(targetName)s left the room.": "%(targetName)s 離開了聊天室。.",
- "af": "南非荷蘭語",
- "ar-ae": "阿拉伯語 (U.A.E.)",
- "ar-bh": "阿拉伯語 (巴林)",
- "ar-dz": "阿拉伯語 (阿爾吉利亞)",
- "ar-eg": "阿拉伯語 (埃及)",
- "ar-iq": "阿拉伯語 (伊拉克)",
- "ar-jo": "阿拉伯語 (約旦)",
- "ar-kw": "阿拉伯語 (科威特)",
- "ar-lb": "阿拉伯語 (黎巴嫩)",
- "ar-ly": "阿拉伯語 (利比亞)",
- "ar-ma": "阿拉伯語 (摩洛哥)",
- "ar-om": "阿拉伯語 (阿曼)",
- "ar-qa": "阿拉伯語 (卡達)",
- "ar-sa": "阿拉伯語 (沙烏地阿拉伯)",
- "ar-sy": "阿拉伯語 (敍利亞)",
- "ar-tn": "阿拉伯語 (突尼斯)",
- "ar-ye": "阿拉伯語 (葉門)",
- "be": "白俄羅斯語",
- "bg": "保加利亞",
- "ca": "加泰羅尼亞語",
- "cs": "捷克語",
- "da": "丹麥語",
- "de-at": "德語(奧地利)",
- "de-ch": "德語(瑞士)",
- "de": "德語",
- "de-lu": "德語(盧森堡)",
- "el": "希臘語",
- "en-au": "英語(澳大利亞)",
- "en-bz": "英語 (貝里茲)",
- "en-ca": "英語 (加拿大)",
- "en": "英語",
- "en-gb": "英語 (英國)",
- "en-ie": "英語 (愛爾蘭)",
- "en-jm": "英語 (牙買加)",
- "en-nz": "英語 (新西蘭)",
- "en-tt": "英語 (千里達)",
- "en-us": "英語 (美國)",
- "en-za": "英語 (南非)",
- "es-ar": "西班牙語 (阿根廷)",
- "es-bo": "西班牙語 (波利維亞)",
- "es-cl": "西班牙語 (智利)",
- "es-co": "西班牙語 (哥倫比亞)",
- "es-cr": "西班牙語 (哥斯大黎加)",
- "es-do": "西班牙語 (多明尼加共和國)",
- "es-ec": "西班牙語 (厄瓜多)",
- "es-gt": "西班牙語 (瓜地馬拉)",
- "es-hn": "西班牙語 (宏都拉斯)",
- "es-mx": "西班牙語 (墨西哥)",
- "es-ni": "西班牙語 (尼加拉瓜)",
- "es-pa": "西班牙語 (巴拿馬)",
- "es-pe": "西班牙語 (祕魯)",
- "es-pr": "西班牙語 (波多黎各)",
- "es-py": "西班牙語 (巴拉圭)",
- "es": "西班牙語 (西班牙)",
- "es-sv": "西班牙語 (薩爾瓦多)",
- "es-uy": "西班牙語 (烏拉圭)",
- "es-ve": "西班牙語 (委內瑞拉)",
- "fr-be": "法語 (比利時)",
- "fr-ca": "法語 (加拿大)",
- "fr-ch": "法語 (瑞士)",
- "fr": "法語 (法國)",
- "fr-lu": "法語 (慮森堡)",
- "zh-cn": "中文(中國)",
- "zh-hk": "中文(香港)",
- "zh-sg": "中文(新加坡)",
- "zh-tw": "中文(台灣)",
- "zu": "祖魯語",
"accept": "接受",
"Account": "帳號",
"Access Token:": "取用令牌:",
@@ -96,11 +28,8 @@
"Admin": "管理者",
"Advanced": "高級",
"Algorithm": "算法",
- "Always show message timestamps": "總是顯示消息時間戳",
+ "Always show message timestamps": "總是顯示訊息時間戳",
"Authentication": "授權",
- "all room members": "所有聊天室成員",
- "all room members, from the point they are invited": "所有聊天室成員,從他們被邀請開始",
- "all room members, from the point they joined": "所有聊天室成員,從他們加入開始",
"an address": "一個地址",
"and": "和",
"%(items)s and %(remaining)s others": "%(items)s 和 %(remaining)s 其它",
@@ -127,13 +56,12 @@
"Decrypt %(text)s": "解密 %(text)s",
"Decryption error": "解密出錯",
"Delete": "刪除",
- "Default": "默認",
- "Device ID": "設備識別碼",
- "Devices": "設備列表",
- "Devices will not yet be able to decrypt history from before they joined the room": "新加入聊天室的設備不能解密加入之前的聊天記錄",
- "Direct Chat": "私人聊天",
+ "Default": "預設",
+ "Device ID": "裝置識別碼",
+ "Devices": "裝置列表",
+ "Devices will not yet be able to decrypt history from before they joined the room": "新加入聊天室的裝置不能解密加入之前的聊天記錄",
"Direct chats": "私聊",
- "Disable inline URL previews by default": "默認禁用自動網址預覽",
+ "Disable inline URL previews by default": "預設停用自動網址預覽",
"Disinvite": "取消邀請",
"Display name": "顯示名稱",
"Displays action": "顯示操作",
@@ -141,12 +69,12 @@
"Download %(text)s": "下載 %(text)s",
"Drop here %(toAction)s": "拖曳到這裡 %(toAction)s",
"Ed25519 fingerprint": "Ed25519指紋",
- "Email": "電子郵箱",
- "Email address": "電子郵箱地址",
- "Email, name or matrix ID": "電子郵箱,姓名或者matrix ID",
+ "Email": "電子郵件",
+ "Email address": "電子郵件地址",
+ "Email, name or matrix ID": "電子郵件、名稱或者matrix ID",
"Emoji": "顏文字",
"Enable encryption": "啟用加密",
- "Encrypted messages will not be visible on clients that do not yet implement encryption": "不支持加密的客戶端將看不到加密的消息",
+ "Encrypted messages will not be visible on clients that do not yet implement encryption": "不支援加密的客戶端將看不到加密的訊息",
"Encrypted room": "加密聊天室",
"%(senderName)s ended the call.": "%(senderName)s 結束了通話。.",
"End-to-end encryption information": "端到端加密信息",
@@ -159,10 +87,9 @@
"Export E2E room keys": "導出聊天室的端到端加密密鑰",
"Failed to ban user": "封禁用戶失敗",
"Failed to change password. Is your password correct?": "變更密碼失敗。您的密碼正確嗎?",
- "Failed to delete device": "刪除設備失敗",
+ "Failed to delete device": "刪除裝置失敗",
"Failed to forget room %(errCode)s": "無法忘記聊天室 %(errCode)s",
"Failed to join room": "無法加入聊天室",
- "Failed to join the room": "無法加入此聊天室",
"Failed to kick": "踢人失敗",
"Failed to leave room": "無法離開聊天室",
"Failed to load timeline position": "無法加載時間軸位置",
@@ -179,7 +106,7 @@
"Failed to toggle moderator status": "無法切換管理員權限",
"Failed to unban": "解除封禁失敗",
"Failed to upload file": "上傳文件失敗",
- "Failed to verify email address: make sure you clicked the link in the email": "郵箱驗證失敗: 請確保你已點擊郵件中的鏈接",
+ "Failed to verify email address: make sure you clicked the link in the email": "電子郵件地址驗證失敗: 請確保你已點擊郵件中的連結",
"Failure to create room": "創建聊天室失敗",
"Favourite": "我的最愛",
"favourite": "收藏",
@@ -188,14 +115,10 @@
"Filter room members": "過濾聊天室成員",
"Forget room": "忘記聊天室",
"Forgot your password?": "忘記密碼?",
- "For security, this session has been signed out. Please sign in again.": "出於安全考慮,此會話已被注銷。請重新登錄。.",
- "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "出於安全考慮,用戶注銷時會清除瀏覽器里的端到端加密密鑰。如果你想要下次登錄 Riot 時能解密過去的聊天記錄,請導出你的聊天室密鑰。",
+ "For security, this session has been signed out. Please sign in again.": "因為安全因素,此工作階段已被登出。請重新登入。",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "因為安全因素,登出將會從此瀏覽器刪除任何端到端加密的金鑰。若您想要在未來的 Riot 工作階段中解密您的對話紀錄,請將您的聊天室金鑰匯出並好好存放。",
"Found a bug?": "發現漏洞?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s 從 %(fromPowerLevel)s 變為 %(toPowerLevel)s",
- "Guests can't set avatars. Please register.": "游客不能設置頭像。請注冊。.",
- "Guest users can't create new rooms. Please register to create room and start a chat.": "游客不能創建聊天室。請注冊以創建聊天室和聊天.",
- "Guest users can't upload files. Please register to upload.": "訪客不能上傳檔案。請註冊以上傳。",
- "Guests can't use labs features. Please register.": "游客不能使用實驗性功能。請注冊。.",
"Guests cannot join this room even if explicitly invited.": "游客不能加入此聊天室,即使有人主動邀請。.",
"had": "已經",
"Hangup": "掛斷",
@@ -204,49 +127,49 @@
"Historical": "曆史",
"Homeserver is": "主服務器是",
"Identity Server is": "身份認證服務器是",
- "I have verified my email address": "我已經驗證了我的郵箱地址",
+ "I have verified my email address": "我已經驗證了我的電子郵件地址",
"Import E2E room keys": "導入聊天室端對端加密密鑰",
"Incorrect verification code": "驗證碼錯誤",
"Interface Language": "界面語言",
"Invalid alias format": "別名格式錯誤",
"Invalid address format": "地址格式錯誤",
- "Invalid Email Address": "郵箱地址格式錯誤",
+ "Invalid Email Address": "無效的電子郵件地址",
"Invalid file%(extra)s": "非法文件%(extra)s",
"Invite new room members": "邀請新的聊天室成員",
"Join Room": "加入聊天室",
"joined": "加入了",
"%(targetName)s joined the room.": "%(targetName)s 加入了聊天室。.",
- "Jump to first unread message.": "跳到第一條未讀消息。",
+ "Jump to first unread message.": "跳到第一則未讀訊息。",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s 把 %(targetName)s 踢出了聊天室。.",
"Leave room": "離開聊天室",
"Login as guest": "以游客的身份登錄",
"New password": "新密碼",
"Report it": "報告",
- "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.": "重設密碼會導致所有設備上的端到端加密密鑰被重置,使得加密的聊天記錄不可讀,除非你事先導出密鑰,修改密碼后再導入。此問題將來會得到改善。.",
+ "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.": "重設密碼目前會把所有裝置上的端到端加密金鑰重設,讓已加密的聊天歷史不可讀,除非您先匯出您的聊天室金鑰並在稍後重新匯入。這會在未來改進。",
"restore": "恢復",
"Return to app": "返回 App",
"Return to login screen": "返回登錄頁面",
- "Riot does not have permission to send you notifications - please check your browser settings": "Riot 未被允許向你推送消息 - 請檢查瀏覽器設置",
- "Riot was not given permission to send notifications - please try again": "Riot 未被允許推送消息通知 - 請重試",
+ "Riot does not have permission to send you notifications - please check your browser settings": "Riot 未被允許向你推送通知 ── 請檢查您的瀏覽器設定",
+ "Riot was not given permission to send notifications - please try again": "Riot 未被允許向你推送通知 ── 請重試",
"riot-web version:": "riot-網頁版:",
"Room %(roomId)s not visible": "聊天室 %(roomId)s 已隱藏",
"Room Colour": "聊天室顏色",
"Room name (optional)": "聊天室名稱 (可選)",
"Rooms": "聊天室",
"Scroll to bottom of page": "滾動到頁面底部",
- "Scroll to unread messages": "滾動到未讀消息",
+ "Scroll to unread messages": "捲動到未讀訊息",
"Search": "搜尋",
"Search failed": "搜索失敗",
"Searches DuckDuckGo for results": "搜索 DuckDuckGo",
- "Send a message (unencrypted)": "發送消息 (非加密)",
- "Send an encrypted message": "發送加密消息",
- "Sender device information": "發送者的設備信息",
+ "Send a message (unencrypted)": "傳送訊息(未加密)",
+ "Send an encrypted message": "傳送加密訊息",
+ "Sender device information": "發送者的裝置信息",
"Send Invites": "發送邀請",
"Send Reset Email": "發送密碼重設郵件",
"sent an image": "發了一張圖片",
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s 發了一張圖片。.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s 向 %(targetDisplayName)s 發了加入聊天室的邀請。.",
- "sent a video": "發了一個視頻",
+ "sent a video": "影片已傳送",
"Server error": "伺服器錯誤",
"Server may be unavailable or overloaded": "服務器可能不可用或者超載",
"Server may be unavailable, overloaded, or search timed out :(": "服務器可能不可用、超載,或者搜索超時 :(",
@@ -261,7 +184,7 @@
"Show timestamps in 12 hour format (e.g. 2:30pm)": "用12小時制顯示時間戳 (如:下午 2:30)",
"Signed Out": "已退出登錄",
"Sign in": "登錄",
- "Sign out": "注銷",
+ "Sign out": "登出",
"since the point in time of selecting this option": "從選擇此選項起",
"since they joined": "從他們加入時起",
"since they were invited": "從他們被邀請時起",
@@ -272,13 +195,12 @@
"Start Chat": "開始聊天",
"Submit": "提交",
"Success": "成功",
- "The default role for new room members is": "此聊天室新成員的默認角色是",
+ "The default role for new room members is": "此聊天室新成員的預設角色是",
"The main address for this room is": "此聊天室的主要地址是",
- "This action cannot be performed by a guest user. Please register to be able to do this.": "訪客無法執行此動作。請註冊以執行此動作。",
- "This email address is already in use": "此郵箱地址已經被使用",
- "This email address was not found": "未找到此郵箱地址",
+ "This email address is already in use": "此電子郵件地址已經被使用",
+ "This email address was not found": "未找到此電子郵件地址",
"%(actionVerb)s this person?": "%(actionVerb)s 這個用戶?",
- "The email address linked to your account must be entered.": "必須輸入和你帳號關聯的郵箱地址。",
+ "The email address linked to your account must be entered.": "必須輸入和你帳號關聯的電子郵件地址。",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "文件 '%(fileName)s' 超過了此主伺服器的上傳大小限制",
"The file '%(fileName)s' failed to upload": "文件 '%(fileName)s' 上傳失敗",
"Turn Markdown off": "關閉Markdown 語法",
@@ -326,10 +248,9 @@
"Friday": "星期五",
"Saturday": "星期六",
"OK": "確定",
- "Please Register": "請註冊",
"Add a topic": "新增標題",
"VoIP": "VoIP",
- "Default Device": "默認裝置",
+ "Default Device": "預設裝置",
"Microphone": "麥克風",
"Camera": "攝影機",
"Anyone": "任何人",
@@ -341,7 +262,7 @@
"Reason": "原因",
"Register": "注冊",
"rejected": "拒絕",
- "Default server": "默認的伺服器",
+ "Default server": "預設伺服器",
"Custom server": "自定的伺服器",
"Home server URL": "自家伺服器網址",
"Identity server URL": "識別伺服器網址",
@@ -353,72 +274,18 @@
"Error decrypting video": "解密影片出錯",
"Add an Integration": "新增整合器",
"Ongoing conference call%(supportedText)s.": "%(supportedText)s 正在進行會議通話。",
- " (unsupported)": " (不支持)",
+ " (unsupported)": " (不支援)",
"URL Previews": "網址預覽",
"Enable URL previews for this room (affects only you)": "啟用此房間的網址預覽(僅影響您)",
"Drop file here to upload": "把文件放在這裡上傳",
- "Disable URL previews by default for participants in this room": "默認情況下,此房間的參與者禁用網址預覽",
- "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "默認情況下,這個房間的參與者的網址預覽是%(globalDisableUrlPreview)s。",
+ "Disable URL previews by default for participants in this room": "預設情況下,此房間的參與者停用網址預覽",
+ "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "預設情況下,這個房間的參與者的網址預覽是%(globalDisableUrlPreview)s。",
"Removed or unknown message type": "已刪除或未知的信息類型",
"You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "您即將被帶到第三方網站,以便您可以驗證您的帳戶以使用%(integrationsUrl)s。你想繼續嗎?",
"Close": "關閉",
"Create new room": "建立新聊天室",
"Room directory": "聊天室目錄",
"Start chat": "開始聊天",
- "Welcome page": "歡迎頁面",
- "de-li": "德語(列支敦斯登)",
- "et": "愛沙尼亞語",
- "eu": "巴斯克語(巴斯克)",
- "fa": "波斯語",
- "fi": "芬蘭語",
- "fo": "法羅語",
- "ga": "愛爾蘭語",
- "gd": "蓋爾語(蘇格蘭)",
- "he": "希伯來語",
- "hi": "印地語",
- "hr": "克羅埃西亞語",
- "hu": "匈牙利語",
- "id": "印尼語",
- "is": "冰島語",
- "it-ch": "義大利語(瑞士)",
- "it": "義大利語",
- "ja": "日語",
- "ji": "意第緒語",
- "ko": "韓語",
- "lt": "立陶宛語",
- "lv": "拉脫維亞語",
- "mk": "馬其頓語(前南斯拉夫馬其頓共和國)",
- "ms": "馬來西亞語",
- "mt": "馬爾他語",
- "nl-be": "荷蘭語(比利時)",
- "nl": "荷蘭語",
- "no": "挪威語",
- "pl": "波蘭語",
- "pt-br": "巴西葡萄牙語",
- "pt": "葡萄牙語",
- "rm": "羅曼拉丁語",
- "ro-mo": "羅馬尼亞語(摩爾多瓦共和國)",
- "ro": "羅馬尼亞語",
- "ru-mo": "俄語(摩爾多瓦共和國)",
- "ru": "俄語",
- "sb": "索布語",
- "sk": "斯洛伐克語",
- "sl": "斯洛維尼亞語",
- "sq": "阿爾巴尼亞語",
- "sr": "塞爾維亞語",
- "sv-fi": "瑞典語(芬蘭)",
- "sv": "瑞典語",
- "sx": "蘇圖語",
- "sz": "基爾丁-薩米語",
- "th": "泰語",
- "tn": "札那語",
- "tr": "土耳其語",
- "ts": "聰加語",
- "uk": "烏克蘭語",
- "ur": "烏爾都語",
- "ve": "文達語",
- "vi": "越南語",
- "xh": "科薩語",
"a room": "房間",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "文字訊息將會傳送到 +%(msisdn)s。請輸入其中包含的驗證碼",
"Accept": "接受",
@@ -426,7 +293,7 @@
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s 已接受 %(displayName)s 的邀請。",
"Active call (%(roomName)s)": "活躍的通話(%(roomName)s)",
"Add": "新增",
- "Admin tools": "管理員工具",
+ "Admin Tools": "管理員工具",
"And %(count)s more...": "還有 %(count)s 個...",
"Missing Media Permissions, click here to request.": "遺失媒體權限,點選這裡來要求。",
"No Microphones detected": "未偵測到麥克風",
@@ -448,7 +315,6 @@
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s 已經變更主題為「%(topic)s」。",
"Changes to who can read history will only apply to future messages in this room": "變更誰可以讀取歷史紀錄的設定僅套用於此房間未來的訊息",
"Changes your display nickname": "變更您的顯示暱稱",
- "changing room on a RoomView is not supported": "不支援在房間檢視時變更房間",
"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.": "目前變更密碼將會重設在所有裝置上的端對端加密金鑰,讓加密的聊天歷史無法讀取,除非您先匯出您的房間金鑰,並在稍後重新匯入它們。這會在未來改進。",
"Claimed Ed25519 fingerprint key": "已索取 Ed25519 指紋金鑰",
"Clear Cache and Reload": "清除快取並重新載入",
@@ -463,8 +329,8 @@
"Conference calls are not supported in encrypted rooms": "不支援在加密房間的會議通話",
"Conference calls are not supported in this client": "這個客戶端不支援會議通話",
"Could not connect to the integration server": "無法連線到整合的伺服器",
- "%(count)s new messages.one": "%(count)s 個訊息",
- "%(count)s new messages.other": "%(count)s 個訊息",
+ "%(count)s new messages|one": "%(count)s 個訊息",
+ "%(count)s new messages|other": "%(count)s 個訊息",
"Create a new chat or reuse an existing one": "建立新聊天或重新使用既有的",
"Curve25519 identity key": "Curve25519 辨識金鑰",
"Custom": "自訂",
@@ -475,7 +341,6 @@
"Device key:": "裝置金鑰:",
"Disable Notifications": "停用通知",
"disabled": "已停用",
- "Disable markdown formatting": "停用 markdown 格式化",
"Drop File Here": "在此放置檔案",
"Drop here to tag %(section)s": "在此放置以標記 %(section)s",
"Email address (optional)": "電子郵件地址(選擇性)",
@@ -517,12 +382,15 @@
"left and rejoined": "離開並重新加入",
"left": "離開",
"Level:": "等級:",
- "List this room in %(domain)s's room directory?": "在 %(domain)s 的房間目錄中列出此房間嗎?",
"Local addresses for this room:": "此房間的本機地址:",
"Logged in as:": "登入為:",
"Logout": "登出",
"Low priority": "低優先度",
- "%(senderName)s made future room history visible to": "%(senderName)s 讓未來的房間歷史紀錄可見於",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s 讓未來的房間歷史紀錄可見於 所有聊天室成員,從他們被邀請開始.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s 讓未來的房間歷史紀錄可見於 所有聊天室成員,從他們加入開始.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s 讓未來的房間歷史紀錄可見於 所有聊天室成員.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s 讓未來的房間歷史紀錄可見於 任何人.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s 讓未來的房間歷史紀錄可見於 未知 (%(visibility)s).",
"Manage Integrations": "管裡整合",
"Markdown is disabled": "Markdown 已停用",
"Markdown is enabled": "Markdown 已啟用",
@@ -541,7 +409,6 @@
"Never send encrypted messages to unverified devices in this room": "從不在此房間傳送加密的訊息到未驗證的裝置",
"Never send encrypted messages to unverified devices in this room from this device": "從不在此房間中從此裝置上傳送未加密的訊息到未驗證的裝置",
"New address (e.g. #foo:%(localDomain)s)": "新地址(例如:#foo:%(localDomain)s)",
- "New Composer & Autocomplete": "新 Composer 與自動完成",
"New passwords don't match": "新密碼不相符",
"New passwords must match each other.": "新密碼必須互相符合。",
"none": "無",
@@ -557,7 +424,7 @@
"No users have specific privileges in this room": "此房間中沒有使用者有指定的權限",
"olm version:": "olm 版本:",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "這個房間只要啟用加密就不能再關掉了(從現在開始)",
- "Once you've followed the link it contains, click below": "一旦您跟著它所包含的連結,點選下方",
+ "Once you've followed the link it contains, click below": "一旦您跟著它所包含的連結,點選下方",
"Only people who have been invited": "僅有被邀請的夥伴",
"Otherwise, click here to send a bug report.": "否則,請點選此處 來傳送錯誤報告。",
"Password": "密碼",
@@ -570,7 +437,6 @@
"demote": "降級",
"Please check your email and click on the link it contains. Once this is done, click continue.": "請檢查您的電子郵件並點選其中包含的連結。只要這個完成了,就點選選繼續。",
"Power level must be positive integer.": "權限等級必需為正整數。",
- "Press": "按下",
"Press to start a chat with someone": "按下 以開始與某人聊天",
"Privacy warning": "隱私警告",
"Private Chat": "私密聊天",
@@ -594,13 +460,11 @@
"%(roomName)s does not exist.": "%(roomName)s 不存在。",
"%(roomName)s is not accessible at this time.": "%(roomName)s 此時無法存取。",
"Save": "儲存",
- "Searching known users": "搜尋已知的使用者",
"Seen by %(userName)s at %(dateTime)s": "%(userName)s 在 %(dateTime)s 時看過",
"Send anyway": "無論如何都要傳送",
"Set": "設定",
"Show Text Formatting Toolbar": "顯示文字格式化工具列",
"Start authentication": "開始認證",
- "tag as %(tagName)s": "標記為 %(tagName)s",
"tag direct chat": "標記直接聊天",
"Tagged as: ": "標記為: ",
"The phone number entered looks invalid": "輸入的電話號碼看起來無效",
@@ -608,7 +472,6 @@
"The remote side failed to pick up": "遠端未能接聽",
"This Home Server does not support login using email address.": "這個家伺服器不支援使用電子郵件地址登入。",
"This invitation was sent to an email address which is not associated with this account:": "這份邀請被傳送給與此帳號無關的電子郵件地址:",
- "There was a problem logging in.": "登入時出現問題。",
"This room has no local addresses": "此房間沒有本機地址",
"This room is not recognised.": "此房間不被認可。",
"These are experimental features that may break in unexpected ways": "這些是可能會以非預期的方式故障的實驗性功能",
@@ -635,13 +498,11 @@
"To send events of type": "要傳送活動類型",
"To send messages": "要傳送訊息",
"to start a chat with someone": "要開始與某人聊天",
- "to tag as %(tagName)s": "要標記為 %(tagName)s",
"to tag direct chat": "要標記直接聊天",
"To use it, just wait for autocomplete results to load and tab through them.": "要使用它,只要等待自動完成的結果載入並在它們上面按 Tab。",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "嘗試載入此房間時間軸的特定時間點,但是問題是您沒有權限檢視相關的訊息。",
"Tried to load a specific point in this room's timeline, but was unable to find it.": "嘗試載入此房間時間軸的特定時間點,但是找不到。",
"Unable to remove contact information": "無法移除聯絡人資訊",
- "Unable to restore previous session": "無法復原先前的工作階段",
"Unable to verify email address.": "無法驗證電子郵件。",
"Unban": "解除禁止",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s 解除禁止 %(targetName)s。",
@@ -656,15 +517,14 @@
"unknown device": "未知的裝置",
"Unknown room %(roomId)s": "未知的房間 %(roomId)s",
"Unknown (user, device) pair:": "未知的(使用者,裝置)配對:",
- "unknown": "未知",
"Unmute": "解除靜音",
"Unnamed Room": "未命名的房間",
"Unrecognised command:": "無法識別的命令:",
"Unrecognised room alias:": "無法室別的房間別名:",
"Unverified": "未驗證",
- "Uploading %(filename)s and %(count)s others.zero": "正在上傳 %(filename)s",
- "Uploading %(filename)s and %(count)s others.one": "正在上傳 %(filename)s 與另外 %(count)s 個",
- "Uploading %(filename)s and %(count)s others.other": "正在上傳 %(filename)s 與另外 %(count)s 個",
+ "Uploading %(filename)s and %(count)s others|zero": "正在上傳 %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "正在上傳 %(filename)s 與另外 %(count)s 個",
+ "Uploading %(filename)s and %(count)s others|other": "正在上傳 %(filename)s 與另外 %(count)s 個",
"uploaded a file": "已上傳檔案",
"Upload avatar": "上傳大頭貼",
"Upload Failed": "上傳失敗",
@@ -714,7 +574,6 @@
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "您已在所有裝置上登出,並且不會再收到推送通知。要重新啟用通知,再次於每個裝置上登入",
"You have disabled URL previews by default.": "您已預設停用 URL 預覽。",
"You have enabled URL previews by default.": "您已預設啟用 URL 預覽。",
- "You have entered an invalid contact. Try using their Matrix ID or email address.": "您輸入了無效的聯絡人。嘗試使用他們的 Matrix ID 或電子郵件地址。",
"You have no visible notifications": "您沒有可見的通知",
"You may wish to login with a different account, or add this email to this account.": "您可能會想要以不同的帳號登入,或是把這個電子郵件加入到此帳號中。",
"you must be a": "您一定是",
@@ -750,7 +609,6 @@
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Set a display name:": "設定顯示名稱:",
- "Set a Display Name": "設定顯示名稱",
"Upload an avatar:": "上傳大頭貼:",
"This server does not support authentication with a phone number.": "這個伺服器不支援以電話號碼認證。",
"Missing password.": "密碼遺失。",
@@ -771,10 +629,9 @@
"Room": "房間",
"Connectivity to the server has been lost.": "至伺服器的連線已遺失。",
"Sent messages will be stored until your connection has returned.": "傳送的訊息會在您的連線恢復前先儲存起來。",
- "Auto-complete": "自動完成",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "現在重新傳送全部 或是取消全部 。您也可以單獨選擇訊息來重新傳送或取消。",
- "(~%(count)s results).one": "(~%(count)s 結果)",
- "(~%(count)s results).other": "(~%(count)s 結果)",
+ "(~%(count)s results)|one": "(~%(count)s 結果)",
+ "(~%(count)s results)|other": "(~%(count)s 結果)",
"or": "或",
"Active call": "活躍的通話",
"bold": "粗體",
@@ -850,7 +707,6 @@
"You must join the room to see its files": "您必須加入房間來檢視它的檔案",
"Reject all %(invitedRooms)s invites": "拒絕所有 %(invitedRooms)s 邀請",
"Start new chat": "開始新聊天",
- "Guest users can't invite users. Please register.": "訪客無法邀請使用者。請註冊。",
"Failed to invite": "邀請失敗",
"Failed to invite user": "邀請使用者失敗",
"Failed to invite the following users to the %(roomName)s room:": "邀請下列使用者到 %(roomName)s 房間失敗:",
@@ -873,7 +729,6 @@
"Unable to restore session": "無法復原工作階段",
"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.": "若您先前使用過較新版本的 Riot,您的工作階段可能與此版本不相容。關閉此視窗並回到較新的版本。",
"Continue anyway": "無論如何都繼續",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "您的顯示名稱是您在房間裡說話是,別人會看到的名字。您想要怎麼做?",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "您目前正把未驗證的裝置列入黑名單;要傳送訊息到這些裝置,您必須先驗證它們。",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "我們建議您對每一個裝置執行驗證過程以確認它們屬於其合法擁有者,但若您想要的話,您也可以重新傳送訊息而不必驗證它們。",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "「%(RoomName)s」包含了您先前沒看過的裝置。",
@@ -921,5 +776,67 @@
"Ignore request": "忽略請求",
"You added a new device '%(displayName)s', which is requesting encryption keys.": "您加入了新裝置 '%(displayName)s',其將會要求加密金鑰。",
"Your unverified device '%(displayName)s' is requesting encryption keys.": "您未驗證的裝置 '%(displayName)s' 正在請求加密金鑰。",
- "Encryption key request": "加密金鑰請求"
+ "Encryption key request": "加密金鑰請求",
+ "Add a widget": "新增小工具",
+ "Allow": "允許",
+ "and %(count)s others...|other": "與其他 %(count)s 個……",
+ "and %(count)s others...|one": "與其他 1 個……",
+ "Cannot add any more widgets": "無法新增更多的小工具",
+ "Changes colour scheme of current room": "變更目前聊天室的配色方案",
+ "Delete widget": "刪除小工具",
+ "Define the power level of a user": "定義使用者的權限等級",
+ "Do you want to load widget from URL:": "您想要載入小工具的 URL:",
+ "Edit": "編輯",
+ "Enable automatic language detection for syntax highlighting": "啟用語法突顯的自動語言偵測",
+ "Hide Apps": "隱藏應用程式",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "隱藏加入/離開訊息(邀請/踢出/封禁不受影響)",
+ "Hide avatar and display name changes": "隱藏大頭貼與顯示名稱變更",
+ "Integrations Error": "整合錯誤",
+ "Publish this room to the public in %(domain)s's room directory?": "將這個聊天室公開到 %(domain)s 的聊天室目錄中?",
+ "Matrix Apps": "Matrix 應用程式",
+ "AM": "上午",
+ "PM": "下午",
+ "NOTE: Apps are not end-to-end encrypted": "注意:應用程式並未端到端加密",
+ "Revoke widget access": "撤銷小工具存取",
+ "Sets the room topic": "設定聊天室主題",
+ "Show Apps": "顯示應用程式",
+ "The maximum permitted number of widgets have already been added to this room.": "這個聊天室已經有可加入的最大量的小工具了。",
+ "To get started, please pick a username!": "要開始,請先取一個使用者名稱!",
+ "Unable to create widget.": "無法建立小工具。",
+ "Unbans user with given id": "取消封禁指定 ID 的使用者",
+ "You are not in this room.": "您不在這個聊天室內。",
+ "You do not have permission to do that in this room.": "您沒有在這個聊天室做這件事的權限。",
+ "Verifies a user, device, and pubkey tuple": "驗證使用者、裝置與公開金鑰變數組",
+ "Autocomplete Delay (ms):": "自動完成延遲(毫秒):",
+ "This Home server does not support groups": "家伺服器不支援群組",
+ "Loading device info...": "正在載入裝置資訊……",
+ "Groups": "群組",
+ "Create a new group": "建立新群組",
+ "Create Group": "建立群組",
+ "Group Name": "群組名稱",
+ "Example": "範例",
+ "Create": "建立",
+ "Group ID": "群組 ID",
+ "+example:%(domain)s": "+範例:%(domain)s",
+ "Group IDs must be of the form +localpart:%(domain)s": "群組 ID 必須為這種格式 +localpart:%(domain)s",
+ "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "目前僅能在您自己的家伺服器上建立群組:使用以 %(domain)s 結尾的群組 ID",
+ "Room creation failed": "聊天室建立失敗",
+ "You are a member of these groups:": "您是這些群組的成員:",
+ "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "建立一個群組來代表您的社群!定義一組聊天室與您自己的自訂首頁來標記您在 Matrix 世界中的空間。",
+ "Join an existing group": "加入既有的群組",
+ "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org .": "要加入既有的群組,您將會需要知道其群組識別符;其看起來會像是 +example:matrix.org 。",
+ "Featured Rooms:": "特色聊天室:",
+ "Error whilst fetching joined groups": "在擷取已加入的群組時發生錯誤",
+ "Featured Users:": "特色使用者:",
+ "Edit Group": "編輯群組",
+ "Automatically replace plain text Emoji": "自動取代純文字為顏文字",
+ "Failed to upload image": "上傳圖片失敗",
+ "Failed to update group": "更新群組失敗",
+ "Hide avatars in user and room mentions": "在使用者與聊天室提及中隱藏大頭貼",
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s 由 %(senderName)s 所新增",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s 由 %(senderName)s 所移除",
+ "Robot check is currently unavailable on desktop - please use a web browser ": "機器人檢查目前在桌面端不可用 ── 請使用網路瀏覽器 ",
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s 小工具已被 %(senderName)s 修改",
+ "%(weekDayName)s, %(monthName)s %(day)s": "%(monthName)s%(day)s %(weekDayName)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(fullYear)s %(monthName)s %(day)s %(weekDayName)s"
}
diff --git a/src/languageHandler.js b/src/languageHandler.js
index e956d4f8bd..12242a2e15 100644
--- a/src/languageHandler.js
+++ b/src/languageHandler.js
@@ -29,6 +29,12 @@ counterpart.setSeparator('|');
// Fall back to English
counterpart.setFallbackLocale('en');
+// Function which only purpose is to mark that a string is translatable
+// Does not actually do anything. It's helpful for automatic extraction of translatable strings
+export function _td(s) {
+ return s;
+}
+
// The translation function. This is just a simple wrapper to counterpart,
// but exists mostly because we must use the same counterpart instance
// between modules (ie. here (react-sdk) and the app (riot-web), and if we
@@ -191,7 +197,7 @@ export function getAllLanguagesFromJson() {
export function getLanguagesFromBrowser() {
if (navigator.languages && navigator.languages.length) return navigator.languages;
if (navigator.language) return [navigator.language];
- return [navigator.userLanguage];
+ return [navigator.userLanguage || "en"];
}
/**
@@ -231,35 +237,31 @@ export function getCurrentLanguage() {
}
function getLangsJson() {
- const deferred = Promise.defer();
-
- request(
- { method: "GET", url: i18nFolder + 'languages.json' },
- (err, response, body) => {
- if (err || response.status < 200 || response.status >= 300) {
- deferred.reject({err: err, response: response});
- return;
+ return new Promise((resolve, reject) => {
+ request(
+ { method: "GET", url: i18nFolder + 'languages.json' },
+ (err, response, body) => {
+ if (err || response.status < 200 || response.status >= 300) {
+ reject({err: err, response: response});
+ return;
+ }
+ resolve(JSON.parse(body));
}
- deferred.resolve(JSON.parse(body));
- }
- );
- return deferred.promise;
+ );
+ });
}
function getLanguage(langPath) {
- const deferred = Promise.defer();
-
- let response_return = {};
- request(
- { method: "GET", url: langPath },
- (err, response, body) => {
- if (err || response.status < 200 || response.status >= 300) {
- deferred.reject({err: err, response: response});
- return;
+ return new Promise((resolve, reject) => {
+ request(
+ { method: "GET", url: langPath },
+ (err, response, body) => {
+ if (err || response.status < 200 || response.status >= 300) {
+ reject({err: err, response: response});
+ return;
+ }
+ resolve(JSON.parse(body));
}
-
- deferred.resolve(JSON.parse(body));
- }
- );
- return deferred.promise;
+ );
+ });
}
diff --git a/src/stores/GroupStore.js b/src/stores/GroupStore.js
new file mode 100644
index 0000000000..941f4c8ec2
--- /dev/null
+++ b/src/stores/GroupStore.js
@@ -0,0 +1,83 @@
+/*
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import EventEmitter from 'events';
+
+/**
+ * Stores the group summary for a room and provides an API to change it and
+ * other useful group APIs that may have an effect on the group summary.
+ */
+export default class GroupStore extends EventEmitter {
+ constructor(matrixClient, groupId) {
+ super();
+ this.groupId = groupId;
+ this._matrixClient = matrixClient;
+ this._summary = {};
+ this._fetchSummary();
+ }
+
+ _fetchSummary() {
+ this._matrixClient.getGroupSummary(this.groupId).then((resp) => {
+ this._summary = resp;
+ this._notifyListeners();
+ }).catch((err) => {
+ this.emit('error', err);
+ });
+ }
+
+ _notifyListeners() {
+ this.emit('update');
+ }
+
+ getSummary() {
+ return this._summary;
+ }
+
+ addRoomToGroup(roomId) {
+ return this._matrixClient
+ .addRoomToGroup(this.groupId, roomId);
+ }
+
+ addRoomToGroupSummary(roomId, categoryId) {
+ return this._matrixClient
+ .addRoomToGroupSummary(this.groupId, roomId, categoryId)
+ .then(this._fetchSummary.bind(this));
+ }
+
+ addUserToGroupSummary(userId, roleId) {
+ return this._matrixClient
+ .addUserToGroupSummary(this.groupId, userId, roleId)
+ .then(this._fetchSummary.bind(this));
+ }
+
+ removeRoomFromGroupSummary(roomId) {
+ return this._matrixClient
+ .removeRoomFromGroupSummary(this.groupId, roomId)
+ .then(this._fetchSummary.bind(this));
+ }
+
+ removeUserFromGroupSummary(userId) {
+ return this._matrixClient
+ .removeUserFromGroupSummary(this.groupId, userId)
+ .then(this._fetchSummary.bind(this));
+ }
+
+ setGroupPublicity(isPublished) {
+ return this._matrixClient
+ .setGroupPublicity(this.groupId, isPublished)
+ .then(this._fetchSummary.bind(this));
+ }
+}
diff --git a/src/stores/GroupStoreCache.js b/src/stores/GroupStoreCache.js
new file mode 100644
index 0000000000..bf340521b5
--- /dev/null
+++ b/src/stores/GroupStoreCache.js
@@ -0,0 +1,39 @@
+/*
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import GroupStore from './GroupStore';
+
+class GroupStoreCache {
+ constructor() {
+ this.groupStore = null;
+ }
+
+ getGroupStore(matrixClient, groupId) {
+ if (!this.groupStore || this.groupStore.groupId !== groupId) {
+ // This effectively throws away the reference to any previous GroupStore,
+ // allowing it to be GCd once the components referencing it have stopped
+ // referencing it.
+ this.groupStore = new GroupStore(matrixClient, groupId);
+ }
+ return this.groupStore;
+ }
+}
+
+let singletonGroupStoreCache = null;
+if (!singletonGroupStoreCache) {
+ singletonGroupStoreCache = new GroupStoreCache();
+}
+module.exports = singletonGroupStoreCache;
diff --git a/src/stores/RoomScrollStateStore.js b/src/stores/RoomScrollStateStore.js
new file mode 100644
index 0000000000..07848283d1
--- /dev/null
+++ b/src/stores/RoomScrollStateStore.js
@@ -0,0 +1,50 @@
+/*
+Copyright 2017 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.
+*/
+
+/**
+ * Stores where the user has scrolled to in each room
+ */
+class RoomScrollStateStore {
+ constructor() {
+ // A map from room id to scroll state.
+ //
+ // If there is no special scroll state (ie, we are following the live
+ // timeline), the scroll state is null. Otherwise, it is an object with
+ // the following properties:
+ //
+ // focussedEvent: the ID of the 'focussed' event. Typically this is
+ // the last event fully visible in the viewport, though if we
+ // have done an explicit scroll to an explicit event, it will be
+ // that event.
+ //
+ // pixelOffset: the number of pixels the window is scrolled down
+ // from the focussedEvent.
+ this._scrollStateMap = {};
+ }
+
+ getScrollState(roomId) {
+ return this._scrollStateMap[roomId];
+ }
+
+ setScrollState(roomId, scrollState) {
+ this._scrollStateMap[roomId] = scrollState;
+ }
+}
+
+if (global.mx_RoomScrollStateStore === undefined) {
+ global.mx_RoomScrollStateStore = new RoomScrollStateStore();
+}
+export default global.mx_RoomScrollStateStore;
diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.js
index bd9d3ea0fa..795345242e 100644
--- a/src/stores/RoomViewStore.js
+++ b/src/stores/RoomViewStore.js
@@ -21,7 +21,7 @@ import Modal from '../Modal';
import { _t } from '../languageHandler';
const INITIAL_STATE = {
- // Whether we're joining the currently viewed room
+ // Whether we're joining the currently viewed room (see isJoining())
joining: false,
// Any error that has occurred during joining
joinError: null,
@@ -30,8 +30,6 @@ const INITIAL_STATE = {
// The event to scroll to when the room is first viewed
initialEventId: null,
- // The offset to display the initial event at (see scrollStateMap)
- initialEventPixelOffset: null,
// Whether to highlight the initial event
isInitialEventHighlighted: false,
@@ -41,20 +39,6 @@ const INITIAL_STATE = {
roomLoading: false,
// Any error that has occurred during loading
roomLoadError: null,
- // A map from room id to scroll state.
- //
- // If there is no special scroll state (ie, we are following the live
- // timeline), the scroll state is null. Otherwise, it is an object with
- // the following properties:
- //
- // focussedEvent: the ID of the 'focussed' event. Typically this is
- // the last event fully visible in the viewport, though if we
- // have done an explicit scroll to an explicit event, it will be
- // that event.
- //
- // pixelOffset: the number of pixels the window is scrolled down
- // from the focussedEvent.
- scrollStateMap: {},
forwardingEvent: null,
};
@@ -106,18 +90,12 @@ class RoomViewStore extends Store {
case 'join_room':
this._joinRoom(payload);
break;
- case 'joined_room':
- this._joinedRoom(payload);
- break;
case 'join_room_error':
this._joinRoomError(payload);
break;
case 'on_logged_out':
this.reset();
break;
- case 'update_scroll_state':
- this._updateScrollState(payload);
- break;
case 'forward_event':
this._setState({
forwardingEvent: payload.event,
@@ -132,29 +110,16 @@ class RoomViewStore extends Store {
roomId: payload.room_id,
roomAlias: payload.room_alias,
initialEventId: payload.event_id,
- initialEventPixelOffset: undefined,
isInitialEventHighlighted: payload.highlighted,
forwardingEvent: null,
roomLoading: false,
roomLoadError: null,
// should peek by default
shouldPeek: payload.should_peek === undefined ? true : payload.should_peek,
+ // have we sent a join request for this room and are waiting for a response?
+ joining: payload.joining || false,
};
- if (payload.joined) {
- newState.joining = false;
- }
-
- // If an event ID wasn't specified, default to the one saved for this room
- // via update_scroll_state. Assume initialEventPixelOffset should be set.
- if (!newState.initialEventId) {
- const roomScrollState = this._state.scrollStateMap[payload.room_id];
- if (roomScrollState) {
- newState.initialEventId = roomScrollState.focussedEvent;
- newState.initialEventPixelOffset = roomScrollState.pixelOffset;
- }
- }
-
if (this._state.forwardingEvent) {
dis.dispatch({
action: 'send_event',
@@ -164,6 +129,10 @@ class RoomViewStore extends Store {
}
this._setState(newState);
+
+ if (payload.auto_join) {
+ this._joinRoom(payload);
+ }
} else if (payload.room_alias) {
// Resolve the alias and then do a second dispatch with the room ID acquired
this._setState({
@@ -183,6 +152,8 @@ class RoomViewStore extends Store {
event_id: payload.event_id,
highlighted: payload.highlighted,
room_alias: payload.room_alias,
+ auto_join: payload.auto_join,
+ oob_data: payload.oob_data,
});
}, (err) => {
dis.dispatch({
@@ -211,9 +182,11 @@ class RoomViewStore extends Store {
MatrixClientPeg.get().joinRoom(
this._state.roomAlias || this._state.roomId, payload.opts,
).done(() => {
- dis.dispatch({
- action: 'joined_room',
- });
+ // We don't actually need to do anything here: we do *not*
+ // clear the 'joining' flag because the Room object and/or
+ // our 'joined' member event may not have come down the sync
+ // stream yet, and that's the point at which we'd consider
+ // the user joined to the room.
}, (err) => {
dis.dispatch({
action: 'join_room_error',
@@ -228,12 +201,6 @@ class RoomViewStore extends Store {
});
}
- _joinedRoom(payload) {
- this._setState({
- joining: false,
- });
- }
-
_joinRoomError(payload) {
this._setState({
joining: false,
@@ -241,15 +208,6 @@ class RoomViewStore extends Store {
});
}
- _updateScrollState(payload) {
- // Clobber existing scroll state for the given room ID
- const newScrollStateMap = this._state.scrollStateMap;
- newScrollStateMap[payload.room_id] = payload.scroll_state;
- this._setState({
- scrollStateMap: newScrollStateMap,
- });
- }
-
reset() {
this._state = Object.assign({}, INITIAL_STATE);
}
@@ -264,11 +222,6 @@ class RoomViewStore extends Store {
return this._state.initialEventId;
}
- // The offset to display the initial event at (see scrollStateMap)
- getInitialEventPixelOffset() {
- return this._state.initialEventPixelOffset;
- }
-
// Whether to highlight the initial event
isInitialEventHighlighted() {
return this._state.isInitialEventHighlighted;
@@ -289,7 +242,29 @@ class RoomViewStore extends Store {
return this._state.roomLoadError;
}
- // Whether we're joining the currently viewed room
+ // True if we're expecting the user to be joined to the room currently being
+ // viewed. Note that this is left true after the join request has finished,
+ // since we should still consider a join to be in progress until the room
+ // & member events come down the sync.
+ //
+ // This flag remains true after the room has been sucessfully joined,
+ // (this store doesn't listen for the appropriate member events)
+ // so you should always observe the joined state from the member event
+ // if a room object is present.
+ // ie. The correct logic is:
+ // if (room) {
+ // if (myMember.membership == 'joined') {
+ // // user is joined to the room
+ // } else {
+ // // Not joined
+ // }
+ // } else {
+ // if (RoomViewStore.isJoining()) {
+ // // show spinner
+ // } else {
+ // // show join prompt
+ // }
+ // }
isJoining() {
return this._state.joining;
}
diff --git a/src/utils/MultiInviter.js b/src/utils/MultiInviter.js
index 1d5eac073a..e090f3d9e2 100644
--- a/src/utils/MultiInviter.js
+++ b/src/utils/MultiInviter.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2017 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.
@@ -14,16 +15,26 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
+import MatrixClientPeg from '../MatrixClientPeg';
import {getAddressType} from '../UserAddress';
-import {inviteToRoom} from '../Invite';
+import {inviteToRoom} from '../RoomInvite';
import Promise from 'bluebird';
/**
- * Invites multiple addresses to a room, handling rate limiting from the server
+ * Invites multiple addresses to a room or group, handling rate limiting from the server
*/
export default class MultiInviter {
- constructor(roomId) {
- this.roomId = roomId;
+ /**
+ * @param {string} targetId The ID of the room or group to invite to
+ */
+ constructor(targetId) {
+ if (targetId[0] === '+') {
+ this.roomId = null;
+ this.groupId = targetId;
+ } else {
+ this.roomId = targetId;
+ this.groupId = null;
+ }
this.canceled = false;
this.addrs = [];
@@ -104,7 +115,14 @@ export default class MultiInviter {
return;
}
- inviteToRoom(this.roomId, addr).then(() => {
+ let doInvite;
+ if (this.groupId !== null) {
+ doInvite = MatrixClientPeg.get().inviteUserToGroup(this.groupId, addr);
+ } else {
+ doInvite = inviteToRoom(this.roomId, addr);
+ }
+
+ doInvite.then(() => {
if (this._canceled) { return; }
this.completionStates[addr] = 'invited';
diff --git a/test/components/structures/MessagePanel-test.js b/test/components/structures/MessagePanel-test.js
index ad7d9c15c7..8254dd4126 100644
--- a/test/components/structures/MessagePanel-test.js
+++ b/test/components/structures/MessagePanel-test.js
@@ -24,6 +24,7 @@ var sdk = require('matrix-react-sdk');
var MessagePanel = sdk.getComponent('structures.MessagePanel');
import UserSettingsStore from '../../../src/UserSettingsStore';
+import MatrixClientPeg from '../../../src/MatrixClientPeg';
var test_utils = require('test-utils');
var mockclock = require('mock-clock');
@@ -51,16 +52,19 @@ describe('MessagePanel', function () {
var clock = mockclock.clock();
var realSetTimeout = window.setTimeout;
var events = mkEvents();
+ var sandbox = null;
beforeEach(function() {
test_utils.beforeEach(this);
- client = test_utils.createTestClient();
+ sandbox = test_utils.stubClient();
+ client = MatrixClientPeg.get();
client.credentials = {userId: '@me:here'};
UserSettingsStore.getSyncedSettings = sinon.stub().returns({});
});
afterEach(function() {
clock.uninstall();
+ sandbox.restore();
});
function mkEvents() {