Squash merge https://github.com/vector-im/riot-web/pull/3636
This commit is contained in:
parent
7d59742a22
commit
6b6fa59f3e
36 changed files with 7547 additions and 186 deletions
|
@ -18,7 +18,8 @@ limitations under the License.
|
|||
|
||||
var React = require('react');
|
||||
var ReactDOM = require('react-dom');
|
||||
var sdk = require('matrix-react-sdk')
|
||||
var sdk = require('matrix-react-sdk');
|
||||
import _t from 'counterpart-riot';
|
||||
var dis = require('matrix-react-sdk/lib/dispatcher');
|
||||
var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton');
|
||||
|
||||
|
@ -120,7 +121,7 @@ module.exports = React.createClass({
|
|||
homeButton = (
|
||||
<AccessibleButton className="mx_BottomLeftMenu_homePage" onClick={ this.onHomeClick } onMouseEnter={ this.onHomeMouseEnter } onMouseLeave={ this.onHomeMouseLeave } >
|
||||
<TintableSvg src="img/icons-home.svg" width="25" height="25" />
|
||||
{ this.getLabel("Welcome page", this.state.homeHover) }
|
||||
{ this.getLabel(_t("Welcome page"), this.state.homeHover) }
|
||||
</AccessibleButton>
|
||||
);
|
||||
}
|
||||
|
@ -131,19 +132,19 @@ module.exports = React.createClass({
|
|||
{ homeButton }
|
||||
<AccessibleButton className="mx_BottomLeftMenu_people" onClick={ this.onPeopleClick } onMouseEnter={ this.onPeopleMouseEnter } onMouseLeave={ this.onPeopleMouseLeave } >
|
||||
<TintableSvg src="img/icons-people.svg" width="25" height="25" />
|
||||
{ this.getLabel("Start chat", this.state.peopleHover) }
|
||||
{ this.getLabel(_t("Start chat"), this.state.peopleHover) }
|
||||
</AccessibleButton>
|
||||
<AccessibleButton className="mx_BottomLeftMenu_directory" onClick={ this.onDirectoryClick } onMouseEnter={ this.onDirectoryMouseEnter } onMouseLeave={ this.onDirectoryMouseLeave } >
|
||||
<TintableSvg src="img/icons-directory.svg" width="25" height="25"/>
|
||||
{ this.getLabel("Room directory", this.state.directoryHover) }
|
||||
{ this.getLabel(_t("Room directory"), this.state.directoryHover) }
|
||||
</AccessibleButton>
|
||||
<AccessibleButton className="mx_BottomLeftMenu_createRoom" onClick={ this.onRoomsClick } onMouseEnter={ this.onRoomsMouseEnter } onMouseLeave={ this.onRoomsMouseLeave } >
|
||||
<TintableSvg src="img/icons-create-room.svg" width="25" height="25" />
|
||||
{ this.getLabel("Create new room", this.state.roomsHover) }
|
||||
{ this.getLabel(_t("Create new room"), this.state.roomsHover) }
|
||||
</AccessibleButton>
|
||||
<AccessibleButton className="mx_BottomLeftMenu_settings" onClick={ this.onSettingsClick } onMouseEnter={ this.onSettingsMouseEnter } onMouseLeave={ this.onSettingsMouseLeave } >
|
||||
<TintableSvg src="img/icons-settings.svg" width="25" height="25" />
|
||||
{ this.getLabel("Settings", this.state.settingsHover) }
|
||||
{ this.getLabel(_t("Settings"), this.state.settingsHover) }
|
||||
</AccessibleButton>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -16,14 +16,15 @@ limitations under the License.
|
|||
|
||||
'use strict';
|
||||
|
||||
var React = require('react');
|
||||
var sdk = require('matrix-react-sdk');
|
||||
var Matrix = require("matrix-js-sdk");
|
||||
var dis = require('matrix-react-sdk/lib/dispatcher');
|
||||
var MatrixClientPeg = require("matrix-react-sdk/lib/MatrixClientPeg");
|
||||
var rate_limited_func = require('matrix-react-sdk/lib/ratelimitedfunc');
|
||||
var Modal = require('matrix-react-sdk/lib/Modal');
|
||||
var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton');
|
||||
import React from 'react';
|
||||
import _t from 'counterpart-riot';
|
||||
import sdk from 'matrix-react-sdk';
|
||||
import Matrix from "matrix-js-sdk";
|
||||
import dis from 'matrix-react-sdk/lib/dispatcher';
|
||||
import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';
|
||||
import rate_limited_func from 'matrix-react-sdk/lib/ratelimitedfunc';
|
||||
import Modal from 'matrix-react-sdk/lib/Modal';
|
||||
import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton';
|
||||
|
||||
module.exports = React.createClass({
|
||||
displayName: 'RightPanel',
|
||||
|
@ -34,7 +35,7 @@ module.exports = React.createClass({
|
|||
collapsed: React.PropTypes.bool, // currently unused property to request for a minimized view of the panel
|
||||
},
|
||||
|
||||
Phase : {
|
||||
Phase: {
|
||||
MemberList: 'MemberList',
|
||||
FilePanel: 'FilePanel',
|
||||
NotificationPanel: 'NotificationPanel',
|
||||
|
@ -91,8 +92,8 @@ module.exports = React.createClass({
|
|||
if (MatrixClientPeg.get().isGuest()) {
|
||||
var NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog");
|
||||
Modal.createDialog(NeedToRegisterDialog, {
|
||||
title: "Please Register",
|
||||
description: "Guest users can't invite users. Please register to invite."
|
||||
title: _t('Please Register'),
|
||||
description: _t('Guest users can\'t invite users. Please register to invite') + '.'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@ -188,7 +189,7 @@ module.exports = React.createClass({
|
|||
<div className="mx_RightPanel_icon" >
|
||||
<TintableSvg src="img/icon-invite-people.svg" width="35" height="35" />
|
||||
</div>
|
||||
<div className="mx_RightPanel_message">Invite to this room</div>
|
||||
<div className="mx_RightPanel_message">{ _t('Invite to this room') }</div>
|
||||
</AccessibleButton>;
|
||||
}
|
||||
|
||||
|
@ -197,30 +198,30 @@ module.exports = React.createClass({
|
|||
if (this.props.roomId) {
|
||||
buttonGroup =
|
||||
<div className="mx_RightPanel_headerButtonGroup">
|
||||
<AccessibleButton className="mx_RightPanel_headerButton"
|
||||
title="Members" onClick={ this.onMemberListButtonClick }>
|
||||
<div className="mx_RightPanel_headerButton_badge">{ membersBadge ? membersBadge : <span> </span>}</div>
|
||||
<TintableSvg src="img/icons-people.svg" width="25" height="25"/>
|
||||
{ membersHighlight }
|
||||
</AccessibleButton>
|
||||
<AccessibleButton
|
||||
className="mx_RightPanel_headerButton mx_RightPanel_filebutton"
|
||||
title="Files" onClick={ this.onFileListButtonClick }>
|
||||
<div className="mx_RightPanel_headerButton_badge"> </div>
|
||||
<TintableSvg src="img/icons-files.svg" width="25" height="25"/>
|
||||
{ filesHighlight }
|
||||
</AccessibleButton>
|
||||
<AccessibleButton
|
||||
className="mx_RightPanel_headerButton mx_RightPanel_notificationbutton"
|
||||
title="Notifications" onClick={ this.onNotificationListButtonClick }>
|
||||
<div className="mx_RightPanel_headerButton_badge"> </div>
|
||||
<TintableSvg src="img/icons-notifications.svg" width="25" height="25"/>
|
||||
{ notificationsHighlight }
|
||||
</AccessibleButton>
|
||||
<div className="mx_RightPanel_headerButton mx_RightPanel_collapsebutton" title="Hide panel" onClick={ this.onCollapseClick }>
|
||||
<TintableSvg src="img/minimise.svg" width="10" height="16"/>
|
||||
</div>
|
||||
</div>;
|
||||
<AccessibleButton className="mx_RightPanel_headerButton"
|
||||
title={ _t('Members') } onClick={ this.onMemberListButtonClick }>
|
||||
<div className="mx_RightPanel_headerButton_badge">{ membersBadge ? membersBadge : <span> </span>}</div>
|
||||
<TintableSvg src="img/icons-people.svg" width="25" height="25"/>
|
||||
{ membersHighlight }
|
||||
</AccessibleButton>
|
||||
<AccessibleButton
|
||||
className="mx_RightPanel_headerButton mx_RightPanel_filebutton"
|
||||
title={ _t('Files') } onClick={ this.onFileListButtonClick }>
|
||||
<div className="mx_RightPanel_headerButton_badge"> </div>
|
||||
<TintableSvg src="img/icons-files.svg" width="25" height="25"/>
|
||||
{ filesHighlight }
|
||||
</AccessibleButton>
|
||||
<AccessibleButton
|
||||
className="mx_RightPanel_headerButton mx_RightPanel_notificationbutton"
|
||||
title={ _t('Notifications') } onClick={ this.onNotificationListButtonClick }>
|
||||
<div className="mx_RightPanel_headerButton_badge"> </div>
|
||||
<TintableSvg src="img/icons-notifications.svg" width="25" height="25"/>
|
||||
{ notificationsHighlight }
|
||||
</AccessibleButton>
|
||||
<div className="mx_RightPanel_headerButton mx_RightPanel_collapsebutton" title="Hide panel" onClick={ this.onCollapseClick }>
|
||||
<TintableSvg src="img/minimise.svg" width="10" height="16"/>
|
||||
</div>
|
||||
</div>;
|
||||
}
|
||||
|
||||
if (!this.props.collapsed) {
|
||||
|
|
|
@ -30,6 +30,8 @@ var linkifyMatrix = require('matrix-react-sdk/lib/linkify-matrix');
|
|||
var sanitizeHtml = require('sanitize-html');
|
||||
var q = require('q');
|
||||
|
||||
import _t from 'counterpart-riot';
|
||||
|
||||
import {instanceForInstanceId, protocolNameForInstanceId} from '../../utils/DirectoryUtils';
|
||||
|
||||
linkifyMatrix(linkify);
|
||||
|
@ -80,8 +82,8 @@ module.exports = React.createClass({
|
|||
}
|
||||
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Failed to get protocol list from Home Server",
|
||||
description: "The Home Server may be too old to support third party networks",
|
||||
title: _t('Failed to get protocol list from Home Server'),
|
||||
description: _t('The Home Server may be too old to support third party networks'),
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -176,8 +178,8 @@ module.exports = React.createClass({
|
|||
console.error("Failed to get publicRooms: %s", JSON.stringify(err));
|
||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Failed to get public room list",
|
||||
description: ((err && err.message) ? err.message : "The server may be unavailable or overloaded"),
|
||||
title: _t('Failed to get public room list'),
|
||||
description: ((err && err.message) ? err.message : _t('The server may be unavailable or overloaded'))
|
||||
});
|
||||
});
|
||||
},
|
||||
|
@ -191,31 +193,31 @@ module.exports = React.createClass({
|
|||
*/
|
||||
removeFromDirectory: function(room) {
|
||||
var alias = get_display_alias_for_room(room);
|
||||
var name = room.name || alias || "Unnamed room";
|
||||
var name = room.name || alias || _t('Unnamed room');
|
||||
|
||||
var QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
|
||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
|
||||
var desc;
|
||||
if (alias) {
|
||||
desc = `Delete the room alias '${alias}' and remove '${name}' from the directory?`;
|
||||
desc = _t('Delete the room alias %(alias)s and remove %(name)s from the directory?', {alias: alias, name: name});
|
||||
} else {
|
||||
desc = `Remove '${name}' from the directory?`;
|
||||
desc = _t('Remove %(name)s from the directory?', {name: name});
|
||||
}
|
||||
|
||||
Modal.createDialog(QuestionDialog, {
|
||||
title: "Remove from Directory",
|
||||
title: _t('Remove from Directory'),
|
||||
description: desc,
|
||||
onFinished: (should_delete) => {
|
||||
if (!should_delete) return;
|
||||
|
||||
var Loader = sdk.getComponent("elements.Spinner");
|
||||
var modal = Modal.createDialog(Loader);
|
||||
var step = `remove '${name}' from the directory.`;
|
||||
var step = _t('remove %(name)s from the directory', {name: name}) + '.';
|
||||
|
||||
MatrixClientPeg.get().setRoomDirectoryVisibility(room.room_id, 'private').then(() => {
|
||||
if (!alias) return;
|
||||
step = 'delete the alias.';
|
||||
step = _t('delete the alias') + '.';
|
||||
return MatrixClientPeg.get().deleteAlias(alias);
|
||||
}).done(() => {
|
||||
modal.close();
|
||||
|
@ -225,8 +227,8 @@ module.exports = React.createClass({
|
|||
this.refreshRoomList();
|
||||
console.error("Failed to " + step + ": " + err);
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Failed to " + step,
|
||||
description: ((err && err.message) ? err.message : "The server may be unavailable or overloaded"),
|
||||
title: _t('Error'),
|
||||
description: ((err && err.message) ? err.message : _t('The server may be unavailable or overloaded'))
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -314,8 +316,8 @@ module.exports = React.createClass({
|
|||
if (!fields) {
|
||||
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Unable to join network",
|
||||
description: "Riot does not know how to join a room on this network",
|
||||
title: _t('Unable to join network'),
|
||||
description: _t('Riot does not know how to join a room on this network'),
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@ -325,15 +327,15 @@ module.exports = React.createClass({
|
|||
} else {
|
||||
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Room not found",
|
||||
description: "Couldn't find a matching Matrix room",
|
||||
title: _t('Room not found'),
|
||||
description: _t('Couldn\'t find a matching Matrix room'),
|
||||
});
|
||||
}
|
||||
}, (e) => {
|
||||
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Fetching third party location failed",
|
||||
description: "Unable to look up room ID from server",
|
||||
title: _t('Fetching third party location failed'),
|
||||
description: _t('Unable to look up room ID from server'),
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -353,8 +355,8 @@ module.exports = React.createClass({
|
|||
if (!room.world_readable && !room.guest_can_join) {
|
||||
var NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog");
|
||||
Modal.createDialog(NeedToRegisterDialog, {
|
||||
title: "Failed to join the room",
|
||||
description: "This room is inaccessible to guests. You may be able to join if you register."
|
||||
title: _t('Failed to join the room'),
|
||||
description: _t('This room is inaccessible to guests. You may be able to join if you register') + '.'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@ -368,7 +370,7 @@ module.exports = React.createClass({
|
|||
avatarUrl: room.avatar_url,
|
||||
// XXX: This logic is duplicated from the JS SDK which
|
||||
// would normally decide what the name is.
|
||||
name: room.name || room_alias || "Unnamed room",
|
||||
name: room.name || room_alias || _t('Unnamed room'),
|
||||
};
|
||||
}
|
||||
// It's not really possible to join Matrix rooms by ID because the HS has no way to know
|
||||
|
@ -393,18 +395,18 @@ module.exports = React.createClass({
|
|||
var self = this;
|
||||
var guestRead, guestJoin, perms;
|
||||
for (var i = 0; i < rooms.length; i++) {
|
||||
var name = rooms[i].name || get_display_alias_for_room(rooms[i]) || "Unnamed room";
|
||||
var name = rooms[i].name || get_display_alias_for_room(rooms[i]) || _t('Unnamed room');
|
||||
guestRead = null;
|
||||
guestJoin = null;
|
||||
|
||||
if (rooms[i].world_readable) {
|
||||
guestRead = (
|
||||
<div className="mx_RoomDirectory_perm">World readable</div>
|
||||
<div className="mx_RoomDirectory_perm">{ _t('World readable') }</div>
|
||||
);
|
||||
}
|
||||
if (rooms[i].guest_can_join) {
|
||||
guestJoin = (
|
||||
<div className="mx_RoomDirectory_perm">Guests can join</div>
|
||||
<div className="mx_RoomDirectory_perm">{ _t('Guests can join') }</div>
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -493,7 +495,7 @@ module.exports = React.createClass({
|
|||
if (this.state.protocolsLoading) {
|
||||
return (
|
||||
<div className="mx_RoomDirectory">
|
||||
<SimpleRoomHeader title="Directory" />
|
||||
<SimpleRoomHeader title={ _t('Directory') } />
|
||||
<Loader />
|
||||
</div>
|
||||
);
|
||||
|
@ -511,7 +513,7 @@ module.exports = React.createClass({
|
|||
// request from the scrollpanel because there isn't one
|
||||
let scrollpanel_content;
|
||||
if (rows.length == 0) {
|
||||
scrollpanel_content = <i>No rooms to show</i>;
|
||||
scrollpanel_content = <i>{ _t('No rooms to show') }</i>;
|
||||
} else {
|
||||
scrollpanel_content = <table ref="directory_table" className="mx_RoomDirectory_table">
|
||||
<tbody>
|
||||
|
@ -545,9 +547,9 @@ module.exports = React.createClass({
|
|||
}
|
||||
|
||||
|
||||
let placeholder = 'Search for a room';
|
||||
let placeholder = _t('Search for a room');
|
||||
if (!this.state.instanceId) {
|
||||
placeholder = '#example:' + this.state.roomServer;
|
||||
placeholder = _t('#example') + ':' + this.state.roomServer;
|
||||
} else if (instance_expected_field_type) {
|
||||
placeholder = instance_expected_field_type.placeholder;
|
||||
}
|
||||
|
@ -564,7 +566,7 @@ module.exports = React.createClass({
|
|||
const DirectorySearchBox = sdk.getComponent('elements.DirectorySearchBox');
|
||||
return (
|
||||
<div className="mx_RoomDirectory">
|
||||
<SimpleRoomHeader title="Directory" icon="img/icons-directory.svg"/>
|
||||
<SimpleRoomHeader title={ _t('Directory') } icon="img/icons-directory.svg" />
|
||||
<div className="mx_RoomDirectory_list">
|
||||
<div className="mx_RoomDirectory_listheader">
|
||||
<DirectorySearchBox
|
||||
|
|
|
@ -20,7 +20,8 @@ var React = require('react');
|
|||
var ReactDOM = require('react-dom');
|
||||
var classNames = require('classnames');
|
||||
var DropTarget = require('react-dnd').DropTarget;
|
||||
var sdk = require('matrix-react-sdk')
|
||||
var sdk = require('matrix-react-sdk');
|
||||
import _t from 'counterpart-riot';
|
||||
var dis = require('matrix-react-sdk/lib/dispatcher');
|
||||
var Unread = require('matrix-react-sdk/lib/Unread');
|
||||
var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg');
|
||||
|
@ -463,7 +464,7 @@ var RoomSubList = React.createClass({
|
|||
return (
|
||||
<AccessibleButton className="mx_RoomSubList_ellipsis" onClick={this._showFullMemberList}>
|
||||
<div className="mx_RoomSubList_line"></div>
|
||||
<div className="mx_RoomSubList_more">more</div>
|
||||
<div className="mx_RoomSubList_more">{ _t("more") }</div>
|
||||
<div className={ badgeClasses }>{ content }</div>
|
||||
</AccessibleButton>
|
||||
);
|
||||
|
@ -509,8 +510,8 @@ var RoomSubList = React.createClass({
|
|||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
console.error("Failed to add tag " + self.props.tagName + " to room" + err);
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Failed to add tag " + self.props.tagName + " to room",
|
||||
description: ((err && err.message) ? err.message : "Operation failed"),
|
||||
title: _t('Failed to add tag %(tagName)s to room', {tagName: self.props.tagName}),
|
||||
description: ((err && err.message) ? err.message : _t('Operation failed')),
|
||||
});
|
||||
});
|
||||
break;
|
||||
|
@ -530,7 +531,7 @@ var RoomSubList = React.createClass({
|
|||
|
||||
var target;
|
||||
if (this.state.sortedList.length == 0 && this.props.editable) {
|
||||
target = <RoomDropTarget label={ 'Drop here to ' + this.props.verb }/>;
|
||||
target = <RoomDropTarget label={ _t("Drop here %(toAction)s", {toAction: this.props.verb}) }/>;
|
||||
}
|
||||
|
||||
if (this.state.sortedList.length > 0 || this.props.editable) {
|
||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||
'use strict';
|
||||
|
||||
var React = require('react');
|
||||
import _t from 'counterpart-riot';
|
||||
var sdk = require('matrix-react-sdk')
|
||||
var dis = require('matrix-react-sdk/lib/dispatcher');
|
||||
var rate_limited_func = require('matrix-react-sdk/lib/ratelimitedfunc');
|
||||
|
@ -134,7 +135,7 @@ module.exports = React.createClass({
|
|||
className="mx_SearchBox_search"
|
||||
value={ this.state.searchTerm }
|
||||
onChange={ this.onChange }
|
||||
placeholder="Filter room names"
|
||||
placeholder={ _t('Filter room names') }
|
||||
/>
|
||||
];
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ var React = require('react');
|
|||
var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg');
|
||||
var dis = require('matrix-react-sdk/lib/dispatcher');
|
||||
var sdk = require('matrix-react-sdk');
|
||||
import _t from 'counterpart-riot';
|
||||
var Modal = require('matrix-react-sdk/lib/Modal');
|
||||
var Resend = require("matrix-react-sdk/lib/Resend");
|
||||
import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore';
|
||||
|
@ -74,8 +75,8 @@ module.exports = React.createClass({
|
|||
// display error message stating you couldn't delete this.
|
||||
var code = e.errcode || e.statusCode;
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Error",
|
||||
description: "You cannot delete this message. (" + code + ")"
|
||||
title: _t('Error'),
|
||||
description: _t('You cannot delete this message. (%(code)s)', {code: code})
|
||||
});
|
||||
}).done();
|
||||
},
|
||||
|
@ -121,7 +122,7 @@ module.exports = React.createClass({
|
|||
if (eventStatus === 'not_sent') {
|
||||
resendButton = (
|
||||
<div className="mx_MessageContextMenu_field" onClick={this.onResendClick}>
|
||||
Resend
|
||||
{ _t('Resend') }
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -129,7 +130,7 @@ module.exports = React.createClass({
|
|||
if (!eventStatus && !this.props.mxEvent.isRedacted()) { // sent and not redacted
|
||||
redactButton = (
|
||||
<div className="mx_MessageContextMenu_field" onClick={this.onRedactClick}>
|
||||
Redact
|
||||
{ _t('Redact') }
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -137,21 +138,21 @@ module.exports = React.createClass({
|
|||
if (eventStatus === "queued" || eventStatus === "not_sent") {
|
||||
cancelButton = (
|
||||
<div className="mx_MessageContextMenu_field" onClick={this.onCancelSendClick}>
|
||||
Cancel Sending
|
||||
{ _t('Cancel Sending') }
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
viewSourceButton = (
|
||||
<div className="mx_MessageContextMenu_field" onClick={this.onViewSourceClick}>
|
||||
View Source
|
||||
{ _t('View Source') }
|
||||
</div>
|
||||
);
|
||||
|
||||
if (this.props.mxEvent.getType() !== this.props.mxEvent.getWireType()) {
|
||||
viewClearSourceButton = (
|
||||
<div className="mx_MessageContextMenu_field" onClick={this.onViewClearSourceClick}>
|
||||
View Decrypted Source
|
||||
{ _t('View Decrypted Source') }
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -160,7 +161,7 @@ module.exports = React.createClass({
|
|||
if (this.props.eventTileOps.isWidgetHidden()) {
|
||||
unhidePreviewButton = (
|
||||
<div className="mx_MessageContextMenu_field" onClick={this.onUnhidePreviewClick}>
|
||||
Unhide Preview
|
||||
{ _t('Unhide Preview') }
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -170,13 +171,13 @@ module.exports = React.createClass({
|
|||
permalinkButton = (
|
||||
<div className="mx_MessageContextMenu_field">
|
||||
<a href={ "https://matrix.to/#/" + this.props.mxEvent.getRoomId() +"/"+ this.props.mxEvent.getId() }
|
||||
target="_blank" rel="noopener" onClick={ this.closeMenu }>Permalink</a>
|
||||
target="_blank" rel="noopener" onClick={ this.closeMenu }>{ _t('Permalink') }</a>
|
||||
</div>
|
||||
);
|
||||
|
||||
const quoteButton = (
|
||||
<div className="mx_MessageContextMenu_field" onClick={this.onQuoteClick}>
|
||||
Quote
|
||||
{ _t('Quote') }
|
||||
</div>
|
||||
);
|
||||
|
||||
|
@ -185,7 +186,7 @@ module.exports = React.createClass({
|
|||
externalURLButton = (
|
||||
<div className="mx_MessageContextMenu_field">
|
||||
<a href={ this.props.mxEvent.event.content.external_url }
|
||||
rel="noopener" target="_blank" onClick={ this.closeMenu }>Source URL</a>
|
||||
rel="noopener" target="_blank" onClick={ this.closeMenu }>{ _t('Source URL') }</a>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import q from 'q';
|
|||
import React from 'react';
|
||||
import classNames from 'classnames';
|
||||
import sdk from 'matrix-react-sdk';
|
||||
import _t from 'counterpart-riot';
|
||||
import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';
|
||||
import dis from 'matrix-react-sdk/lib/dispatcher';
|
||||
import DMRoomMap from 'matrix-react-sdk/lib/utils/DMRoomMap';
|
||||
|
@ -70,8 +71,8 @@ module.exports = React.createClass({
|
|||
}).fail(function(err) {
|
||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Failed to remove tag " + tagNameOff + " from room",
|
||||
description: ((err && err.message) ? err.message : "Operation failed"),
|
||||
title: _t('Failed to remove tag %(tagName)s from room', {tagName: tagNameOff}),
|
||||
description: ((err && err.message) ? err.message : _t('Operation failed')),
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -87,8 +88,8 @@ module.exports = React.createClass({
|
|||
}).fail(function(err) {
|
||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Failed to add tag " + tagNameOn + " to room",
|
||||
description: ((err && err.message) ? err.message : "Operation failed"),
|
||||
title: _t('Failed to remove tag %(tagName)s from room', {tagName: tagNameOn}),
|
||||
description: ((err && err.message) ? err.message : _t('Operation failed')),
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -148,8 +149,8 @@ module.exports = React.createClass({
|
|||
}, (err) => {
|
||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Failed to set Direct Message status of room",
|
||||
description: ((err && err.message) ? err.message : "Operation failed"),
|
||||
title: _t('Failed to set Direct Message status of room'),
|
||||
description: ((err && err.message) ? err.message : _t('Operation failed')),
|
||||
});
|
||||
});
|
||||
},
|
||||
|
@ -187,8 +188,8 @@ module.exports = React.createClass({
|
|||
var errCode = err.errcode || "unknown error code";
|
||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: `Failed to forget room (${errCode})`,
|
||||
description: ((err && err.message) ? err.message : "Operation failed"),
|
||||
title: _t('Failed to forget room %(errCode)s', {errCode: errCode}),
|
||||
description: ((err && err.message) ? err.message : _t('Operation failed')),
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -274,22 +275,22 @@ module.exports = React.createClass({
|
|||
<div className={ alertMeClasses } onClick={this._onClickAlertMe} >
|
||||
<img className="mx_RoomTileContextMenu_notif_activeIcon" src="img/notif-active.svg" width="12" height="12" />
|
||||
<img className="mx_RoomTileContextMenu_notif_icon mx_filterFlipColor" src="img/icon-context-mute-off-copy.svg" width="16" height="12" />
|
||||
All messages (loud)
|
||||
{ _t('All messages (loud)') }
|
||||
</div>
|
||||
<div className={ allNotifsClasses } onClick={this._onClickAllNotifs} >
|
||||
<img className="mx_RoomTileContextMenu_notif_activeIcon" src="img/notif-active.svg" width="12" height="12" />
|
||||
<img className="mx_RoomTileContextMenu_notif_icon mx_filterFlipColor" src="img/icon-context-mute-off.svg" width="16" height="12" />
|
||||
All messages
|
||||
{ _t('All messages') }
|
||||
</div>
|
||||
<div className={ mentionsClasses } onClick={this._onClickMentions} >
|
||||
<img className="mx_RoomTileContextMenu_notif_activeIcon" src="img/notif-active.svg" width="12" height="12" />
|
||||
<img className="mx_RoomTileContextMenu_notif_icon mx_filterFlipColor" src="img/icon-context-mute-mentions.svg" width="16" height="12" />
|
||||
Mentions only
|
||||
{ _t('Mentions only') }
|
||||
</div>
|
||||
<div className={ muteNotifsClasses } onClick={this._onClickMute} >
|
||||
<img className="mx_RoomTileContextMenu_notif_activeIcon" src="img/notif-active.svg" width="12" height="12" />
|
||||
<img className="mx_RoomTileContextMenu_notif_icon mx_filterFlipColor" src="img/icon-context-mute.svg" width="16" height="12" />
|
||||
Mute
|
||||
{ _t('Mute') }
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
@ -306,16 +307,16 @@ module.exports = React.createClass({
|
|||
switch (membership) {
|
||||
case "join":
|
||||
leaveClickHandler = this._onClickLeave;
|
||||
leaveText = "Leave";
|
||||
leaveText = _t('Leave');
|
||||
break;
|
||||
case "leave":
|
||||
case "ban":
|
||||
leaveClickHandler = this._onClickForget;
|
||||
leaveText = "Forget";
|
||||
leaveText = _t('Forget');
|
||||
break;
|
||||
case "invite":
|
||||
leaveClickHandler = this._onClickReject;
|
||||
leaveText = "Reject";
|
||||
leaveText = _t('Reject');
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -353,17 +354,17 @@ module.exports = React.createClass({
|
|||
<div className={ favouriteClasses } onClick={this._onClickFavourite} >
|
||||
<img className="mx_RoomTileContextMenu_tag_icon" src="img/icon_context_fave.svg" width="15" height="15" />
|
||||
<img className="mx_RoomTileContextMenu_tag_icon_set" src="img/icon_context_fave_on.svg" width="15" height="15" />
|
||||
Favourite
|
||||
{ _t('Favourite') }
|
||||
</div>
|
||||
<div className={ lowPriorityClasses } onClick={this._onClickLowPriority} >
|
||||
<img className="mx_RoomTileContextMenu_tag_icon" src="img/icon_context_low.svg" width="15" height="15" />
|
||||
<img className="mx_RoomTileContextMenu_tag_icon_set" src="img/icon_context_low_on.svg" width="15" height="15" />
|
||||
Low Priority
|
||||
{ _t('Low Priority') }
|
||||
</div>
|
||||
<div className={ dmClasses } onClick={this._onClickDM} >
|
||||
<img className="mx_RoomTileContextMenu_tag_icon" src="img/icon_context_person.svg" width="15" height="15" />
|
||||
<img className="mx_RoomTileContextMenu_tag_icon_set" src="img/icon_context_person_on.svg" width="15" height="15" />
|
||||
Direct Chat
|
||||
{ _t('Direct Chat') }
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
|
|
@ -25,6 +25,7 @@ var filesize = require('filesize');
|
|||
var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton');
|
||||
const Modal = require('matrix-react-sdk/lib/Modal');
|
||||
const sdk = require('matrix-react-sdk');
|
||||
import _t from 'counterpart-riot';
|
||||
|
||||
module.exports = React.createClass({
|
||||
displayName: 'ImageView',
|
||||
|
@ -76,8 +77,8 @@ module.exports = React.createClass({
|
|||
// display error message stating you couldn't delete this.
|
||||
var code = e.errcode || e.statusCode;
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Error",
|
||||
description: "You cannot delete this image. (" + code + ")"
|
||||
title: _t('Error'),
|
||||
description: _t('You cannot delete this image. (%(code)s)', {code: code})
|
||||
});
|
||||
}).done();
|
||||
}
|
||||
|
@ -150,14 +151,14 @@ module.exports = React.createClass({
|
|||
var eventMeta;
|
||||
if(showEventMeta) {
|
||||
eventMeta = (<div className="mx_ImageView_metadata">
|
||||
Uploaded on { DateUtils.formatDate(new Date(this.props.mxEvent.getTs())) } by { this.props.mxEvent.getSender() }
|
||||
{ _t('Uploaded on %(date)s by %(user)s', {date: DateUtils.formatDate(new Date(this.props.mxEvent.getTs())), user: this.props.mxEvent.getSender()}) }
|
||||
</div>);
|
||||
}
|
||||
|
||||
var eventRedact;
|
||||
if(showEventMeta) {
|
||||
eventRedact = (<div className="mx_ImageView_button" onClick={this.onRedactClick}>
|
||||
Redact
|
||||
{ _t('Redact') }
|
||||
</div>);
|
||||
}
|
||||
|
||||
|
@ -169,7 +170,7 @@ module.exports = React.createClass({
|
|||
<img src={this.props.src} style={style}/>
|
||||
<div className="mx_ImageView_labelWrapper">
|
||||
<div className="mx_ImageView_label">
|
||||
<AccessibleButton className="mx_ImageView_cancel" onClick={ this.props.onFinished }><img src="img/cancel-white.svg" width="18" height="18" alt="Close"/></AccessibleButton>
|
||||
<AccessibleButton className="mx_ImageView_cancel" onClick={ this.props.onFinished }><img src="img/cancel-white.svg" width="18" height="18" alt={ _t('Close') }/></AccessibleButton>
|
||||
<div className="mx_ImageView_shim">
|
||||
</div>
|
||||
<div className="mx_ImageView_name">
|
||||
|
@ -178,7 +179,7 @@ module.exports = React.createClass({
|
|||
{ eventMeta }
|
||||
<a className="mx_ImageView_link" href={ this.props.src } download={ this.props.name } target="_blank" rel="noopener">
|
||||
<div className="mx_ImageView_download">
|
||||
Download this file<br/>
|
||||
{ _t('Download this file') }<br/>
|
||||
<span className="mx_ImageView_size">{ size_res }</span>
|
||||
</div>
|
||||
</a>
|
||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||
'use strict';
|
||||
|
||||
var React = require('react');
|
||||
import _t from 'counterpart-riot';
|
||||
var Notifier = require("matrix-react-sdk/lib/Notifier");
|
||||
var sdk = require('matrix-react-sdk')
|
||||
var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton');
|
||||
|
@ -37,7 +38,7 @@ module.exports = React.createClass({
|
|||
<div className="mx_MatrixToolbar">
|
||||
<img className="mx_MatrixToolbar_warning" src="img/warning.svg" width="24" height="23" alt="/!\"/>
|
||||
<div className="mx_MatrixToolbar_content">
|
||||
You are not receiving desktop notifications. <a className="mx_MatrixToolbar_link" onClick={ this.onClick }>Enable them now</a>
|
||||
{ _t('You are not receiving desktop notifications') } <a className="mx_MatrixToolbar_link" onClick={ this.onClick }> { _t('Enable them now') }</a>
|
||||
</div>
|
||||
<AccessibleButton className="mx_MatrixToolbar_close" onClick={ this.hideToolbar } ><img src="img/cancel.svg" width="18" height="18" /></AccessibleButton>
|
||||
</div>
|
||||
|
|
|
@ -15,6 +15,7 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
var React = require("react");
|
||||
import _t from 'counterpart-riot';
|
||||
|
||||
module.exports = React.createClass({
|
||||
displayName: 'VectorCustomServerDialog',
|
||||
|
@ -26,24 +27,14 @@ module.exports = React.createClass({
|
|||
return (
|
||||
<div className="mx_ErrorDialog">
|
||||
<div className="mx_Dialog_title">
|
||||
Custom Server Options
|
||||
{ _t('Custom Server Options') }
|
||||
</div>
|
||||
<div className="mx_Dialog_content">
|
||||
<span>
|
||||
You can use the custom server options to sign into other Matrix
|
||||
servers by specifying a different Home server URL.
|
||||
<br/>
|
||||
This allows you to use Riot with an existing Matrix account on
|
||||
a different home server.
|
||||
<br/>
|
||||
<br/>
|
||||
You can also set a custom identity server but you won't be able to
|
||||
invite users by email address, or be invited by email address yourself.
|
||||
</span>
|
||||
<span dangerouslySetInnerHTML={{__html: _t('customServer_text')}} />
|
||||
</div>
|
||||
<div className="mx_Dialog_buttons">
|
||||
<button onClick={this.props.onFinished} autoFocus={true}>
|
||||
Dismiss
|
||||
{ _t('Dismiss') }
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||
'use strict';
|
||||
|
||||
var React = require('react');
|
||||
import _t from 'counterpart-riot';
|
||||
|
||||
module.exports = React.createClass({
|
||||
displayName: 'VectorLoginFooter',
|
||||
|
@ -30,7 +31,7 @@ module.exports = React.createClass({
|
|||
<a href="https://medium.com/@RiotChat">blog</a> ·
|
||||
<a href="https://twitter.com/@RiotChat">twitter</a> ·
|
||||
<a href="https://github.com/vector-im/vector-web">github</a> ·
|
||||
<a href="https://matrix.org">powered by Matrix</a>
|
||||
<a href="https://matrix.org">{ _t('powered by Matrix') }</a>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -14,19 +14,23 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
// 'use strict';
|
||||
|
||||
var React = require('react');
|
||||
import React from 'react';
|
||||
import _t from 'counterpart-riot';
|
||||
import DateUtils from 'matrix-react-sdk/lib/DateUtils';
|
||||
|
||||
var days = [
|
||||
"Sunday",
|
||||
"Monday",
|
||||
"Tuesday",
|
||||
"Wednesday",
|
||||
"Thursday",
|
||||
"Friday",
|
||||
"Saturday"
|
||||
];
|
||||
function getdaysArray() {
|
||||
var days = [];
|
||||
days.push(_t('Sunday'));
|
||||
days.push(_t('Monday'));
|
||||
days.push(_t('Tuesday'));
|
||||
days.push(_t('Wednesday'));
|
||||
days.push(_t('Thursday'));
|
||||
days.push(_t('Friday'));
|
||||
days.push(_t('Saturday'));
|
||||
return days;
|
||||
}
|
||||
|
||||
module.exports = React.createClass({
|
||||
displayName: 'DateSeparator',
|
||||
|
@ -34,19 +38,20 @@ module.exports = React.createClass({
|
|||
var date = new Date(this.props.ts);
|
||||
var today = new Date();
|
||||
var yesterday = new Date();
|
||||
var days = getdaysArray();
|
||||
yesterday.setDate(today.getDate() - 1);
|
||||
var label;
|
||||
if (date.toDateString() === today.toDateString()) {
|
||||
label = "Today";
|
||||
label = _t('Today');
|
||||
}
|
||||
else if (date.toDateString() === yesterday.toDateString()) {
|
||||
label = "Yesterday";
|
||||
label = _t('Yesterday');
|
||||
}
|
||||
else if (today.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) {
|
||||
label = days[date.getDay()];
|
||||
}
|
||||
else {
|
||||
label = date.toDateString();
|
||||
label = DateUtils.formatFullDate(date);
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
|
@ -23,6 +23,7 @@ import {DropTarget} from 'react-dnd';
|
|||
import dis from 'matrix-react-sdk/lib/dispatcher';
|
||||
import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';
|
||||
import sdk from 'matrix-react-sdk';
|
||||
import _t from 'counterpart-riot';
|
||||
import RoomTile from 'matrix-react-sdk/lib/components/views/rooms/RoomTile';
|
||||
import * as Rooms from 'matrix-react-sdk/lib/Rooms';
|
||||
import Modal from 'matrix-react-sdk/lib/Modal';
|
||||
|
@ -90,8 +91,8 @@ var roomTileSource = {
|
|||
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
console.error("Failed to set direct chat tag " + err);
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Failed to set direct chat tag",
|
||||
description: ((err && err.message) ? err.message : "Operation failed"),
|
||||
title: _t('Failed to set direct chat tag'),
|
||||
description: ((err && err.message) ? err.message : _t('Operation failed')),
|
||||
});
|
||||
});
|
||||
return;
|
||||
|
@ -115,8 +116,8 @@ var roomTileSource = {
|
|||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
console.error("Failed to remove tag " + prevTag + " from room: " + err);
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Failed to remove tag " + prevTag + " from room",
|
||||
description: ((err && err.message) ? err.message : "Operation failed"),
|
||||
title: _t('Failed to remove tag %(tagName)s from room', {tagName: prevTag}),
|
||||
description: ((err && err.message) ? err.message : _t('Operation failed')),
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -137,8 +138,8 @@ var roomTileSource = {
|
|||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
console.error("Failed to add tag " + newTag + " to room: " + err);
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Failed to add tag " + newTag + " to room",
|
||||
description: ((err && err.message) ? err.message : "Operation failed"),
|
||||
title: _t('Failed to add tag %(tagName)s to room', {tagName: newTag}),
|
||||
description: ((err && err.message) ? err.message : _t('Operation failed')),
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -241,4 +242,3 @@ DragSource('RoomTile', roomTileSource, function(connect, monitor) {
|
|||
isDragging: monitor.isDragging()
|
||||
};
|
||||
})(RoomTile));
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ limitations under the License.
|
|||
|
||||
'use strict';
|
||||
var React = require('react');
|
||||
import _t from 'counterpart-riot';
|
||||
var q = require("q");
|
||||
var sdk = require('matrix-react-sdk');
|
||||
var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg');
|
||||
|
@ -131,8 +132,8 @@ module.exports = React.createClass({
|
|||
}, (error) => {
|
||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Error saving email notification preferences",
|
||||
description: "An error occurred whilst saving your email notification preferences.",
|
||||
title: _t('Error saving email notification preferences'),
|
||||
description: _t('An error occurred whilst saving your email notification preferences') + '.',
|
||||
});
|
||||
});
|
||||
},
|
||||
|
@ -175,9 +176,10 @@ module.exports = React.createClass({
|
|||
|
||||
var TextInputDialog = sdk.getComponent("dialogs.TextInputDialog");
|
||||
Modal.createDialog(TextInputDialog, {
|
||||
title: "Keywords",
|
||||
description: "Enter keywords separated by a comma:",
|
||||
title: _t('Keywords'),
|
||||
description: _t('Enter keywords separated by a comma') + ':',
|
||||
value: keywords,
|
||||
button: _t('OK'),
|
||||
onFinished: function onFinished(should_leave, newValue) {
|
||||
|
||||
if (should_leave && newValue !== keywords) {
|
||||
|
@ -240,8 +242,8 @@ module.exports = React.createClass({
|
|||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
console.error("Failed to change settings: " + error);
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Failed to change settings",
|
||||
description: ((error && error.message) ? error.message : "Operation failed"),
|
||||
title: _t('Failed to change settings'),
|
||||
description: ((error && error.message) ? error.message : _t('Operation failed')),
|
||||
onFinished: self._refreshFromServer
|
||||
});
|
||||
});
|
||||
|
@ -310,8 +312,8 @@ module.exports = React.createClass({
|
|||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
console.error("Can't update user notification settings: " + error);
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Can't update user notification settings",
|
||||
description: ((error && error.message) ? error.message : "Operation failed"),
|
||||
title: _t('Can\'t update user notification settings'),
|
||||
description: ((error && error.message) ? error.message : _t('Operation failed')),
|
||||
onFinished: self._refreshFromServer
|
||||
});
|
||||
});
|
||||
|
@ -352,8 +354,8 @@ module.exports = React.createClass({
|
|||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||
console.error("Failed to update keywords: " + error);
|
||||
Modal.createDialog(ErrorDialog, {
|
||||
title: "Failed to update keywords",
|
||||
description: ((error && error.message) ? error.message : "Operation failed"),
|
||||
title: _t('Failed to update keywords'),
|
||||
description: ((error && error.message) ? error.message : _t('Operation failed')),
|
||||
onFinished: self._refreshFromServer
|
||||
});
|
||||
}
|
||||
|
@ -562,8 +564,8 @@ module.exports = React.createClass({
|
|||
|
||||
// Build the rules not managed by Vector UI
|
||||
var otherRulesDescriptions = {
|
||||
'.m.rule.message': "Notify for all other messages/rooms",
|
||||
'.m.rule.fallback': "Notify me for anything else"
|
||||
'.m.rule.message': _t('Notify for all other messages/rooms'),
|
||||
'.m.rule.fallback': _t('Notify me for anything else'),
|
||||
};
|
||||
|
||||
for (var i in defaultRules.others) {
|
||||
|
@ -698,7 +700,7 @@ module.exports = React.createClass({
|
|||
</div>
|
||||
<div className="mx_UserNotifSettings_labelCell">
|
||||
<label htmlFor="enableNotifications">
|
||||
Enable notifications for this account
|
||||
{ _t('Enable notifications for this account') }
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -713,7 +715,7 @@ module.exports = React.createClass({
|
|||
{masterPushRuleDiv}
|
||||
|
||||
<div className="mx_UserSettings_notifTable">
|
||||
All notifications are currently disabled for all targets.
|
||||
{ _t('All notifications are currently disabled for all targets') }.
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
@ -723,13 +725,13 @@ module.exports = React.createClass({
|
|||
let emailNotificationsRow;
|
||||
if (emailThreepids.length === 0) {
|
||||
emailNotificationsRow = <div>
|
||||
Add an email address above to configure email notifications
|
||||
{ _t('Add an email address above to configure email notifications') }
|
||||
</div>;
|
||||
} else {
|
||||
// This only supports the first email address in your profile for now
|
||||
emailNotificationsRow = this.emailNotificationsRow(
|
||||
emailThreepids[0].address,
|
||||
"Enable email notifications ("+emailThreepids[0].address+")"
|
||||
_t('Enable email notifications') + ' (' + emailThreepids[0].address + ')'
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -737,7 +739,7 @@ module.exports = React.createClass({
|
|||
var externalRules = [];
|
||||
for (var i in this.state.externalPushRules) {
|
||||
var rule = this.state.externalPushRules[i];
|
||||
externalRules.push(<li>{ rule.description }</li>);
|
||||
externalRules.push(<li>{ _t(rule.description) }</li>);
|
||||
}
|
||||
|
||||
// Show keywords not displayed by the vector UI as a single external push rule
|
||||
|
@ -748,12 +750,12 @@ module.exports = React.createClass({
|
|||
}
|
||||
if (externalKeyWords.length) {
|
||||
externalKeyWords = externalKeyWords.join(", ");
|
||||
externalRules.push(<li>Notifications on the following keywords follow rules which can’t be displayed here: { externalKeyWords }</li>);
|
||||
externalRules.push(<li>{ _t('Notifications on the following keywords follow rules which can’t be displayed here:') } { externalKeyWords }</li>);
|
||||
}
|
||||
|
||||
var devicesSection;
|
||||
if (this.state.pushers === undefined) {
|
||||
devicesSection = <div className="error">Unable to fetch notification target list</div>
|
||||
devicesSection = <div className="error">{ _t('Unable to fetch notification target list') }</div>
|
||||
} else if (this.state.pushers.length == 0) {
|
||||
devicesSection = null;
|
||||
} else {
|
||||
|
@ -774,7 +776,7 @@ module.exports = React.createClass({
|
|||
}
|
||||
if (devicesSection) {
|
||||
devicesSection = (<div>
|
||||
<h3>Notification targets</h3>
|
||||
<h3>{ _t('Notification targets') }</h3>
|
||||
{ devicesSection }
|
||||
</div>);
|
||||
}
|
||||
|
@ -783,9 +785,9 @@ module.exports = React.createClass({
|
|||
if (externalRules.length) {
|
||||
advancedSettings = (
|
||||
<div>
|
||||
<h3>Advanced notifications settings</h3>
|
||||
There are advanced notifications which are not shown here.<br/>
|
||||
You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply.
|
||||
<h3>{ _t('Advanced notifications settings') }</h3>
|
||||
{ _t('There are advanced notifications which are not shown here') }.<br/>
|
||||
{ _t('You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply') }.
|
||||
<ul>
|
||||
{ externalRules }
|
||||
</ul>
|
||||
|
@ -812,7 +814,7 @@ module.exports = React.createClass({
|
|||
</div>
|
||||
<div className="mx_UserNotifSettings_labelCell">
|
||||
<label htmlFor="enableDesktopNotifications">
|
||||
Enable desktop notifications
|
||||
{ _t('Enable desktop notifications') }
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -830,7 +832,7 @@ module.exports = React.createClass({
|
|||
</div>
|
||||
<div className="mx_UserNotifSettings_labelCell">
|
||||
<label htmlFor="enableDesktopAudioNotifications">
|
||||
Enable audible notifications in web client
|
||||
{ _t('Enable audible notifications in web client') }
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -842,9 +844,9 @@ module.exports = React.createClass({
|
|||
<thead>
|
||||
<tr>
|
||||
<th width="55%"></th>
|
||||
<th width="15%">Off</th>
|
||||
<th width="15%">On</th>
|
||||
<th width="15%">Noisy</th>
|
||||
<th width="15%">{ _t('Off') }</th>
|
||||
<th width="15%">{ _t('On') }</th>
|
||||
<th width="15%">{ _t('Noisy') }</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
1
src/i18n/basefile.json
Normal file
1
src/i18n/basefile.json
Normal file
|
@ -0,0 +1 @@
|
|||
{}
|
88
src/i18n/be.json
Normal file
88
src/i18n/be.json
Normal file
|
@ -0,0 +1,88 @@
|
|||
{
|
||||
"Add an email address above to configure email notifications": "Дадайце адрас электроннай пошты вышэй, каб наладзіць апавяшчэнні",
|
||||
"All messages": "Усе паведамленні",
|
||||
"All messages (loud)": "Усе паведамленні (гучна)",
|
||||
"All notifications are currently disabled for all targets.": "Усе апавяшчэнні ў цяперашні час адключаныя для ўсіх мэтаў.",
|
||||
"An error occurred whilst saving your email notification preferences": "Адбылася памылка падчас захавання налады апавяшчэнняў па электроннай пошце",
|
||||
"Cancel Sending": "Адмяніць адпраўку",
|
||||
"Can't update user notification settings": "Немагчыма абнавіць налады апавяшчэнняў карыстальніка",
|
||||
"Close": "Зачыніць",
|
||||
"Create new room": "Стварыць новы пакой",
|
||||
"Couldn't find a matching Matrix room": "Не атрымалася знайсці адпаведны пакой Matrix",
|
||||
"Custom Server Options": "Карыстальніцкія параметры сервера",
|
||||
"delete the alias": "выдаліць псеўданім",
|
||||
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Выдаліць псеўданім пакоя %(alias)s і выдаліць %(name)s з каталога?",
|
||||
"Direct Chat": "Прамы чат",
|
||||
"Directory": "Каталог",
|
||||
"Dismiss": "Aдхіліць",
|
||||
"Download this file": "Спампаваць гэты файл",
|
||||
"Drop here to %(verb)s": "Перацягнуць сюды %(verb)s",
|
||||
"Enable audible notifications in web client": "Ўключыць гукавыя апавяшчэнні ў вэб-кліенце",
|
||||
"Enable desktop notifications": "Ўключыць апавяшчэнні на працоўным стале",
|
||||
"Enable email notifications": "Ўключыць паведамлення па электроннай пошце",
|
||||
"Enable notifications for this account": "Ўключыць апавяшчэнні для гэтага ўліковага запісу",
|
||||
"Enable them now": "Уключыць іх зараз",
|
||||
"Enter keywords separated by a comma": "Калі ласка, увядзіце ключавыя словы, падзеленыя коскамі",
|
||||
"Error": "Памылка",
|
||||
"Error saving email notification preferences": "Памылка захавання налад апавяшчэнняў па электроннай пошце",
|
||||
"#example": "#прыклад",
|
||||
"Failed to": "Не атрымалася",
|
||||
"Failed to add tag %(tagName)s to room": "Не атрымалася дадаць %(tagName)s ў пакоі",
|
||||
"Failed to change settings": "Не атрымалася змяніць налады",
|
||||
"Failed to forget room %(errCode)s": "Не атрымалася забыць пакой %(errCode)s",
|
||||
"Failed to update keywords": "Не атрымалася абнавіць ключавыя словы",
|
||||
"Failed to get protocol list from Home Server": "Не ўдалося атрымаць спіс пратаколаў ад хатняга сервера",
|
||||
"Failed to get public room list": "Не ўдалося атрымаць спіс агульных пакояў",
|
||||
"Failed to join the room": "Не ўдалося далучыцца да пакоя",
|
||||
"Failed to remove tag %(prevTag)s from room": "Не ўдалося выдаліць %(prevTag)s з пакоя",
|
||||
"Failed to set direct chat tag": "Не ўдалося ўсталяваць тэг прамога чата",
|
||||
"Failed to set Direct Message status of room": "Не ўдалося ўсталяваць статут прамога паведамлення пакою",
|
||||
"Favourite": "Улюбёнае",
|
||||
"Fetching third party location failed": "Не ўдалося атрымаць месцазнаходжанне трэцяга боку",
|
||||
"Files": "Файлы",
|
||||
"Filter room names": "Фільтр iмёнаў пакояў",
|
||||
"Forget": "Забыць",
|
||||
" from room": " з пакоя",
|
||||
"Guests can join": "Госці могуць далучыцца",
|
||||
"Guest users can't invite users. Please register to invite": "Госцi не могуць запрашаць карыстальнікаў. Калі ласка, зарэгіструйцеся, каб запрасiць",
|
||||
"Invite to this room": "Запрасіць у гэты пакой",
|
||||
"Keywords": "Ключавыя словы",
|
||||
"Leave": "Пакінуць",
|
||||
"Low Priority": "Нізкі прыярытэт",
|
||||
"Members": "Удзельнікі",
|
||||
"Mentions only": "Толькі згадкі",
|
||||
"Mute": "Без гуку",
|
||||
"No rooms to show": "Няма пакояў для паказу",
|
||||
"Noisy": "Шумна",
|
||||
"Notification targets": "Мэты апавяшчэння",
|
||||
"Notifications": "Апавяшчэнні",
|
||||
"Notifications on the following keywords follow rules which can’t be displayed here": "Апавяшчэнні па наступных ключавых словах прытрымліваюцца правілаў, якія не могуць быць адлюстраваны тут",
|
||||
"Notify for all other messages/rooms": "Апавяшчаць для ўсіх іншых паведамленняў/пакояў",
|
||||
"Notify me for anything else": "Паведаміць мне што-небудзь яшчэ",
|
||||
"Off": "Выключыць",
|
||||
"On": "Уключыць",
|
||||
"Operation failed": "Не атрымалася выканаць аперацыю",
|
||||
"Permalink": "Пастаянная спасылка",
|
||||
"Please Register": "Калі ласка, зарэгіструйцеся",
|
||||
"powered by Matrix": "працуе на Matrix",
|
||||
"Quote": "Цытата",
|
||||
"Redact": "Адрэдагаваць",
|
||||
"Reject": "Адхіліць",
|
||||
"Remove %(name)s from the directory?": "Выдаліць %(name)s з каталога?",
|
||||
"Remove": "Выдалiць",
|
||||
"remove %(name)s from the directory": "выдаліць %(name)s з каталога",
|
||||
"Remove from Directory": "Выдалiць з каталога",
|
||||
"Resend": "Паўторна",
|
||||
"Riot does not know how to join a room on this network": "Riot не ведае, як увайсці ў пакой у гэтай сетке",
|
||||
"Room directory": "Каталог пакояў",
|
||||
"Room not found": "Пакой не знойдзены",
|
||||
"Search for a room": "Пошук па пакоі",
|
||||
"Settings": "Налады",
|
||||
"Source URL": "URL-адрас крыніцы",
|
||||
"Start chat": "Пачаць чат",
|
||||
"The Home Server may be too old to support third party networks": "Хатні сервер можа быць занадта стары для падтрымкі іншых сетак",
|
||||
"There are advanced notifications which are not shown here": "Ёсць пашыраныя апавяшчэння, якія не паказаныя тут",
|
||||
"The server may be unavailable or overloaded": "Сервер можа быць недаступны ці перагружаны",
|
||||
"This room is inaccessible to guests. You may be able to join if you register": "Гэты пакой недаступны для гасцей. Вы можаце далучыцца, калі вы зарэгіструецеся",
|
||||
" to room": " ў пакоі"
|
||||
}
|
84
src/i18n/da.json
Normal file
84
src/i18n/da.json
Normal file
|
@ -0,0 +1,84 @@
|
|||
{
|
||||
"Add an email address above to configure email notifications": "Tilføj en emailadresse ovenfor for at konfigurere e-mail-underretninger",
|
||||
"All notifications are currently disabled for all targets.": "Alle meddelelser er for øjeblikket deaktiveret for alle mål.",
|
||||
"An error occurred whilst saving your email notification preferences": "Der opstod en fejl under opbevaring af dine e-mail-underretningsindstillinger",
|
||||
"and remove": "Og fjern",
|
||||
"Can't update user notification settings": "Kan ikke opdatere brugermeddelelsesindstillinger",
|
||||
"Create new room": "Opret nyt rum",
|
||||
"Couldn't find a matching Matrix room": "Kunne ikke finde et matchende Matrix-rum",
|
||||
"Custom Server Options": "Brugerdefinerede serverindstillinger",
|
||||
"delete the alias": "Slet aliaset",
|
||||
"Delete the room alias": "Slet room alias",
|
||||
"Direct Chat": "Personligt Chat",
|
||||
"Directory": "Rum fortegnelse",
|
||||
"Dismiss": "Afskedige",
|
||||
"Drop here to": "Drop her til",
|
||||
"Enable audible notifications in web client": "Aktivér hørbare underretninger i webklienten",
|
||||
"Enable desktop notifications": "Aktivér desktop meddelelser",
|
||||
"Enable email notifications": "Aktivér e-mail-underretninger",
|
||||
"Enable notifications for this account": "Aktivér underretninger for dette brugernavn",
|
||||
"Enable them now": "Aktivér dem nu",
|
||||
"Enter keywords separated by a comma": "Indtast søgeord adskilt af et komma",
|
||||
"Error": "Fejl",
|
||||
"Error saving email notification preferences": "Fejl ved at gemme e-mail-underretningsindstillinger",
|
||||
"#example": "#eksempel",
|
||||
"Failed to": "Var ikke i stand til at",
|
||||
"Failed to add tag ": "Kunne ikke tilføje tag ",
|
||||
"Failed to change settings": "Kunne ikke ændre indstillinger",
|
||||
"Failed to update keywords": "Kunne ikke opdatere søgeord",
|
||||
"Failed to get protocol list from Home Server": "Kunne ikke få protokolliste fra Home Server",
|
||||
"Failed to get public room list": "Kunne ikke få offentlig rumliste",
|
||||
"Failed to join the room": "Kunne ikke komme ind i rumet",
|
||||
"Failed to remove tag ": "Kunne ikke fjerne tag ",
|
||||
"Failed to set Direct Message status of room": "Kunne ikke indstille direkte beskedstatus for rumet",
|
||||
"Favourite": "Favorit",
|
||||
"Fetching third party location failed": "Hentning af tredjeparts placering mislykkedes",
|
||||
"Files": "Filer",
|
||||
"Filter room names": "Filtrer rumnavne",
|
||||
"Forget": "Glem",
|
||||
"from the directory": "fra fortegnelsen",
|
||||
" from room": " fra rum",
|
||||
"Guests can join": "Gæster kan deltage",
|
||||
"Guest users can't invite users. Please register to invite": "Gæstebrugere kan ikke invitere brugere. Tilmeld dig venligst for at invitere",
|
||||
"Invite to this room": "Inviter til dette rum",
|
||||
"Keywords": "Søgeord",
|
||||
"Leave": "Forlade",
|
||||
"Low Priority": "Lav prioritet",
|
||||
"Members": "Medlemmer",
|
||||
"No rooms to show": "Ingen rum at vise",
|
||||
"Noisy": "Støjende",
|
||||
"Notification targets": "Meddelelsesmål",
|
||||
"Notifications": "Meddelser",
|
||||
"Notifications on the following keywords follow rules which can’t be displayed here": "Meddelelser om følgende søgeord følger regler, der ikke kan vises her",
|
||||
"Notify for all other messages/rooms": "Underret om alle andre meddelelser / rum",
|
||||
"Notify me for anything else": "Underret mig om noget andet",
|
||||
"Off": "Slukket",
|
||||
"On": "Tændt",
|
||||
"Operation failed": "Operation mislykkedes",
|
||||
"Please Register": "Vær venlig at registrere",
|
||||
"powered by Matrix": "Drevet af Matrix",
|
||||
"Reject": "Afvise",
|
||||
"Remove": "Fjerne",
|
||||
"remove": "fjerner",
|
||||
"Remove from Directory": "Fjern fra fortegnelse",
|
||||
"Riot does not know how to join a room on this network": "Riot ved ikke, hvordan man kan deltage i et rum på dette netværk",
|
||||
"Room directory": "Rum fortegnelse",
|
||||
"Room not found": "Rumet ikke fundet",
|
||||
"Search for a room": "Søg efter et rum",
|
||||
"Settings": "Indstillinger",
|
||||
"Start chat": "Begyndt chat",
|
||||
"The Home Server may be too old to support third party networks": "Hjemmeserveren kan være for gammel til at understøtte tredjepartsnetværk",
|
||||
"There are advanced notifications which are not shown here": "Der er avancerede meddelelser, som ikke vises her",
|
||||
"The server may be unavailable or overloaded": "Serveren kan være utilgængelig eller overbelastet",
|
||||
"This room is inaccessible to guests. You may be able to join if you register": "Dette rum er utilgængeligt for gæster. Du kan være i stand til at deltage, hvis du registrerer dig",
|
||||
" to room": " til rum",
|
||||
"Unable to fetch notification target list": "Kan ikke hente meddelelsesmålliste",
|
||||
"Unable to join network": "Kan ikke deltage i netværket",
|
||||
"Unable to look up room ID from server": "Kunne ikke slå op på rum-id fra server",
|
||||
"unknown error code": "Ukendt fejlkode",
|
||||
"Unnamed room": "Unnamed rum",
|
||||
"World readable": "Læselig til alle",
|
||||
"You are not receiving desktop notifications": "Du modtager ikke desktop meddelelser",
|
||||
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du har muligvis konfigureret dem i en anden klient end Riot. Du kan ikke tune dem i Riot, men de gælder stadig",
|
||||
"Close": "Luk"
|
||||
}
|
122
src/i18n/de_DE.json
Normal file
122
src/i18n/de_DE.json
Normal file
|
@ -0,0 +1,122 @@
|
|||
{
|
||||
"Please Register": "Bitte registrieren",
|
||||
"Guest users can't invite users. Please register to invite.": "Gäste können keine User einladen. Zum Einladen bitte anmelden.",
|
||||
"Members": "Mitglieder",
|
||||
"Files": "Dateien",
|
||||
"Notifications": "Benachrichtigungen",
|
||||
"Invite to this room": "In diesen Raum einladen",
|
||||
"Filter room names": "Raum Namen filtern",
|
||||
"Start chat": "Neuen Chat starten",
|
||||
"Room directory": "Raum Verzeichnis",
|
||||
"Create new room": "Neuen Raum erstellen",
|
||||
"Settings": "Einstellungen",
|
||||
"powered by Matrix": "gebaut mit Matrix",
|
||||
"Custom Server Options": "Optionen für eigenen Server",
|
||||
"customServer_text": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.",
|
||||
"Dismiss": "ausblenden",
|
||||
"Failed to get protocol list from Home Server": "Fehler beim Abrufen der Protokollliste vom Home Server",
|
||||
"The Home Server may be too old to support third party networks": "Der Home Server kann zu alt sein, um Drittanbieter-Netzwerke zu unterstützen",
|
||||
"Directory": "Raum Verzeichnis",
|
||||
"#example:": "#beispiel:",
|
||||
"Search for a room": "Suche einen Raum",
|
||||
"No rooms to show": "Keine Räume zum anzeigen",
|
||||
"World readable": "Jeder kann lesen",
|
||||
"Guests can join": "Gäste können beitreten",
|
||||
"You are not receiving desktop notifications": "Du erhältst keine Desktop Benachrichtigungen",
|
||||
"Enable them now": "Aktiviere diese jetzt",
|
||||
"Add an email address above to configure email notifications": "Füge eine E-Mail Adresse hinzu um Benachrichtigungen via E-Mail zu erhalten",
|
||||
"All notifications are currently disabled for all targets.": "Im Moment sind alle Benachrichtigungen für alle Ziele deaktiviert.",
|
||||
"An error occurred whilst saving your email notification preferences": "Ein Fehler trat auf während deine E-Mail Einstellungen gespeichert wurden",
|
||||
"and remove": "und entfernen",
|
||||
"Can't update user notification settings": "Kann Benutzerdefinierte Einstellungen nicht aktualisieren",
|
||||
"Couldn't find a matching Matrix room": "Kann keinen entsprechenden Matrix Raum finden",
|
||||
"delete the alias": "Lösche den Alias",
|
||||
"Delete the room alias": "Lösche den Raum Alias",
|
||||
"Direct Chat": "Privater Chat",
|
||||
"Drop here to": "Hier ablegen",
|
||||
"Enable audible notifications in web client": "Aktiviere Audio Benachrichtigungen",
|
||||
"Enable desktop notifications": "Aktiviere Desktop Benachrichtigungen",
|
||||
"Enable email notifications": "Aktiviere E-Mail Benachrichtigungen",
|
||||
"Enable notifications for this account": "Aktiviere Benachrichtigungen für diesen Benutzer",
|
||||
"Enter keywords separated by a comma": "Gebe Suchbegriffe getrennt durch Kommata ein",
|
||||
"Error": "Fehler",
|
||||
"Error saving email notification preferences": "Fehler beim Speichern der E-Mail Benachrichtigungseinstellungen",
|
||||
"#example": "#Beispiel",
|
||||
"Failed to": "Konnte nicht",
|
||||
"Failed to add tag ": "Konnte Tag nicht hinzufügen ",
|
||||
"Failed to change settings": "Konnte Einstellungen nicht ändern",
|
||||
"Failed to update keywords": "Konnte Suchbegriff nicht aktualisieren",
|
||||
"Failed to get public room list": "Konnte keine öffentliche Raumliste laden",
|
||||
"Failed to join the room": "Fehler beim Betreten des Raumes",
|
||||
"Failed to remove tag ": "Konnte Tag nicht entfernen ",
|
||||
"Failed to set Direct Message status of room": "Konnte den direkten Benachrichtigungsstatus nicht setzen",
|
||||
"Favourite": "Favorit",
|
||||
"Fetching third party location failed": "Das Abrufen des Drittanbieterstandorts ist fehlgeschlagen",
|
||||
"Forget": "Lösche",
|
||||
"from the directory": "aus dem Verzeichnis",
|
||||
" from room": " aus dem Raum",
|
||||
"Guest users can't invite users. Please register to invite": "Gastnutzer können keine Nutzer einladen. Bitte registriere dich um Nutzer einzuladen",
|
||||
"Keywords": "Suchbegriff",
|
||||
"Leave": "Verlassen",
|
||||
"Low Priority": "Niedrige Priorität",
|
||||
"Noisy": "Laut",
|
||||
"Notification targets": "Benachrichtigungsziel",
|
||||
"Notifications on the following keywords follow rules which can’t be displayed here": "Benachrichtigungen zu folgenden Stichwörtern folgen Regeln, die hier nicht angezeigt werden können",
|
||||
"Notify for all other messages/rooms": "Benachrichtigung für alle anderen Mitteilungen/ Räume",
|
||||
"Operation failed": "Ausführung fehlgeschlagen",
|
||||
"Reject": "ablehnen",
|
||||
"Remove": "Entferne",
|
||||
"remove": "Entferner",
|
||||
"Remove from Directory": "Vom Raum Verzeichnis entfernen",
|
||||
"Riot does not know how to join a room on this network": "Riot weiß nicht, wie es einem Raum auf diesem Netzwerk beitreten soll",
|
||||
"Room not found": "Raum nicht gefunden",
|
||||
"There are advanced notifications which are not shown here": "Es existieren erweiterte Benachrichtigungen, welche hier nicht angezeigt werden",
|
||||
"The server may be unavailable or overloaded": "Der Server ist vermutlich nicht erreichbar oder überlastet",
|
||||
"This room is inaccessible to guests. You may be able to join if you register": "Dieser Raum ist nicht verfügbar für Gäste. Vermutlich klappt es wenn du dich anmeldest",
|
||||
"Unable to fetch notification target list": "Nicht möglich die Zielliste für Benachrichtigungen zu erhalten",
|
||||
"Unable to join network": "Es ist nicht möglich, dem Netzwerk beizutreten",
|
||||
"unknown error code": "Unbekannter Fehlercode",
|
||||
"Unnamed room": "Unbenannter Raum",
|
||||
"Notify me for anything else": "Benachrichtige mich für alles andere",
|
||||
"Off": "Aus",
|
||||
"On": "An",
|
||||
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du hast sie eventuell auf einem anderen Client als Riot konfiguriert. Sie sind in Riot nicht anpassbar gelten aber trotzdem",
|
||||
" to room": " an Raum",
|
||||
"Drop here to %(verb)s": "%(verb)s hierher ziehen",
|
||||
"All messages": "Alle Nachrichten",
|
||||
"All messages (loud)": "Alle Nachrichten (laut)",
|
||||
"Cancel Sending": "Senden abbrechen",
|
||||
"Close": "Schließen",
|
||||
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Soll der Raumalias %(alias)s gelöscht und der %(name)s aus dem Verzeichnis entfernt werden?",
|
||||
"Download this file": "Datei Herunterladen",
|
||||
"Failed to add tag %(tagName)s to room": "Das Hinzufügen des Tags %(tagName)s für den Raum ist fehlgeschlagen",
|
||||
"Failed to forget room %(errCode)s": "Das Entfernen des Raums %(errCode)s aus deiner Liste ist fehlgeschlagen",
|
||||
"Failed to remove tag %(prevTag)s from room": "Das Entfernen des Tags %(prevTag)s für den Raum ist fehlgeschlagen",
|
||||
"Failed to set direct chat tag": "Fehler beim setzen der Direct Chat Kennzeichnung",
|
||||
"Mentions only": "Nur, wenn du erwähnt wirst",
|
||||
"Mute": "Lautlos",
|
||||
"Permalink": "Permanenter Link",
|
||||
"Quote": "Zitat",
|
||||
"Redact": "Redaktionell entfernen",
|
||||
"Remove %(name)s from the directory?": "Soll der Raum %(name)s aus dem Verzeichnis entfernt werden?",
|
||||
"remove %(name)s from the directory": "entferne %(name)s aus dem Verzeichnis",
|
||||
"Resend": "Erneut Senden",
|
||||
"Source URL": "Quell-URL",
|
||||
"Unable to look up room ID from server": "Es ist nicht möglich, die Raum-ID auf dem Server nachzuschlagen",
|
||||
"Unhide Preview": "Vorschau wieder anzeigen",
|
||||
"Uploaded on %(date)s by %(user)s": "Hochgeladen am %(date)s durch %(user)s",
|
||||
"View Decrypted Source": "Entschlüsselten Quellcode ansehen",
|
||||
"View Source": "Quellcode ansehen",
|
||||
"You cannot delete this image. (%(code)s)": "Das Bild kann nicht gelöscht werden. (%(code)s)",
|
||||
"You cannot delete this message. (%(code)s)": "Die Nachricht kann nicht gelöscht werden. (%(code)s)",
|
||||
"Today": "Heute",
|
||||
"Wednesday": "Mittwoch",
|
||||
"Thursday": "Donnerstag",
|
||||
"Friday": "Freitag",
|
||||
"Saturday": "Samstag",
|
||||
"Tuesday": "Dienstag",
|
||||
"Sunday": "Sonntag",
|
||||
"Monday": "Montag",
|
||||
"Yesterday": "Gestern",
|
||||
"Welcome page": "Willkommensseite"
|
||||
}
|
120
src/i18n/en_EN.json
Normal file
120
src/i18n/en_EN.json
Normal file
|
@ -0,0 +1,120 @@
|
|||
{
|
||||
"Add an email address above to configure email notifications": "Add an email address above to configure email notifications",
|
||||
"All messages": "All messages",
|
||||
"All messages (loud)": "All messages (loud)",
|
||||
"All notifications are currently disabled for all targets.": "All notifications are currently disabled for all targets.",
|
||||
"An error occurred whilst saving your email notification preferences": "An error occurred whilst saving your email notification preferences",
|
||||
"Call invitation": "Call invitation",
|
||||
"Cancel Sending": "Cancel Sending",
|
||||
"Can't update user notification settings": "Can't update user notification settings",
|
||||
"Close": "Close",
|
||||
"Create new room": "Create new room",
|
||||
"Couldn't find a matching Matrix room": "Couldn't find a matching Matrix room",
|
||||
"Custom Server Options": "Custom Server Options",
|
||||
"delete the alias": "delete the alias",
|
||||
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Delete the room alias %(alias)s and remove %(name)s from the directory?",
|
||||
"Direct Chat": "Direct Chat",
|
||||
"Directory": "Directory",
|
||||
"Dismiss": "Dismiss",
|
||||
"Download this file": "Download this file",
|
||||
"Drop here to %(verb)s": "Drop here to %(verb)s",
|
||||
"Enable audible notifications in web client": "Enable audible notifications in web client",
|
||||
"Enable desktop notifications": "Enable desktop notifications",
|
||||
"Enable email notifications": "Enable email notifications",
|
||||
"Enable notifications for this account": "Enable notifications for this account",
|
||||
"Enable them now": "Enable them now",
|
||||
"Enter keywords separated by a comma": "Enter keywords separated by a comma",
|
||||
"Error": "Error",
|
||||
"Error saving email notification preferences": "Error saving email notification preferences",
|
||||
"#example": "#example",
|
||||
"Failed to": "Failed to",
|
||||
"Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room",
|
||||
"Failed to change settings": "Failed to change settings",
|
||||
"Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s",
|
||||
"Failed to update keywords": "Failed to update keywords",
|
||||
"Failed to get protocol list from Home Server": "Failed to get protocol list from Home Server",
|
||||
"Failed to get public room list": "Failed to get public room list",
|
||||
"Failed to join the room": "Failed to join the room",
|
||||
"Failed to remove tag %(prevTag)s from room": "Failed to remove tag %(prevTag)s from room",
|
||||
"Failed to set direct chat tag": "Failed to set direct chat tag",
|
||||
"Failed to set Direct Message status of room": "Failed to set Direct Message status of room",
|
||||
"Favourite": "Favourite",
|
||||
"Fetching third party location failed": "Fetching third party location failed",
|
||||
"Files": "Files",
|
||||
"Filter room names": "Filter room names",
|
||||
"Forget": "Forget",
|
||||
" from room": " from room",
|
||||
"Guests can join": "Guests can join",
|
||||
"Guest users can't invite users. Please register to invite": "Guest users can't invite users. Please register to invite",
|
||||
"Invite to this room": "Invite to this room",
|
||||
"Keywords": "Keywords",
|
||||
"Leave": "Leave",
|
||||
"Low Priority": "Low Priority",
|
||||
"Members": "Members",
|
||||
"Mentions only": "Mentions only",
|
||||
"Messages containing my display name": "Messages containing my display name",
|
||||
"Messages containing my user name": "Messages containing my user name",
|
||||
"Messages in group chats": "Messages in group chats",
|
||||
"Messages in one-to-one chats": "Messages in one-to-one chats",
|
||||
"Messages sent by bot": "Messages sent by bot",
|
||||
"more": "more",
|
||||
"Mute": "Mute",
|
||||
"No rooms to show": "No rooms to show",
|
||||
"Noisy": "Noisy",
|
||||
"Notification targets": "Notification targets",
|
||||
"Notifications": "Notifications",
|
||||
"Notifications on the following keywords follow rules which can’t be displayed here": "Notifications on the following keywords follow rules which can’t be displayed here",
|
||||
"Notify for all other messages/rooms": "Notify for all other messages/rooms",
|
||||
"Notify me for anything else": "Notify me for anything else",
|
||||
"Off": "Off",
|
||||
"On": "On",
|
||||
"Operation failed": "Operation failed",
|
||||
"Permalink": "Permalink",
|
||||
"Please Register": "Please Register",
|
||||
"powered by Matrix": "powered by Matrix",
|
||||
"Quote": "Quote",
|
||||
"Redact": "Redact",
|
||||
"Reject": "Reject",
|
||||
"Remove %(name)s from the directory?": "Remove %(name)s from the directory?",
|
||||
"Remove": "Remove",
|
||||
"remove %(name)s from the directory": "remove %(name)s from the directory",
|
||||
"Remove from Directory": "Remove from Directory",
|
||||
"Resend": "Resend",
|
||||
"Riot does not know how to join a room on this network": "Riot does not know how to join a room on this network",
|
||||
"Room directory": "Room directory",
|
||||
"Room not found": "Room not found",
|
||||
"Search for a room": "Search for a room",
|
||||
"Settings": "Settings",
|
||||
"Source URL": "Source URL",
|
||||
"Start chat": "Start chat",
|
||||
"The Home Server may be too old to support third party networks": "The Home Server may be too old to support third party networks",
|
||||
"There are advanced notifications which are not shown here": "There are advanced notifications which are not shown here",
|
||||
"The server may be unavailable or overloaded": "The server may be unavailable or overloaded",
|
||||
"This room is inaccessible to guests. You may be able to join if you register": "This room is inaccessible to guests. You may be able to join if you register",
|
||||
" to room": " to room",
|
||||
"Unable to fetch notification target list": "Unable to fetch notification target list",
|
||||
"Unable to join network": "Unable to join network",
|
||||
"Unable to look up room ID from server": "Unable to look up room ID from server",
|
||||
"Unhide Preview": "Unhide Preview",
|
||||
"unknown error code": "unknown error code",
|
||||
"Unnamed room": "Unnamed room",
|
||||
"Uploaded on %(date)s by %(user)s": "Uploaded on %(date)s by %(user)s",
|
||||
"View Decrypted Source": "View Decrypted Source",
|
||||
"View Source": "View Source",
|
||||
"When I'm invited to a room": "When I'm invited to a room",
|
||||
"World readable": "World readable",
|
||||
"You cannot delete this image. (%(code)s)": "You cannot delete this image. (%(code)s)",
|
||||
"You cannot delete this message. (%(code)s)": "You cannot delete this message. (%(code)s)",
|
||||
"You are not receiving desktop notifications": "You are not receiving desktop notifications",
|
||||
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply",
|
||||
"Sunday": "Sunday",
|
||||
"Monday": "Monday",
|
||||
"Tuesday": "Tuesday",
|
||||
"Wednesday": "Wednesday",
|
||||
"Thursday": "Thursday",
|
||||
"Friday": "Friday",
|
||||
"Saturday": "Saturday",
|
||||
"Today": "Today",
|
||||
"Yesterday": "Yesterday",
|
||||
"Welcome page": "Welcome page"
|
||||
}
|
66
src/i18n/fr.json
Normal file
66
src/i18n/fr.json
Normal file
|
@ -0,0 +1,66 @@
|
|||
{
|
||||
"Add an email address above to configure email notifications": "Ajouter une adresse email pour la configuration des notifications par email",
|
||||
"All messages": "Tous les messages",
|
||||
"All messages (loud)": "Tous les messages (fort)",
|
||||
"All notifications are currently disabled for all targets.": "Toutes les notification sont désactivées pour tous les appareils.",
|
||||
"An error occurred whilst saving your email notification preferences": "Une erreur est survenue lors de la sauvegarde de vos préférences de notifications mails",
|
||||
"Cancel Sending": "Annuler Envois",
|
||||
"Can't update user notification settings": "Impossible de mettre à jour les notifications utilisateur",
|
||||
"Close": "Fermer",
|
||||
"Create new room": "Créer un nouveau salon",
|
||||
"Couldn't find a matching Matrix room": "Impossible de trouver un salon Matrix",
|
||||
"Custom Server Options": "Options de Serveur Personnalisé",
|
||||
"delete the alias": "Supprimer l'alias",
|
||||
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Supprimer le salon alias %(alias)s et supprimer %(name)s du répertoire?",
|
||||
"Direct Chat": "Chat direct",
|
||||
"Directory": "Dossier",
|
||||
"Dismiss": "Rejeter",
|
||||
"Download this file": "Télécharger ce fichier",
|
||||
"Drop here to %(verb)s": "Déposer ici pour %(verb)s",
|
||||
"Enable audible notifications in web client": "Activer les notifications sonores pour le client web",
|
||||
"Enable desktop notifications": "Activer les notifications de bureau",
|
||||
"Enable email notifications": "Activer les notifications par e-mail",
|
||||
"Enable notifications for this account": "Activer les notifications pour ce compte",
|
||||
"Enable them now": "Les activer maintenant",
|
||||
"Enter keywords separated by a comma": "Entrez les mots clés séparés par une virgule",
|
||||
"Error": "Erreur",
|
||||
"Error saving email notification preferences": "Erreur lors de la sauvegarde des notifications par email",
|
||||
"#example": "#exemple",
|
||||
"Failed to": "Echec pour",
|
||||
"Failed to add tag %(tagName)s to room": "Echec lors de l'ajout du tag %(tagName)s pour le salon",
|
||||
"Failed to change settings": "Changement de configuration échouée",
|
||||
"Failed to forget room %(errCode)s": "Echec lors de l'oublie du salon %(errCode)s",
|
||||
"Failed to update keywords": "Échec dans la mise à jour des mots clés",
|
||||
"Failed to get protocol list from Home Server": "Echec lors de la récupération depuis le serveur maison",
|
||||
"Failed to get public room list": "Echec lors de la récupération de la liste des salons publics",
|
||||
"Failed to join the room": "Échec pour joindre le salon",
|
||||
"Failed to remove tag %(prevTag)s from room": "Échec dans la suppression de l’étiquette %(prevTag)s du salon",
|
||||
"Failed to set direct chat tag": "Échec dans l'attribution d'une étiquette dans le chat direct",
|
||||
"Favourite": "Favouris",
|
||||
"Operation failed": "L'opération a échoué",
|
||||
"Please Register": "Veuillez vous enregistrer",
|
||||
"powered by Matrix": "propulsé par Matrix",
|
||||
"Quote": "Citer",
|
||||
"Redact": "Rédiger",
|
||||
"Reject": "Rejeter",
|
||||
"Remove %(name)s from the directory?": "Supprimer %(name)s du répertoire?",
|
||||
"Remove": "Supprimer",
|
||||
"Resend": "Renvoyer",
|
||||
"Settings": "Paramètres",
|
||||
"Start chat": "Démarrer la discussion",
|
||||
"unknown error code": "Code erreur inconnu",
|
||||
"View Source": "Voir la Source",
|
||||
"You cannot delete this image. (%(code)s)": "Vous ne pouvez pas supprimer cette image. (%(code)s)",
|
||||
"You cannot delete this message. (%(code)s)": "Vous ne pouvez pas supprimer ce message. (%(code)s)",
|
||||
"You are not receiving desktop notifications": "Vous ne recevez pas les notifications sur votre bureau",
|
||||
"Sunday": "Dimanche",
|
||||
"Monday": "Lundi",
|
||||
"Tuesday": "Mardi",
|
||||
"Wednesday": "Mercredi",
|
||||
"Thursday": "Jeudi",
|
||||
"Friday": "Vendredi",
|
||||
"Saturday": "Samedi",
|
||||
"Today": "Aujourd'hui",
|
||||
"Yesterday": "Hier",
|
||||
"Welcome page": "Page de bienvenue"
|
||||
}
|
5
src/i18n/ml.json
Normal file
5
src/i18n/ml.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"Add an email address above to configure email notifications": "ഇ മെയില് അറിയിപ്പുകൾ ലഭിക്കാന് മുകളില് ഇ-മെയില് വിലാസം നല്കൂ",
|
||||
"All messages": "എല്ലാ സന്ദേശങ്ങളും",
|
||||
"All messages (loud)": "എല്ലാ സന്ദേശങ്ങളും (ഉച്ചത്തിൽ)"
|
||||
}
|
1
src/i18n/pl.json
Normal file
1
src/i18n/pl.json
Normal file
|
@ -0,0 +1 @@
|
|||
{}
|
116
src/i18n/pt.json
Normal file
116
src/i18n/pt.json
Normal file
|
@ -0,0 +1,116 @@
|
|||
{
|
||||
"Add an email address above to configure email notifications": "Adicione um endereço de email acima para configurar as notificações por email",
|
||||
"All messages": "Todas as mensagens",
|
||||
"All messages (loud)": "Todas as mensagens (alto)",
|
||||
"All notifications are currently disabled for all targets": "Todas as notificações estão atualmente desativadas para todos os destinos",
|
||||
"An error occurred whilst saving your email notification preferences": "Um erro ocorreu enquanto salvava suas preferências de notificação por email",
|
||||
"Cancel Sending": "Cancelar o envio",
|
||||
"Can't update user notification settings": "Não é possível atualizar as preferências de notificação",
|
||||
"Close": "Fechar",
|
||||
"Create new room": "Criar nova sala",
|
||||
"Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix",
|
||||
"Custom Server Options": "Opções de customização do servidor",
|
||||
"delete the alias": "apagar o apelido da sala",
|
||||
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(nome)s da lista pública?",
|
||||
"Direct Chat": "Conversa pessoal",
|
||||
"Directory": "Diretório",
|
||||
"Dismiss": "Encerrar",
|
||||
"Download this file": "Baixar este arquivo",
|
||||
"Drop here to %(verb)s": "Arraste aqui para %(verb)s",
|
||||
"Enable audible notifications in web client": "Ativar notificações de áudio no cliente web",
|
||||
"Enable desktop notifications": "Ativar notificações no desktop",
|
||||
"Enable email notifications": "Ativar notificações por email",
|
||||
"Enable notifications for this account": "Ativar notificações para esta conta",
|
||||
"Enable them now": "Habilitar agora",
|
||||
"Enter keywords separated by a comma": "Coloque cada palavras-chave separada por vírgula",
|
||||
"Error": "Erro",
|
||||
"Error saving email notification preferences": "Erro ao salvar as preferências de notificação por email",
|
||||
"#example:": "#exemplo",
|
||||
"Failed to": "Falha ao",
|
||||
"Failed to add tag %(tagName)s to room": "Falha ao adicionar %(tagName)s à sala",
|
||||
"Failed to change settings": "Falha ao mudar as preferências",
|
||||
"Failed to forget room %(errCode)s": "Falha ao esquecer a sala %(errCode)s",
|
||||
"Failed to update keywords": "Falha ao alterar as palavras-chave",
|
||||
"Failed to get protocol list from Home Server": "Falha em acessar a lista de protocolos do servidor padrão",
|
||||
"Failed to get public room list": "Falha ao acessar a lista pública de salas",
|
||||
"Failed to join the room": "Falha ao entrar na sala",
|
||||
"Failed to remove tag %(tag)s from room": "Falha ao remover a palavra-chave %(tag)s da sala",
|
||||
"Failed to set direct chat tag": "Falha ao definir conversa como pessoal",
|
||||
"Failed to set Direct Message status of room": "Falha em definr a mensagem de status da sala",
|
||||
"Favourite": "Favorito",
|
||||
"Fetching third party location failed": "Falha ao acessar localização de terceiros",
|
||||
"Files": "Arquivos",
|
||||
"Filter room names": "Filtrar salas por título",
|
||||
"Forget": "Esquecer",
|
||||
" from room": " da sala",
|
||||
"Guests can join": "Convidados podem entrar",
|
||||
"Guest users can't invite users. Please register to invite": "Usuários convidados não podem convidar outros usuários. Por gentileza se registre para enviar convites",
|
||||
"Invite to this room": "Convidar para esta sala",
|
||||
"Keywords": "Palavras-chave",
|
||||
"Leave": "Sair",
|
||||
"Low Priority": "Baixa prioridade",
|
||||
"Members": "Membros",
|
||||
"Mentions only": "Apenas menções",
|
||||
"Mute": "Mudo",
|
||||
"No rooms to show": "Não existem salas a serem exibidas",
|
||||
"Noisy": "Barulhento",
|
||||
"Notification targets": "Alvos de notificação",
|
||||
"Notifications": "Notificações",
|
||||
"Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui",
|
||||
"Notify for all other messages/rooms": "Notificar para todas as outras mensagens e salas",
|
||||
"Notify me for anything else": "Notificar-me sobre qualquer outro evento",
|
||||
"Off": "Desativado",
|
||||
"On": "Ativado",
|
||||
"Operation failed": "A operação falhou",
|
||||
"Permalink": "Link permanente",
|
||||
"Please Register": "Por favor, cadastre-se",
|
||||
"powered by Matrix": "distribuído por Matrix",
|
||||
"Quote": "Citar",
|
||||
"Redact": "Remover",
|
||||
"Reject": "Rejeitar",
|
||||
"Remove": "Remover",
|
||||
"Remove %(name)s from the directory?": "Remover %(name)s da lista pública de salas?",
|
||||
"remove %(name)s from the directory": "remover %(name)s da lista pública de salas",
|
||||
"Remove from Directory": "Remover da lista pública de salas",
|
||||
"Resend": "Reenviar",
|
||||
"Riot does not know how to join a room on this network": "O sistema não sabe como entrar na sala desta rede",
|
||||
"Room directory": "Lista de salas públicas",
|
||||
"Room not found": "Sala não encontrada",
|
||||
"Search for a room": "Procurar por uma sala",
|
||||
"Settings": "Configurações",
|
||||
"Source URL": "URL fonte",
|
||||
"Start chat": "Começar conversa",
|
||||
"The Home Server may be too old to support third party networks": "O servidor pode ser muito antigo para suportar redes de terceiros",
|
||||
"There are advanced notifications which are not shown here": "Existem opções avançadas que não são exibidas aqui",
|
||||
"The server may be unavailable or overloaded": "O servidor pode estar inacessível ou sobrecarregado",
|
||||
"This room is inaccessible to guests. You may be able to join if you register": "Esta sala é inacessível para convidados. Você poderá entrar caso se registre",
|
||||
" to room": " na sala",
|
||||
"Unable to fetch notification target list": "Não foi possível obter a lista de alvos de notificação",
|
||||
"Unable to join network": "Não foi possível conectar na rede",
|
||||
"Unable to look up room ID from server": "Não foi possivel buscar identificação da sala no servidor",
|
||||
"Unhide Preview": "Mostrar a pré-visualização novamente",
|
||||
"unknown error code": "código de erro desconhecido",
|
||||
"Unnamed room": "Sala sem nome",
|
||||
"Uploaded on %(date)s by %(user)s": "Enviada em %(date)s por %(user)s",
|
||||
"View Decrypted Source": "Ver a fonte descriptografada",
|
||||
"View Source": "Ver a fonte",
|
||||
"World readable": "Público",
|
||||
"You cannot delete this image. (%(code)s)": "Você não pode apagar esta imagem. (%(code)s)",
|
||||
"You cannot delete this message. (%(code)s)": "Você não pode apagar esta mensagem. (%(code)s)",
|
||||
"You are not receiving desktop notifications": "Você não está recebendo notificações desktop",
|
||||
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Você pode te-las configurado em outro cliente além do Riot. Você não pode ajustá-las no Riot, mas ainda assim elas se aplicam aqui",
|
||||
"Sunday": "Domingo",
|
||||
"Monday": "Segunda",
|
||||
"Tuesday": "Terça",
|
||||
"Wednesday": "Quarta",
|
||||
"Thursday": "Quinta",
|
||||
"Friday": "Sexta",
|
||||
"Saturday": "Sábado",
|
||||
"Today": "Hoje",
|
||||
"Yesterday": "Ontem",
|
||||
"All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os recipientes.",
|
||||
"#example": "#exemplo",
|
||||
"Failed to remove tag %(prevTag)s from room": "Não foi possível remover a marcação %(prevTag)s desta sala",
|
||||
"Notifications on the following keywords follow rules which can’t be displayed here": "As notificações sobre as palavras-chave abaixo seguem regras que não podem ser mostradas aqui",
|
||||
"Welcome page": "Página de boas vindas"
|
||||
}
|
124
src/i18n/pt_BR.json
Normal file
124
src/i18n/pt_BR.json
Normal file
|
@ -0,0 +1,124 @@
|
|||
{
|
||||
"Add an email address above to configure email notifications": "Insira um endereço de email no campo acima para configurar suas notificações por email",
|
||||
"All messages": "Todas as mensagens",
|
||||
"All messages (loud)": "Todas as mensagens (alto)",
|
||||
"All notifications are currently disabled for all targets": "Todas as notificações estão atualmente desativadas para todos os destinos",
|
||||
"An error occurred whilst saving your email notification preferences": "Um erro ocorreu enquanto o sistema estava salvando suas preferências de notificação por email",
|
||||
"Call invitation": "Convite para chamada",
|
||||
"Cancel Sending": "Cancelar o envio",
|
||||
"Can't update user notification settings": "Não é possível atualizar as preferências de notificação",
|
||||
"Close": "Fechar",
|
||||
"Create new room": "Criar nova sala",
|
||||
"Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix",
|
||||
"Custom Server Options": "Opções de personalização do servidor",
|
||||
"delete the alias": "apagar o apelido da sala",
|
||||
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(nome)s da lista pública?",
|
||||
"Direct Chat": "Conversa pessoal",
|
||||
"Directory": "Diretório",
|
||||
"Dismiss": "Encerrar",
|
||||
"Download this file": "Baixar este arquivo",
|
||||
"Drop here to %(verb)s": "Arraste aqui para %(verb)s",
|
||||
"Enable audible notifications in web client": "Ativar notificações de áudio no cliente web",
|
||||
"Enable desktop notifications": "Ativar notificações no desktop",
|
||||
"Enable email notifications": "Ativar notificações por email",
|
||||
"Enable notifications for this account": "Ativar notificações para esta conta",
|
||||
"Enable them now": "Habilitar agora",
|
||||
"Enter keywords separated by a comma": "Coloque cada palavras-chave separada por vírgula",
|
||||
"Error": "Erro",
|
||||
"Error saving email notification preferences": "Erro ao salvar as preferências de notificação por email",
|
||||
"#example:": "#exemplo",
|
||||
"Failed to": "Falha ao",
|
||||
"Failed to add tag %(tagName)s to room": "Falha ao adicionar %(tagName)s à sala",
|
||||
"Failed to change settings": "Falhou ao mudar as preferências",
|
||||
"Failed to forget room %(errCode)s": "Falhou ao esquecer a sala %(errCode)s",
|
||||
"Failed to update keywords": "Falhou ao alterar as palavras-chave",
|
||||
"Failed to get protocol list from Home Server": "Falha em acessar a lista de protocolos do servidor padrão",
|
||||
"Failed to get public room list": "Falha ao acessar a lista pública de salas",
|
||||
"Failed to join the room": "Falhou ao entrar na sala",
|
||||
"Failed to remove tag %(tag)s from room": "Falha ao remover a palavra-chave %(tag)s da sala",
|
||||
"Failed to set direct chat tag": "Falha ao definir conversa como pessoal",
|
||||
"Failed to set Direct Message status of room": "Falha em definir a mensagem de status da sala",
|
||||
"Favourite": "Favorito",
|
||||
"Fetching third party location failed": "Falha ao acessar localização de terceiros",
|
||||
"Files": "Arquivos",
|
||||
"Filter room names": "Filtrar salas por título",
|
||||
"Forget": "Esquecer",
|
||||
" from room": " da sala",
|
||||
"Guests can join": "Convidados podem entrar",
|
||||
"Guest users can't invite users. Please register to invite": "Usuários convidados não podem convidar outros usuários. Por gentileza se registre para enviar convites",
|
||||
"Invite to this room": "Convidar para esta sala",
|
||||
"Keywords": "Palavras-chave",
|
||||
"Leave": "Sair",
|
||||
"Low Priority": "Baixa prioridade",
|
||||
"Members": "Membros",
|
||||
"Mentions only": "Apenas menções",
|
||||
"Messages containing my display name": "Mensagens contendo meu nome público",
|
||||
"Messages containing my user name": "Mensagens contendo meu nome de usuário",
|
||||
"Messages in group chats": "Mensagens em salas",
|
||||
"Messages in one-to-one chats": "Mensagens em conversas pessoais",
|
||||
"Messages sent by bot": "Mensagens enviadas por bots",
|
||||
"more": "ver mais",
|
||||
"Mute": "Mudo",
|
||||
"No rooms to show": "Não existem salas a serem exibidas",
|
||||
"Noisy": "Barulhento",
|
||||
"Notification targets": "Alvos de notificação",
|
||||
"Notifications": "Notificações",
|
||||
"Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui",
|
||||
"Notify for all other messages/rooms": "Notificar para todas as outras mensagens e salas",
|
||||
"Notify me for anything else": "Notificar-me sobre qualquer outro evento",
|
||||
"Off": "Desativado",
|
||||
"On": "Ativado",
|
||||
"Operation failed": "A operação falhou",
|
||||
"Permalink": "Link permanente",
|
||||
"Please Register": "Por favor, cadastre-se",
|
||||
"powered by Matrix": "distribuído por Matrix",
|
||||
"Quote": "Citar",
|
||||
"Redact": "Remover",
|
||||
"Reject": "Rejeitar",
|
||||
"Remove": "Remover",
|
||||
"Remove %(name)s from the directory?": "Remover %(name)s da lista pública de salas?",
|
||||
"remove %(name)s from the directory": "remover %(name)s da lista pública de salas",
|
||||
"Remove from Directory": "Remover da lista pública de salas",
|
||||
"Resend": "Reenviar",
|
||||
"Riot does not know how to join a room on this network": "O sistema não sabe como entrar na sala desta rede",
|
||||
"Room directory": "Lista de salas públicas",
|
||||
"Room not found": "Sala não encontrada",
|
||||
"Search for a room": "Procurar por uma sala",
|
||||
"Settings": "Configurações",
|
||||
"Source URL": "URL fonte",
|
||||
"Start chat": "Começar conversa",
|
||||
"The Home Server may be too old to support third party networks": "O servidor pode ser muito antigo para suportar redes de terceiros",
|
||||
"There are advanced notifications which are not shown here": "Existem opções avançadas que não são exibidas aqui",
|
||||
"The server may be unavailable or overloaded": "O servidor pode estar inacessível ou sobrecarregado",
|
||||
"This room is inaccessible to guests. You may be able to join if you register": "Esta sala é inacessível para convidados. Você poderá entrar caso se registre",
|
||||
" to room": " para sala",
|
||||
"Unable to fetch notification target list": "Não foi possível obter a lista de alvos de notificação",
|
||||
"Unable to join network": "Não foi possível conectar na rede",
|
||||
"Unable to look up room ID from server": "Não foi possível buscar identificação da sala no servidor",
|
||||
"Unhide Preview": "Mostrar a pré-visualização novamente",
|
||||
"unknown error code": "código de erro desconhecido",
|
||||
"Unnamed room": "Sala sem nome",
|
||||
"Uploaded on %(date)s by %(user)s": "Enviada em %(date)s por %(user)s",
|
||||
"View Decrypted Source": "Ver a fonte descriptografada",
|
||||
"View Source": "Ver a fonte",
|
||||
"When I'm invited to a room": "Quando sou convidada(o) a uma sala",
|
||||
"World readable": "Público",
|
||||
"You cannot delete this image. (%(code)s)": "Você não pode apagar esta imagem. (%(code)s)",
|
||||
"You cannot delete this message. (%(code)s)": "Você não pode apagar esta mensagem. (%(code)s)",
|
||||
"You are not receiving desktop notifications": "Você não está recebendo notificações desktop",
|
||||
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Você pode te-las configurado em outro cliente além do Riot. Você não pode ajustá-las no Riot, mas ainda assim elas se aplicam aqui",
|
||||
"Sunday": "Domingo",
|
||||
"Monday": "Segunda",
|
||||
"Tuesday": "Terça",
|
||||
"Wednesday": "Quarta",
|
||||
"Thursday": "Quinta",
|
||||
"Friday": "Sexta",
|
||||
"Saturday": "Sábado",
|
||||
"Today": "Hoje",
|
||||
"Yesterday": "Ontem",
|
||||
"All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os destinatários.",
|
||||
"#example": "#exemplo",
|
||||
"Failed to remove tag %(prevTag)s from room": "Não foi possível remover a marcação %(prevTag)s desta sala",
|
||||
"Notifications on the following keywords follow rules which can’t be displayed here": "As notificações sobre as palavras-chave abaixo seguem regras que não podem ser mostradas aqui",
|
||||
"Welcome page": "Página de boas vindas"
|
||||
}
|
119
src/i18n/ru.json
Normal file
119
src/i18n/ru.json
Normal file
|
@ -0,0 +1,119 @@
|
|||
{
|
||||
"Add an email address above to configure email notifications": "Добавьте email адресс для настройки оповещений",
|
||||
"All notifications are currently disabled for all targets.": "Все оповещения отключены.",
|
||||
"An error occurred whilst saving your email notification preferences": "Возникла ошибка при сохранении настроек оповещения вашего email",
|
||||
"and remove": "и удалить",
|
||||
"Can't update user notification settings": "Не возможно обновить пользовательские настройки оповещения",
|
||||
"Create new room": "Создать комнату",
|
||||
"Couldn't find a matching Matrix room": "Не возможно найти подходящую Матрикс комнату",
|
||||
"Custom Server Options": "Настройки пользовательского сервера",
|
||||
"delete the alias": "удалить привязку",
|
||||
"Delete the room alias": "Удалить привязку комнаты",
|
||||
"Direct Chat": "Персональное сообщение",
|
||||
"Directory": "Каталог",
|
||||
"Dismiss": "Отелонено",
|
||||
"Drop here to": "Перетащите сюда",
|
||||
"Enable audible notifications in web client": "Включить звуковые оповещения в веб клиенте",
|
||||
"Enable desktop notifications": "Включить оповещения на рабочем столе",
|
||||
"Enable email notifications": "Включить email оповещения",
|
||||
"Enable notifications for this account": "Включить оповещения для этого аккаунта",
|
||||
"Enable them now": "Включить сейчас",
|
||||
"Enter keywords separated by a comma": "Введите ключевые слова, разделенные запятой",
|
||||
"Error": "Ошибка",
|
||||
"Error saving email notification preferences": "Ошибка сохранения настроек email оповещений",
|
||||
"#example": "#пример",
|
||||
"Failed to": "Не удалось",
|
||||
"Failed to add tag ": "Не удалось добавить тег ",
|
||||
"Failed to change settings": "Не удалось изменить настройки",
|
||||
"Failed to update keywords": "Не удалось обновить ключевые слова",
|
||||
"Failed to get protocol list from Home Server": "Не удалось получить список протоколов с Пользовательского Сервера",
|
||||
"Failed to get public room list": "Не удалось получить список публичных комнат",
|
||||
"Failed to join the room": "Не удалось присоединиться к комнате",
|
||||
"Failed to remove tag ": "Не удалось удалить тег ",
|
||||
"Failed to set Direct Message status of room": "Не удалось задать статус комнаты Персональное Сообщение",
|
||||
"Favourite": "Фаворит",
|
||||
"Fetching third party location failed": "Не удалось получить местоположение",
|
||||
"Files": "Файлы",
|
||||
"Filter room names": "Отфильтровать по названию комнаты",
|
||||
"Forget": "Забыть",
|
||||
"from the directory": "из каталога",
|
||||
" from room": " из комнаты",
|
||||
"Guests can join": "Гость может присоединиться",
|
||||
"Guest users can't invite users. Please register to invite": "Гость не может приглашать пользователей. Зарегистрируйтесь для приглошений",
|
||||
"Invite to this room": "Пригласить в эту комнату",
|
||||
"Keywords": "Ключевые слова",
|
||||
"Leave": "Покинуть",
|
||||
"Low Priority": "Низкий приоритет",
|
||||
"Members": "Пользователи",
|
||||
"No rooms to show": "Нет комнат для отображения",
|
||||
"Noisy": "Шумный",
|
||||
"Notification targets": "Цели уведомления",
|
||||
"Notifications": "Уведомления",
|
||||
"Notifications on the following keywords follow rules which can’t be displayed here": "Уведомления по следующим ключевым словам соответствуют правилам, которые нельзя отобразить здесь",
|
||||
"Notify for all other messages/rooms": "Уведомить обо всех других сообщениях/комнатах",
|
||||
"Notify me for anything else": "Уведомить меня обо всем кроме",
|
||||
"Off": "Выключить",
|
||||
"On": "Включить",
|
||||
"Operation failed": "Операция не удалась",
|
||||
"Please Register": "Пожалуйста зарегистрируйтесь",
|
||||
"powered by Matrix": "разработано в Matrix",
|
||||
"Reject": "Отклонить",
|
||||
"Remove": "Удалить",
|
||||
"remove": "удалить",
|
||||
"Remove from Directory": "Удалить из каталога",
|
||||
"Riot does not know how to join a room on this network": "Riot не знает как присоединиться к этой сети",
|
||||
"Room directory": "Каталог комнат",
|
||||
"Room not found": "Комната не найдена",
|
||||
"Search for a room": "Искать комнату",
|
||||
"Settings": "Настройки",
|
||||
"Start chat": "Начать чат",
|
||||
"The Home Server may be too old to support third party networks": "Пользовательский сервер может быть слишком старым для поддержки сторонних сетей",
|
||||
"There are advanced notifications which are not shown here": "TЗдесь представлены расширенные уведомления, которые здесь не показаны",
|
||||
"The server may be unavailable or overloaded": "Возможно, сервер недоступен или перегружен",
|
||||
"This room is inaccessible to guests. You may be able to join if you register": "Эта комната недоступна для гостей. Вы можете присоединиться, если зарегистрируетесь",
|
||||
" to room": " к комнате",
|
||||
"Unable to fetch notification target list": "Не удалось получить список целевых уведомлений",
|
||||
"Unable to join network": "Не возможно присоединиться к сети",
|
||||
"Unable to look up room ID from server": "Не возможно найти ID комнаты на сервере",
|
||||
"unknown error code": "неизвестная ошибка",
|
||||
"Unnamed room": "Комната без названия",
|
||||
"World readable": "Читаем мир",
|
||||
"You are not receiving desktop notifications": "Вы не получаете уведомления на рабочем столе",
|
||||
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Вы могли настроить их в клиенте, отличном от Riot. Вы не можете настроить их в Riot, но они все еще применяются",
|
||||
"All messages": "Все сообщения",
|
||||
"All messages (loud)": "Все сообщения (громко)",
|
||||
"Cancel Sending": "Отмена отправки",
|
||||
"Close": "Закрыть",
|
||||
"Download this file": "Скачать этот файл",
|
||||
"Drop here to %(verb)s": "Вставить сюда для %(verb)s",
|
||||
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Удалить псевдоним комнаты %(alias)s и очистить %(name)s из каталога?",
|
||||
"Failed to add tag %(tagName)s to room": "Не удалось добавить тег %(tagName)s в комнату",
|
||||
"Failed to forget room %(errCode)s": "Не удалось забыть комнату %(errCode)s",
|
||||
"Failed to remove tag %(prevTag)s from room": "Не удалось удалить тег %(prevTag)s из комнаты",
|
||||
"Failed to set direct chat tag": "Не удалось установить прямой чат тег",
|
||||
"Unhide Preview": "Показать пред. просмотр",
|
||||
"Uploaded on %(date)s by %(user)s": "Загружено %(date)s %(user)s",
|
||||
"View Decrypted Source": "Просмотр зашыфрованного источника",
|
||||
"View Source": "Просмотр источника",
|
||||
"You cannot delete this image. (%(code)s)": "Вы не можете удалить это изображение. (%(code)s)",
|
||||
"You cannot delete this message. (%(code)s)": "Вы не можете удалить это сообщение. (%(code)s)",
|
||||
"Sunday": "Воскресенье",
|
||||
"Monday": "Понедельник",
|
||||
"Tuesday": "Вторник",
|
||||
"Wednesday": "Среда",
|
||||
"Thursday": "Четверг",
|
||||
"Friday": "Пятница",
|
||||
"Saturday": "Субота",
|
||||
"Today": "Сегодня",
|
||||
"Yesterday": "Вчера",
|
||||
"Mentions only": "Только упоминание",
|
||||
"Mute": "Беззвучный",
|
||||
"Permalink": "Пстоянная ссылка",
|
||||
"Quote": "Цитата",
|
||||
"Redact": "Удалить",
|
||||
"Remove %(name)s from the directory?": "Удалить %(name)s из каталога?",
|
||||
"remove %(name)s from the directory": "удалить %(name)s из каталога",
|
||||
"Resend": "Переслать снова",
|
||||
"Source URL": "Источник URL",
|
||||
"Welcome page": "Домашняя страница"
|
||||
}
|
|
@ -18,6 +18,7 @@ limitations under the License.
|
|||
|
||||
var StandardActions = require('./StandardActions');
|
||||
var PushRuleVectorState = require('./PushRuleVectorState');
|
||||
import _t from 'counterpart-riot';
|
||||
|
||||
class VectorPushRuleDefinition {
|
||||
constructor(opts) {
|
||||
|
|
|
@ -175,7 +175,8 @@ limitations under the License.
|
|||
}
|
||||
|
||||
.mx_Login_type_dropdown {
|
||||
width: 125px;
|
||||
display: inline-block;
|
||||
min-width: 125px;
|
||||
align-self: flex-end;
|
||||
}
|
||||
|
||||
|
|
|
@ -55,6 +55,9 @@ if (process.env.NODE_ENV !== 'production') {
|
|||
|
||||
var RunModernizrTests = require("./modernizr"); // this side-effects a global
|
||||
var ReactDOM = require("react-dom");
|
||||
// Workaround for broken export
|
||||
import * as counterpart from 'counterpart-riot';
|
||||
var languageHandler = require("matrix-react-sdk/lib/languageHandler");
|
||||
var sdk = require("matrix-react-sdk");
|
||||
var PlatformPeg = require("matrix-react-sdk/lib/PlatformPeg");
|
||||
sdk.loadSkin(require('../component-index'));
|
||||
|
@ -62,6 +65,7 @@ var VectorConferenceHandler = require('../VectorConferenceHandler');
|
|||
var UpdateChecker = require("./updater");
|
||||
var q = require('q');
|
||||
var request = require('browser-request');
|
||||
import Modal from 'matrix-react-sdk/lib/Modal';
|
||||
|
||||
import url from 'url';
|
||||
|
||||
|
@ -214,6 +218,20 @@ function getConfig() {
|
|||
return deferred.promise;
|
||||
}
|
||||
|
||||
|
||||
// This is needed to not load the UserSettingsStore before languages are laoded
|
||||
function getLocalSettings() {
|
||||
const localSettingsString = localStorage.getItem('mx_local_settings') || '{}';
|
||||
return JSON.parse(localSettingsString);
|
||||
}
|
||||
// This is needed to not load the UserSettingsStore before languages are laoded
|
||||
function setLocalSetting(type, value) {
|
||||
const settings = getLocalSettings();
|
||||
settings[type] = value;
|
||||
// FIXME: handle errors
|
||||
localStorage.setItem('mx_local_settings', JSON.stringify(settings));
|
||||
}
|
||||
|
||||
function onLoadCompleted() {
|
||||
// if we did a token login, we're now left with the token, hs and is
|
||||
// url as query params in the url; a little nasty but let's redirect to
|
||||
|
@ -228,8 +246,8 @@ function onLoadCompleted() {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
async function loadApp() {
|
||||
|
||||
const fragparts = parseQsFromFragment(window.location);
|
||||
const params = parseQs(window.location);
|
||||
|
||||
|
@ -263,6 +281,17 @@ async function loadApp() {
|
|||
configError = e;
|
||||
}
|
||||
|
||||
if (!configJson.languages) {
|
||||
let languages;
|
||||
try {
|
||||
languages = await languageHandler.getAllLanguageKeysFromJson();
|
||||
} catch (e) {
|
||||
console.log("couldn't load languages from languages.json: error = "+e);
|
||||
languages = ['en'];
|
||||
}
|
||||
configJson.languages = languages;
|
||||
}
|
||||
|
||||
if (window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser')) {
|
||||
console.log('User has previously accepted risks in using an unsupported browser');
|
||||
validBrowser = true;
|
||||
|
@ -309,4 +338,17 @@ async function loadApp() {
|
|||
}
|
||||
}
|
||||
|
||||
loadApp();
|
||||
function loadLanguage(callback) {
|
||||
const _localSettings = getLocalSettings();
|
||||
var languages = [];
|
||||
if (!_localSettings.hasOwnProperty('language')) {
|
||||
languages = languageHandler.getNormalizedLanguageKeys(languageHandler.getLanguageFromBrowser());
|
||||
}else {
|
||||
languages = languageHandler.getNormalizedLanguageKeys(_localSettings.language);
|
||||
}
|
||||
languageHandler.setLanguage(languages, counterpart);
|
||||
setLocalSetting('language', languages[0]);
|
||||
callback();
|
||||
}
|
||||
|
||||
loadLanguage(loadApp);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue