Merge branch 'develop' into forward_message
|
@ -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 'matrix-react-sdk/lib/languageHandler';
|
||||
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 'matrix-react-sdk/lib/languageHandler';
|
||||
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>;
|
||||
}
|
||||
|
||||
|
@ -198,21 +199,21 @@ module.exports = React.createClass({
|
|||
buttonGroup =
|
||||
<div className="mx_RightPanel_headerButtonGroup">
|
||||
<AccessibleButton className="mx_RightPanel_headerButton"
|
||||
title="Members" onClick={ this.onMemberListButtonClick }>
|
||||
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="Files" onClick={ this.onFileListButtonClick }>
|
||||
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="Notifications" onClick={ this.onNotificationListButtonClick }>
|
||||
title={ _t('Notifications') } onClick={ this.onNotificationListButtonClick }>
|
||||
<div className="mx_RightPanel_headerButton_badge"> </div>
|
||||
<TintableSvg src="img/icons-notifications.svg" width="25" height="25"/>
|
||||
{ notificationsHighlight }
|
||||
|
@ -220,7 +221,7 @@ module.exports = React.createClass({
|
|||
<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>;
|
||||
</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 'matrix-react-sdk/lib/languageHandler';
|
||||
|
||||
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 'matrix-react-sdk/lib/languageHandler';
|
||||
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 'matrix-react-sdk/lib/languageHandler';
|
||||
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 @@ const React = require('react');
|
|||
const MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg');
|
||||
const dis = require('matrix-react-sdk/lib/dispatcher');
|
||||
const sdk = require('matrix-react-sdk');
|
||||
import { _t } from 'matrix-react-sdk/lib/languageHandler';
|
||||
const Modal = require('matrix-react-sdk/lib/Modal');
|
||||
const 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.
|
||||
const 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();
|
||||
},
|
||||
|
@ -130,7 +131,7 @@ module.exports = React.createClass({
|
|||
if (eventStatus === 'not_sent') {
|
||||
resendButton = (
|
||||
<div className="mx_MessageContextMenu_field" onClick={this.onResendClick}>
|
||||
Resend
|
||||
{ _t('Resend') }
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -138,7 +139,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>
|
||||
);
|
||||
}
|
||||
|
@ -146,7 +147,7 @@ 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>
|
||||
);
|
||||
}
|
||||
|
@ -164,14 +165,14 @@ module.exports = React.createClass({
|
|||
|
||||
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>
|
||||
);
|
||||
}
|
||||
|
@ -180,7 +181,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>
|
||||
);
|
||||
}
|
||||
|
@ -190,13 +191,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>
|
||||
);
|
||||
|
||||
|
@ -205,7 +206,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 'matrix-react-sdk/lib/languageHandler';
|
||||
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 'matrix-react-sdk/lib/languageHandler';
|
||||
|
||||
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 'matrix-react-sdk/lib/languageHandler';
|
||||
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 'matrix-react-sdk/lib/languageHandler';
|
||||
|
||||
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 'matrix-react-sdk/lib/languageHandler';
|
||||
|
||||
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,21 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
import React from 'react';
|
||||
import { _t } from 'matrix-react-sdk/lib/languageHandler';
|
||||
import DateUtils from 'matrix-react-sdk/lib/DateUtils';
|
||||
|
||||
var React = require('react');
|
||||
|
||||
var days = [
|
||||
"Sunday",
|
||||
"Monday",
|
||||
"Tuesday",
|
||||
"Wednesday",
|
||||
"Thursday",
|
||||
"Friday",
|
||||
"Saturday"
|
||||
];
|
||||
function getdaysArray() {
|
||||
return [
|
||||
_t('Sunday'),
|
||||
_t('Monday'),
|
||||
_t('Tuesday'),
|
||||
_t('Wednesday'),
|
||||
_t('Thursday'),
|
||||
_t('Friday'),
|
||||
_t('Saturday'),
|
||||
];
|
||||
}
|
||||
|
||||
module.exports = React.createClass({
|
||||
displayName: 'DateSeparator',
|
||||
|
@ -34,19 +36,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 (
|
||||
|
|
|
@ -16,19 +16,23 @@ limitations under the License.
|
|||
|
||||
'use strict';
|
||||
|
||||
var React = require('react');
|
||||
var DateUtils = require('matrix-react-sdk/lib/DateUtils');
|
||||
import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore';
|
||||
const React = require('react');
|
||||
const DateUtils = require('matrix-react-sdk/lib/DateUtils');
|
||||
|
||||
module.exports = React.createClass({
|
||||
displayName: 'MessageTimestamp',
|
||||
|
||||
propTypes: {
|
||||
showTwelveHour: React.PropTypes.bool,
|
||||
},
|
||||
|
||||
render: function() {
|
||||
var date = new Date(this.props.ts);
|
||||
const date = new Date(this.props.ts);
|
||||
return (
|
||||
<span className="mx_MessageTimestamp" title={ DateUtils.formatFullDate(date) }>
|
||||
{ DateUtils.formatTime(date) }
|
||||
{ DateUtils.formatTime(date, this.props.showTwelveHour) }
|
||||
</span>
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
|
|
|
@ -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 'matrix-react-sdk/lib/languageHandler';
|
||||
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 'matrix-react-sdk/lib/languageHandler';
|
||||
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,8 +176,8 @@ 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,
|
||||
onFinished: function onFinished(should_leave, newValue) {
|
||||
|
||||
|
@ -240,8 +241,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 +311,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 +353,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 +563,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 +699,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 +714,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 +724,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 +738,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 +749,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 +775,7 @@ module.exports = React.createClass({
|
|||
}
|
||||
if (devicesSection) {
|
||||
devicesSection = (<div>
|
||||
<h3>Notification targets</h3>
|
||||
<h3>{ _t('Notification targets') }</h3>
|
||||
{ devicesSection }
|
||||
</div>);
|
||||
}
|
||||
|
@ -783,9 +784,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 notification 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 +813,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 +831,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 +843,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/strings/basefile.json
Normal file
|
@ -0,0 +1 @@
|
|||
{}
|
88
src/i18n/strings/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 %(toAction)s": "Перацягнуць сюды %(toAction)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 %(tagName)s from room": "Не ўдалося выдаліць %(tagName)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/strings/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"
|
||||
}
|
131
src/i18n/strings/de_DE.json
Normal file
|
@ -0,0 +1,131 @@
|
|||
{
|
||||
"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",
|
||||
"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 ist eventuell zu alt, 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:": "Trage Schlagworte, mit Komma getrennt, 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": "Einstellungen konnten nicht geändert werden",
|
||||
"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": "Aktion 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 %(toAction)s": "%(toAction)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 %(tagName)s from room": "Das Entfernen des Tags %(tagName)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": "Stummschalten",
|
||||
"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",
|
||||
"Advanced notification settings": "Erweiterte Benachrichtigungs-Einstellungen",
|
||||
"Call invitation": "Anruf-Einladung",
|
||||
"Messages containing my display name": "Nachrichten, die meinen Anzeigenamen enthalten",
|
||||
"Messages containing my user name": "Nachrichten, die meinen Nutzernamen enthalten",
|
||||
"Messages in group chats": "Nachrichten in Chat-Gruppen",
|
||||
"Messages in one-to-one chats": "Nachrichten in Eins-zu-Eins-Chats",
|
||||
"Messages sent by bot": "Nachrichten von Bots",
|
||||
"more": "mehr",
|
||||
"When I'm invited to a room": "Wenn ich in einen Raum eingeladen werde",
|
||||
"customServer_text": "Du kannst die erweiterten Server-Optioen nutzen um dich an anderen Matrix-Servern mittels anderer Heimserver-URL anzumelden. <br/>Dies erlaubt dir Riot mit einem existierendem Konto auf einem anderen Heimserver zu nutzen.<br/><br/>Du kannst auch einen benutzerdefinierten Identitäts-Server setzen, aber du wirst dann nicht in der Lage sein, Nutzer per E-Mail-Adresse einzuladen oder selbst mit E-Mail-Adresse eingeladen zu werden."
|
||||
}
|
122
src/i18n/strings/en_EN.json
Normal file
|
@ -0,0 +1,122 @@
|
|||
{
|
||||
"Add an email address above to configure email notifications": "Add an email address above to configure email notifications",
|
||||
"Advanced notification settings": "Advanced notification settings",
|
||||
"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",
|
||||
"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.",
|
||||
"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 %(toAction)s": "Drop here %(toAction)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 %(tagName)s from room": "Failed to remove tag %(tagName)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"
|
||||
}
|
3
src/i18n/strings/fi.json
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"Sunday": "Sunnuntai"
|
||||
}
|
124
src/i18n/strings/fr.json
Normal file
|
@ -0,0 +1,124 @@
|
|||
{
|
||||
"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 notifications 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 par e-mail",
|
||||
"Cancel Sending": "Annuler l'envoi",
|
||||
"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 l'alias %(alias)s du salon et supprimer %(name)s du répertoire ?",
|
||||
"Direct Chat": "Conversation Directe",
|
||||
"Directory": "Répertoire",
|
||||
"Dismiss": "Rejeter",
|
||||
"Download this file": "Télécharger ce fichier",
|
||||
"Drop here %(toAction)s": "Déposer ici pour %(toAction)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 de l'adhésion au salon",
|
||||
"Failed to remove tag %(tagName)s from room": "Échec dans la suppression de l’étiquette %(tagName)s du salon",
|
||||
"Failed to set direct chat tag": "Échec dans l'attribution d'une étiquette dans le chat direct",
|
||||
"Favourite": "Favoris",
|
||||
"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 une 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 d'accueil",
|
||||
"Call invitation": "Appel entrant",
|
||||
"Failed to set Direct Message status of room": "Échec de la configuration de l'état de Message Direct du salon",
|
||||
"Fetching third party location failed": "Échec de la récupération de la localisation tierce",
|
||||
"Files": "Fichiers",
|
||||
"Filter room names": "Filtrer les noms des salons",
|
||||
"Forget": "Oublier",
|
||||
" from room": " du salon",
|
||||
"Guest users can't invite users. Please register to invite": "Les invités ne peuvent démarrer une discussion. Merci de vous enregistrer pour pouvoir démarrer une discussion",
|
||||
"Invite to this room": "Inviter dans ce salon",
|
||||
"Keywords": "Mots-clés",
|
||||
"Leave": "Quitter",
|
||||
"Low Priority": "Priorité Basse",
|
||||
"Members": "Membres",
|
||||
"Mentions only": "Seulement les mentions",
|
||||
"Messages containing my display name": "Messages contenant mon nom",
|
||||
"Messages containing my user name": "Message contenant mon nom d'utilisateur",
|
||||
"Messages in group chats": "Messages dans les conversations de groupe",
|
||||
"Messages in one-to-one chats": "Messages dans les conversations directes",
|
||||
"Messages sent by bot": "Messages envoyés par des robots",
|
||||
"more": "plus",
|
||||
"Mute": "Muet",
|
||||
"No rooms to show": "Aucun salon à afficher",
|
||||
"Noisy": "Sonore",
|
||||
"Notification targets": "Appareils recevant les notifications",
|
||||
"Notifications": "Notifications",
|
||||
"Notifications on the following keywords follow rules which can’t be displayed here": "Les mots-clés suivants suivent des règles de notification qui ne peuvent être affichées ici",
|
||||
"Notify for all other messages/rooms": "Me notifier pour tous les autres messages/salons",
|
||||
"Notify me for anything else": "Me notifier pour tout le reste",
|
||||
"Off": "Désactivé",
|
||||
"On": "Activé",
|
||||
"Permalink": "Permalien",
|
||||
"remove %(name)s from the directory": "supprimer %(name)s du répertoire",
|
||||
"Remove from Directory": "Supprimer du répertoire",
|
||||
"Riot does not know how to join a room on this network": "Riot ne peut pas joindre un salon sur ce réseau",
|
||||
"Room directory": "Répertoire des salons",
|
||||
"Room not found": "Salon non trouvé",
|
||||
"Search for a room": "Chercher un salon",
|
||||
"Source URL": "URL source",
|
||||
"The Home Server may be too old to support third party networks": "Le Home Server semble trop ancien pour supporter des réseaux tiers",
|
||||
"There are advanced notifications which are not shown here": "Il existe une configuration avancée des notifications qui ne peut être affichée ici",
|
||||
"The server may be unavailable or overloaded": "Le serveur est indisponible ou surchargé",
|
||||
"This room is inaccessible to guests. You may be able to join if you register": "Ce salon n'est pas ouvert aux invités. Vous pourrez peut-être le rejoindre si vous vous enregistrez",
|
||||
"Unable to fetch notification target list": "Impossible de récupérer la liste des appareils recevant les notifications",
|
||||
"Unable to join network": "Impossible de rejoindre le réseau",
|
||||
"Unable to look up room ID from server": "Impossible de récupérer l'ID du salon sur le serveur",
|
||||
"Unhide Preview": "Dévoiler l'aperçu",
|
||||
"Unnamed room": "Salon anonyme",
|
||||
"Uploaded on %(date)s by %(user)s": "Téléchargé le %(date)s par %(user)s",
|
||||
"View Decrypted Source": "Voir la source décryptée",
|
||||
"When I'm invited to a room": "Quand je suis invité dans un salon",
|
||||
"World readable": "Visible par tout le monde",
|
||||
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Vous les avez probablement configurées dans un autre client que Riot. Vous ne pouvez pas les configurer dans Riot mais elles s'appliquent quand même",
|
||||
"Guests can join": "Ouvert aux invités",
|
||||
" to room": " au salon",
|
||||
"Advanced notification settings": "Paramètres de notifications avancés",
|
||||
"An error occurred whilst saving your email notification preferences.": "Une erreur est survenue lors de la sauvegarde de vos préférences de notifications mail.",
|
||||
"customServer_text": "Vous pouvez utiliser l'option de serveur personnalisé pour vous connectez à d'autres serveurs Matrix, en spécifiant une adresse différente pour Home serveur.<br/>Cela permet d'utiliser Riot avec un compte existant sur un Home serveur différent.<br/><br/>Vous pouvez aussi indiquer un serveur d'identité personnel mais vous ne pourrez plus inviter des utilisateurs par email, ou être invité par email.",
|
||||
"Notifications on the following keywords follow rules which can’t be displayed here:": "Les notifications pour les mots clés suivant répondent à des critères qui ne peuvent pas être affichés ici :"
|
||||
}
|
68
src/i18n/strings/hu.json
Normal file
|
@ -0,0 +1,68 @@
|
|||
{
|
||||
"Add an email address above to configure email notifications": "E-mail értesítés beállításához írd be az e-mail címed",
|
||||
"Advanced notification settings": "Haladó értesítési beállítások",
|
||||
"All messages": "Minden üzenet",
|
||||
"All messages (loud)": "Minden üzenet (hangos)",
|
||||
"All notifications are currently disabled for all targets.": "Minden céleszközön minden értesítés tiltva van.",
|
||||
"An error occurred whilst saving your email notification preferences.": "Hiba történt az e-mail értesítés beállításánál.",
|
||||
"Call invitation": "Hívás meghívó",
|
||||
"Cancel Sending": "Küldés megszakítása",
|
||||
"Can't update user notification settings": "Nem sikerül frissíteni az értesítési beállításokat",
|
||||
"Close": "Bezár",
|
||||
"Create new room": "Új szoba készítés",
|
||||
"Couldn't find a matching Matrix room": "Nem található a keresett Matrix szoba",
|
||||
"Custom Server Options": "Egyedi szerver beállítások",
|
||||
"delete the alias": "becenév törlése",
|
||||
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Törlöd a(z) %(alias)s szobát és kiveszed a könyvtárból ezt: %(name)s?",
|
||||
"Direct Chat": "Közvetlen csevegés",
|
||||
"Directory": "Könyvtár",
|
||||
"Dismiss": "Eltűntet",
|
||||
"Download this file": "Fájl letöltése",
|
||||
"Drop here %(toAction)s": "%(toAction)s -t húzd ide",
|
||||
"Enable audible notifications in web client": "Hallható értesítések engedélyezése a webes kliensben",
|
||||
"Enable desktop notifications": "Asztali értesítések engedélyezése",
|
||||
"Enable email notifications": "E-mail értesítések engedélyezése",
|
||||
"Enable notifications for this account": "Értesítések engedélyezése a fiókhoz",
|
||||
"Enable them now": "Engedélyezés most",
|
||||
"Enter keywords separated by a comma:": "Kulcsszavak vesszővel elválasztva:",
|
||||
"Error": "Hiba",
|
||||
"Error saving email notification preferences": "Hiba email értesítés beállításának mentésénél",
|
||||
"#example": "#példa",
|
||||
"Failed to": "Nem lehet",
|
||||
"Failed to add tag %(tagName)s to room": "Nem lehet a címkét hozzáadni a szobához: %(tagName)s",
|
||||
"Failed to change settings": "Nem lehet a beállítást megváltoztatni",
|
||||
"Failed to forget room %(errCode)s": "Nem lehet eltávolítani a szobát: %(errCode)s",
|
||||
"Failed to update keywords": "Nem lehet a kulcsszavakat frissíteni",
|
||||
"Failed to get protocol list from Home Server": "Nem lehet a protokoll listát lekérni a Saját szerverről",
|
||||
"Failed to get public room list": "Nem lehet lekérdezni a nyílt szobák listáját",
|
||||
"Failed to join the room": "Nem lehet csatlakozni a szobához",
|
||||
"Failed to remove tag %(tagName)s from room": "Nem lehet törölni a(z) %(tagName)s címkét a szobáról",
|
||||
"Failed to set direct chat tag": "Nem lehet a címkét beállítani a közvetlen beszélgetéshez",
|
||||
"Failed to set Direct Message status of room": "Nem lehet beállítani a Közvetlen beszélgetés státuszt a szobához",
|
||||
"Favourite": "Kedvenc",
|
||||
"Fetching third party location failed": "Nem sikerült lekérdezni a harmadik felet",
|
||||
"Files": "Fájlok",
|
||||
"Filter room names": "Szoba nevek szűrése",
|
||||
"Forget": "Elfelejt",
|
||||
" from room": " szobából",
|
||||
"Guests can join": "Vendégek csatlakozhatnak",
|
||||
"Guest users can't invite users. Please register to invite": "Vendég felhasználó nem küldhet meghívót. Kérlek regisztrálj meghívó küldéshez",
|
||||
"Invite to this room": "Meghívás a szobába",
|
||||
"Keywords": "Kulcsszavak",
|
||||
"Leave": "Elhagy",
|
||||
"Low Priority": "Alacsony priorítás",
|
||||
"Members": "Résztvevők",
|
||||
"Mentions only": "Csak ha megemlítenek",
|
||||
"Messages containing my display name": "Az üzenet tartalmazza a nevem",
|
||||
"Messages containing my user name": "Az üzenet tartalmazza a felhasználói nevem",
|
||||
"Messages in group chats": "Üzenetek a csoportszobában",
|
||||
"Messages in one-to-one chats": "Üzenetek közvetlen beszélgetésekben",
|
||||
"Messages sent by bot": "Botok által küldött üzenetek",
|
||||
"more": "további",
|
||||
"Mute": "Elnémít",
|
||||
"No rooms to show": "Nincs megjeleníthető szoba",
|
||||
"Noisy": "Hangos",
|
||||
"Notification targets": "Értesítések célpontja",
|
||||
"Notifications": "Értesítések",
|
||||
"Notify for all other messages/rooms": "Értesítés minden más üzenethez/szobához"
|
||||
}
|
5
src/i18n/strings/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/strings/nb_NO.json
Normal file
|
@ -0,0 +1 @@
|
|||
{}
|
1
src/i18n/strings/pl.json
Normal file
|
@ -0,0 +1 @@
|
|||
{}
|
116
src/i18n/strings/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 %(name)s da lista pública?",
|
||||
"Direct Chat": "Conversa pessoal",
|
||||
"Directory": "Diretório",
|
||||
"Dismiss": "Encerrar",
|
||||
"Download this file": "Baixar este arquivo",
|
||||
"Drop here %(toAction)s": "Arraste aqui para %(toAction)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 %(tagName)s from room": "Não foi possível remover a marcação %(tagName)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"
|
||||
}
|
123
src/i18n/strings/pt_BR.json
Normal file
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"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 %(name)s da lista pública?",
|
||||
"Direct Chat": "Conversa pessoal",
|
||||
"Directory": "Diretório",
|
||||
"Dismiss": "Encerrar",
|
||||
"Download this file": "Baixar este arquivo",
|
||||
"Drop here %(toAction)s": "Arraste aqui para %(toAction)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 %(tagName)s from room": "Não foi possível remover a marcação %(tagName)s desta sala",
|
||||
"Welcome page": "Página de boas vindas"
|
||||
}
|
130
src/i18n/strings/ru.json
Normal file
|
@ -0,0 +1,130 @@
|
|||
{
|
||||
"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.": "Возникла ошибка при сохранении настроек оповещения по электронной почте.",
|
||||
"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": "Включить оповещения по электронной почте",
|
||||
"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 ": "Не удалось добавить тег ",
|
||||
"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": "Здесь расширенные уведомления, которые здесь не показаны",
|
||||
"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 %(toAction)s": "Вставить сюда для %(toAction)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 %(tagName)s from room": "Не удалось убрать пометку %(tagName)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": "Домашняя страница",
|
||||
"Advanced notification settings": "Настройки уведомлений",
|
||||
"Call invitation": "Звонок",
|
||||
"customServer_text": "Вы можете войти с помощью вашего сервера.<br/>Это позволяет вам использовать Riot с уже существующей учетной записью на другом сервере.<br/><br/>Вы также можете задать свой сервер идентификации, но тогда вы не можете приглашать пользователей с помощью email-адреса и не можете быть приглашены по нему.",
|
||||
"Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой",
|
||||
"Messages containing my display name": "Сообщения, содержащие мое отображаемое имя",
|
||||
"Messages containing my user name": "Сообщение, содержащие мое имя пользователя",
|
||||
"Messages in group chats": "Сообщения в групповых чатах",
|
||||
"Messages in one-to-one chats": "Сообщения в приватных чатах",
|
||||
"Messages sent by bot": "Сообщения, отправленные ботом",
|
||||
"more": "больше",
|
||||
"When I'm invited to a room": "Когда я приглашен в комнату"
|
||||
}
|
40
src/i18n/strings/sv.json
Normal file
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"Add an email address above to configure email notifications": "Lägg till en epostadress här för att konfigurera epostaviseringar",
|
||||
"Advanced notification settings": "Avancerade aviseringsinställingar",
|
||||
"All messages": "Alla meddelanden",
|
||||
"All messages (loud)": "Alla meddelanden (högljudd)",
|
||||
"All notifications are currently disabled for all targets.": "Alla aviseringar är för tillfället avstängda för alla mål.",
|
||||
"An error occurred whilst saving your email notification preferences.": "Ett fel uppstod då epostaviseringsinställningarna sparades.",
|
||||
"Call invitation": "Inbjudan till samtal",
|
||||
"Cancel Sending": "Avbryt sändning",
|
||||
"Can't update user notification settings": "Kan inte uppdatera aviseringsinställningarna",
|
||||
"Close": "Stäng",
|
||||
"Create new room": "Nytt rum",
|
||||
"Couldn't find a matching Matrix room": "Kunde inte hitta ett matchande Matrix-rum",
|
||||
"Custom Server Options": "Egna serverinställningar",
|
||||
"customServer_text": "Du kan använda serverinställningarna för att logga in i en annan Matrix-server genom att specifiera en URL till en annan hemserver.<br/>Så här kan du använda Riot med ett existerande Matrix-konto på en annan hemserver.<br/><br/>Du kan också specifiera en egen identitetsserver, men du kommer inte att kunna bjuda in andra via epostadress, eller bli inbjuden via epostadress.",
|
||||
"delete the alias": "radera adressen",
|
||||
"Direct Chat": "Direkt chatt",
|
||||
"Directory": "Katalog",
|
||||
"Dismiss": "Avvisa",
|
||||
"Download this file": "Ladda ner filen",
|
||||
"Drop here %(toAction)s": "Dra hit för att %(toAction)s",
|
||||
"Enable audible notifications in web client": "Sätt på högljudda aviseringar i webbklienten",
|
||||
"Enable desktop notifications": "Sätt på skrivbordsaviseringar",
|
||||
"Enable email notifications": "Sätt på epostaviseringar",
|
||||
"Enable notifications for this account": "Sätt på aviseringar för det här kontot",
|
||||
"Enable them now": "Sätt på nu",
|
||||
"Enter keywords separated by a comma:": "Skriv in nyckelord, separerade med kommatecken",
|
||||
"Error": "Fel",
|
||||
"Error saving email notification preferences": "Ett fel uppstod då epostaviseringsinställningarna sparades",
|
||||
"Failed to": "Det gick inte att",
|
||||
"Failed to add tag %(tagName)s to room": "Det gick inte att lägga till \"%(tagName)s\" till rummet",
|
||||
"Failed to change settings": "Det gick inte att spara inställningarna",
|
||||
"Failed to forget room %(errCode)s": "Det gick inte att glömma bort rummet: %(errCode)s",
|
||||
"Failed to update keywords": "Det gick inte att uppdatera nyckelorden",
|
||||
"Failed to get protocol list from Home Server": "Det gick inte att hämta protokollistan från hemservern",
|
||||
"Failed to get public room list": "Det gick inte att hämta listan över offentliga rum",
|
||||
"Failed to join the room": "Det gick inte att ansluta till rummet",
|
||||
"Failed to remove tag %(tagName)s from room": "Det gick inte att radera taggen %(tagName)s från rummet",
|
||||
"Failed to set direct chat tag": "Det gick inte att markera rummet som direkt chatt"
|
||||
}
|
|
@ -112,4 +112,3 @@ limitations under the License.
|
|||
.mx_FilePanel .mx_EventTile_selected .mx_EventTile_line {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
|
|
|
@ -131,6 +131,10 @@ limitations under the License.
|
|||
position: absolute;
|
||||
}
|
||||
|
||||
.mx_UserSettings_language {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.mx_UserSettings_profileTable
|
||||
{
|
||||
display: table;
|
||||
|
|
|
@ -175,7 +175,8 @@ limitations under the License.
|
|||
}
|
||||
|
||||
.mx_Login_type_dropdown {
|
||||
width: 125px;
|
||||
display: inline-block;
|
||||
min-width: 125px;
|
||||
align-self: flex-end;
|
||||
}
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@ limitations under the License.
|
|||
font-family: 'Open Sans', Arial, Helvetica, Sans-Serif;
|
||||
font-size: 14px;
|
||||
color: $primary-fg-color;
|
||||
background-color: $primary-bg-color;
|
||||
|
||||
border-radius: 3px;
|
||||
border: solid 1px $input-border-color;
|
||||
|
|
|
@ -183,6 +183,10 @@ limitations under the License.
|
|||
visibility: visible;
|
||||
}
|
||||
|
||||
.mx_MessagePanel_alwaysShowTimestamps .mx_MessageTimestamp {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.mx_EventTile_selected .mx_MessageTimestamp {
|
||||
left: 3px;
|
||||
}
|
||||
|
@ -263,6 +267,14 @@ limitations under the License.
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
.mx_EventTile_12hr .mx_EventTile_e2eIcon {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.mx_EventTile_12hr .mx_MessageTimestamp {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line,
|
||||
.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line {
|
||||
padding-left: 60px;
|
||||
|
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style>.cls-1{fill:#764d80;}.cls-2{fill:#7dc8a2;}.cls-3{fill:#afdbc5;}</style></defs><title>Asset 4</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-1" d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-1" d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path class="cls-1" d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/><path class="cls-2" d="M62.33,0H21.22A20.56,20.56,0,0,0,.66,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H62.33A51.38,51.38,0,0,0,62.33,0Z"/><path class="cls-3" d="M21.22,138.81A15.45,15.45,0,0,1,5.79,123.37V20.57A15.45,15.45,0,0,1,21.09,5.14H62.33a46.26,46.26,0,0,1,0,92.51H36.65v25.71A15.45,15.45,0,0,1,21.22,138.81Z"/><path class="cls-2" d="M21.22,133.68a10.32,10.32,0,0,1-10.3-10.3V20.57A10.33,10.33,0,0,1,21,10.27H62.33a41.13,41.13,0,0,1,0,82.26H31.52v30.84A10.32,10.32,0,0,1,21.22,133.68Z"/><path class="cls-3" d="M21.22,128.55A5.18,5.18,0,0,1,16,123.37V20.57a5.2,5.2,0,0,1,5-5.17H62.33a36,36,0,0,1,0,72H26.39v36A5.18,5.18,0,0,1,21.22,128.55Z"/><path class="cls-2" d="M21.27,82.28H62.33a30.87,30.87,0,0,0,0-61.75H21.22Z"/><path class="cls-3" d="M26.39,77.15l0-51.49h36a25.75,25.75,0,0,1,0,51.49Z"/><path class="cls-2" d="M31.51,72l0-41.23H62.33a20.62,20.62,0,0,1,0,41.23Z"/><path class="cls-3" d="M36.64,66.9l0-31H62.33a15.49,15.49,0,0,1,0,31Z"/><path class="cls-2" d="M41.76,61.77l0-20.72H62.33a10.36,10.36,0,0,1,0,20.72Z"/><path class="cls-3" d="M46.89,56.64V46.18H62.33a5.23,5.23,0,0,1,0,10.47Z"/><circle class="cls-1" cx="20.56" cy="20.57" r="20.56" transform="translate(-8.08 15.51) rotate(-35)"/><path class="cls-1" d="M109.34,111.57a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.55,67.58Z"/></g></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style type="text/css">.cls-1{fill:#764d80;}.cls-2{fill:#7dc8a2;}.cls-3{fill:#afdbc5;}</style></defs><title>Asset 4</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-1" d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-1" d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path class="cls-1" d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/><path class="cls-2" d="M62.33,0H21.22A20.56,20.56,0,0,0,.66,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H62.33A51.38,51.38,0,0,0,62.33,0Z"/><path class="cls-3" d="M21.22,138.81A15.45,15.45,0,0,1,5.79,123.37V20.57A15.45,15.45,0,0,1,21.09,5.14H62.33a46.26,46.26,0,0,1,0,92.51H36.65v25.71A15.45,15.45,0,0,1,21.22,138.81Z"/><path class="cls-2" d="M21.22,133.68a10.32,10.32,0,0,1-10.3-10.3V20.57A10.33,10.33,0,0,1,21,10.27H62.33a41.13,41.13,0,0,1,0,82.26H31.52v30.84A10.32,10.32,0,0,1,21.22,133.68Z"/><path class="cls-3" d="M21.22,128.55A5.18,5.18,0,0,1,16,123.37V20.57a5.2,5.2,0,0,1,5-5.17H62.33a36,36,0,0,1,0,72H26.39v36A5.18,5.18,0,0,1,21.22,128.55Z"/><path class="cls-2" d="M21.27,82.28H62.33a30.87,30.87,0,0,0,0-61.75H21.22Z"/><path class="cls-3" d="M26.39,77.15l0-51.49h36a25.75,25.75,0,0,1,0,51.49Z"/><path class="cls-2" d="M31.51,72l0-41.23H62.33a20.62,20.62,0,0,1,0,41.23Z"/><path class="cls-3" d="M36.64,66.9l0-31H62.33a15.49,15.49,0,0,1,0,31Z"/><path class="cls-2" d="M41.76,61.77l0-20.72H62.33a10.36,10.36,0,0,1,0,20.72Z"/><path class="cls-3" d="M46.89,56.64V46.18H62.33a5.23,5.23,0,0,1,0,10.47Z"/><circle class="cls-1" cx="20.56" cy="20.57" r="20.56" transform="translate(-8.08 15.51) rotate(-35)"/><path class="cls-1" d="M109.34,111.57a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.55,67.58Z"/></g></g></svg>
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.36 143.93"><defs><style>.cls-1{fill:#764d80;}.cls-2{fill:#f69e98;}</style></defs><title>Asset 2</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><path class="cls-2" d="M20.56,139.54A16.19,16.19,0,0,1,4.39,123.37V20.57a16.21,16.21,0,0,1,16-16.17H61.67a47,47,0,0,1,0,94H36.73v25A16.19,16.19,0,0,1,20.56,139.54ZM20.39,5.9A14.7,14.7,0,0,0,5.89,20.57v102.8a14.67,14.67,0,0,0,29.34,0V96.9H61.67a45.49,45.49,0,0,0,0-91H20.39Z"/><path class="cls-2" d="M20.56,134.4a11,11,0,0,1-11-11V20.57a11.09,11.09,0,0,1,10.79-11H61.67a41.85,41.85,0,0,1,0,83.7H31.59v30.11A11,11,0,0,1,20.56,134.4ZM20.3,11A9.57,9.57,0,0,0,11,20.57v102.8a9.53,9.53,0,1,0,19.05,0V91.75H61.67a40.35,40.35,0,0,0,0-80.7H20.3Z"/><path class="cls-2" d="M20.56,129.25a5.89,5.89,0,0,1-5.88-5.88V20.57a5.94,5.94,0,0,1,5.61-5.88H61.67a36.71,36.71,0,0,1,0,73.42H26.44v35.25A5.89,5.89,0,0,1,20.56,129.25ZM20.31,16.19a4.42,4.42,0,0,0-4.13,4.38v102.8a4.38,4.38,0,0,0,8.77,0V86.61H61.67a35.21,35.21,0,0,0,0-70.42Z"/><path class="cls-2" d="M61.67,83H19.81V19.83H61.67a31.57,31.57,0,0,1,0,63.14Zm-40.36-1.5H61.67a30.07,30.07,0,0,0,0-60.14H21.32Z"/><path class="cls-2" d="M61.67,77.83H25V25H61.67a26.43,26.43,0,0,1,0,52.85Zm-35.22-1.5H61.67a24.93,24.93,0,0,0,0-49.85H26.46Z"/><path class="cls-2" d="M61.67,72.69H30.1V30.12H61.67a21.29,21.29,0,0,1,0,42.57ZM31.6,71.19H61.67a19.79,19.79,0,0,0,0-39.57H31.6Z"/><path class="cls-2" d="M61.67,67.55H35.24V35.26H61.67a16.14,16.14,0,0,1,0,32.29ZM36.74,66H61.67a14.64,14.64,0,0,0,0-29.29H36.74Z"/><path class="cls-2" d="M61.67,62.41H40.38v-22H61.67a11,11,0,0,1,0,22Zm-19.79-1.5H61.67a9.5,9.5,0,0,0,0-19H41.88Z"/><path class="cls-2" d="M61.67,57.26H45.52V45.54H61.67a5.86,5.86,0,0,1,0,11.72ZM47,55.76H61.67a4.36,4.36,0,0,0,0-8.72H47Z"/><path class="cls-2" d="M61.18,52.16H51.89a.75.75,0,1,1,0-1.5h9.29a.75.75,0,0,1,0,1.5Z"/><path class="cls-2" d="M20.56,124.12a.75.75,0,0,1-.75-.75v-36a.75.75,0,0,1,1.5,0v36A.75.75,0,0,1,20.56,124.12Z"/><circle class="cls-2" cx="20.59" cy="20.57" r="20.56" transform="translate(-8.07 15.53) rotate(-35)"/><path class="cls-2" d="M109.36,111.56a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/><path class="cls-2" d="M145.91,51.12h25.61a2.57,2.57,0,0,0,0-5.14H145.91a2.57,2.57,0,1,0,0,5.14Z"/><path class="cls-2" d="M145.91,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,171.51,0H145.91a2.57,2.57,0,1,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-2" d="M171.51,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23a2.57,2.57,0,0,0-2.57,2.57h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,171.51,118.28Z"/><path class="cls-2" d="M158.71,72.63a15.65,15.65,0,1,0,15.65,15.65A15.67,15.67,0,0,0,158.71,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,158.71,98.79Z"/></g></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.36 143.93"><defs><style type="text/css">.cls-1{fill:#764d80;}.cls-2{fill:#f69e98;}</style></defs><title>Asset 2</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><path class="cls-2" d="M20.56,139.54A16.19,16.19,0,0,1,4.39,123.37V20.57a16.21,16.21,0,0,1,16-16.17H61.67a47,47,0,0,1,0,94H36.73v25A16.19,16.19,0,0,1,20.56,139.54ZM20.39,5.9A14.7,14.7,0,0,0,5.89,20.57v102.8a14.67,14.67,0,0,0,29.34,0V96.9H61.67a45.49,45.49,0,0,0,0-91H20.39Z"/><path class="cls-2" d="M20.56,134.4a11,11,0,0,1-11-11V20.57a11.09,11.09,0,0,1,10.79-11H61.67a41.85,41.85,0,0,1,0,83.7H31.59v30.11A11,11,0,0,1,20.56,134.4ZM20.3,11A9.57,9.57,0,0,0,11,20.57v102.8a9.53,9.53,0,1,0,19.05,0V91.75H61.67a40.35,40.35,0,0,0,0-80.7H20.3Z"/><path class="cls-2" d="M20.56,129.25a5.89,5.89,0,0,1-5.88-5.88V20.57a5.94,5.94,0,0,1,5.61-5.88H61.67a36.71,36.71,0,0,1,0,73.42H26.44v35.25A5.89,5.89,0,0,1,20.56,129.25ZM20.31,16.19a4.42,4.42,0,0,0-4.13,4.38v102.8a4.38,4.38,0,0,0,8.77,0V86.61H61.67a35.21,35.21,0,0,0,0-70.42Z"/><path class="cls-2" d="M61.67,83H19.81V19.83H61.67a31.57,31.57,0,0,1,0,63.14Zm-40.36-1.5H61.67a30.07,30.07,0,0,0,0-60.14H21.32Z"/><path class="cls-2" d="M61.67,77.83H25V25H61.67a26.43,26.43,0,0,1,0,52.85Zm-35.22-1.5H61.67a24.93,24.93,0,0,0,0-49.85H26.46Z"/><path class="cls-2" d="M61.67,72.69H30.1V30.12H61.67a21.29,21.29,0,0,1,0,42.57ZM31.6,71.19H61.67a19.79,19.79,0,0,0,0-39.57H31.6Z"/><path class="cls-2" d="M61.67,67.55H35.24V35.26H61.67a16.14,16.14,0,0,1,0,32.29ZM36.74,66H61.67a14.64,14.64,0,0,0,0-29.29H36.74Z"/><path class="cls-2" d="M61.67,62.41H40.38v-22H61.67a11,11,0,0,1,0,22Zm-19.79-1.5H61.67a9.5,9.5,0,0,0,0-19H41.88Z"/><path class="cls-2" d="M61.67,57.26H45.52V45.54H61.67a5.86,5.86,0,0,1,0,11.72ZM47,55.76H61.67a4.36,4.36,0,0,0,0-8.72H47Z"/><path class="cls-2" d="M61.18,52.16H51.89a.75.75,0,1,1,0-1.5h9.29a.75.75,0,0,1,0,1.5Z"/><path class="cls-2" d="M20.56,124.12a.75.75,0,0,1-.75-.75v-36a.75.75,0,0,1,1.5,0v36A.75.75,0,0,1,20.56,124.12Z"/><circle class="cls-2" cx="20.59" cy="20.57" r="20.56" transform="translate(-8.07 15.53) rotate(-35)"/><path class="cls-2" d="M109.36,111.56a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/><path class="cls-2" d="M145.91,51.12h25.61a2.57,2.57,0,0,0,0-5.14H145.91a2.57,2.57,0,1,0,0,5.14Z"/><path class="cls-2" d="M145.91,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,171.51,0H145.91a2.57,2.57,0,1,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-2" d="M171.51,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23a2.57,2.57,0,0,0-2.57,2.57h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,171.51,118.28Z"/><path class="cls-2" d="M158.71,72.63a15.65,15.65,0,1,0,15.65,15.65A15.67,15.67,0,0,0,158.71,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,158.71,98.79Z"/></g></g></svg>
|
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 3 KiB |
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style>.cls-1{fill:#fac79e;}.cls-2{fill:#e45e5d;}.cls-3{fill:#f8a05f;}</style></defs><title>Asset 5</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-1" d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-1" d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path class="cls-1" d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/><path class="cls-2" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><polygon class="cls-3" points="47.03 0.01 40.32 0.01 0 48.06 0 56.05 47.03 0.01"/><polygon class="cls-3" points="60.45 0.01 53.74 0.01 0 64.05 0 72.04 60.45 0.01"/><path class="cls-3" d="M72.83,1.24a51,51,0,0,0-5.9-1L0,80v8Z"/><polygon class="cls-3" points="33.61 0.01 26.9 0.01 0 32.06 0 40.06 33.61 0.01"/><path class="cls-3" d="M83.27,4.78a51,51,0,0,0-5-2L0,96v8Z"/><path class="cls-3" d="M41.12,102.78h.18l64.78-77.2a51.55,51.55,0,0,0-2.94-4.49L5.55,137.38a20.62,20.62,0,0,0,3.95,3.29L41.12,103Z"/><path class="cls-3" d="M112.22,42.23l-50.8,60.54h.25a51.55,51.55,0,0,0,6.85-.47L113,49.3A51.32,51.32,0,0,0,112.22,42.23Z"/><path class="cls-3" d="M40.71,127.46l-12.59,15A20.58,20.58,0,0,0,40.71,127.46Z"/><path class="cls-3" d="M110,68.88a51,51,0,0,0,2.67-11.18L76.73,100.52a51.1,51.1,0,0,0,10.6-4.64Z"/><path class="cls-3" d="M92.22,10.1a51.58,51.58,0,0,0-4.3-2.87L0,112v8Z"/><path class="cls-3" d="M99.83,17q-1.73-1.92-3.64-3.66L.42,127.5a20.41,20.41,0,0,0,2,5.58Z"/><path class="cls-3" d="M41.12,119v-8l-26.82,32a20.53,20.53,0,0,0,5.9,1Z"/><path class="cls-3" d="M110.71,36a51,51,0,0,0-2.09-5.5L48,102.78h6.71Z"/><circle class="cls-1" cx="20.59" cy="20.57" r="20.56" transform="translate(-8.07 15.53) rotate(-35)"/><path class="cls-1" d="M109.36,111.56a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/></g></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style type="text/css">.cls-1{fill:#fac79e;}.cls-2{fill:#e45e5d;}.cls-3{fill:#f8a05f;}</style></defs><title>Asset 5</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-1" d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-1" d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path class="cls-1" d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/><path class="cls-2" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><polygon class="cls-3" points="47.03 0.01 40.32 0.01 0 48.06 0 56.05 47.03 0.01"/><polygon class="cls-3" points="60.45 0.01 53.74 0.01 0 64.05 0 72.04 60.45 0.01"/><path class="cls-3" d="M72.83,1.24a51,51,0,0,0-5.9-1L0,80v8Z"/><polygon class="cls-3" points="33.61 0.01 26.9 0.01 0 32.06 0 40.06 33.61 0.01"/><path class="cls-3" d="M83.27,4.78a51,51,0,0,0-5-2L0,96v8Z"/><path class="cls-3" d="M41.12,102.78h.18l64.78-77.2a51.55,51.55,0,0,0-2.94-4.49L5.55,137.38a20.62,20.62,0,0,0,3.95,3.29L41.12,103Z"/><path class="cls-3" d="M112.22,42.23l-50.8,60.54h.25a51.55,51.55,0,0,0,6.85-.47L113,49.3A51.32,51.32,0,0,0,112.22,42.23Z"/><path class="cls-3" d="M40.71,127.46l-12.59,15A20.58,20.58,0,0,0,40.71,127.46Z"/><path class="cls-3" d="M110,68.88a51,51,0,0,0,2.67-11.18L76.73,100.52a51.1,51.1,0,0,0,10.6-4.64Z"/><path class="cls-3" d="M92.22,10.1a51.58,51.58,0,0,0-4.3-2.87L0,112v8Z"/><path class="cls-3" d="M99.83,17q-1.73-1.92-3.64-3.66L.42,127.5a20.41,20.41,0,0,0,2,5.58Z"/><path class="cls-3" d="M41.12,119v-8l-26.82,32a20.53,20.53,0,0,0,5.9,1Z"/><path class="cls-3" d="M110.71,36a51,51,0,0,0-2.09-5.5L48,102.78h6.71Z"/><circle class="cls-1" cx="20.59" cy="20.57" r="20.56" transform="translate(-8.07 15.53) rotate(-35)"/><path class="cls-1" d="M109.36,111.56a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/></g></g></svg>
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 175.64 143.93"><defs><style>.cls-1{fill:#e45e5d;}.cls-2{fill:#c7bdcd;}.cls-3{fill:#f69e98;}</style></defs><title>Asset 3</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><path class="cls-2" d="M147.19,51.12h25.61a2.57,2.57,0,1,0,0-5.14H147.19a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-2" d="M147.19,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.79,0H147.19a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-2" d="M172.79,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23a2.57,2.57,0,0,0-2.57,2.57h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.79,118.28Z"/><path class="cls-2" d="M160,72.63a15.65,15.65,0,1,0,15.65,15.65A15.67,15.67,0,0,0,160,72.63Zm0,26.16A10.51,10.51,0,1,1,170.5,88.28,10.52,10.52,0,0,1,160,98.79Z"/><path class="cls-3" d="M2.77,133.64A20.62,20.62,0,0,0,7,138.77H34.14a20.62,20.62,0,0,0,4.21-5.13Z"/><path class="cls-3" d="M0,92.52v5.14H84a51.48,51.48,0,0,0,8.41-5.14Z"/><rect class="cls-3" y="102.8" width="41.12" height="5.13"/><rect class="cls-3" y="113.08" width="41.12" height="5.14"/><path class="cls-3" d="M.68,15.41H98.3a51.8,51.8,0,0,0-5.86-5.14H2.78A20.41,20.41,0,0,0,.68,15.41Z"/><path class="cls-3" d="M0,123.36H0a20.53,20.53,0,0,0,.67,5.12H40.45a20.53,20.53,0,0,0,.67-5.12H0Z"/><path class="cls-3" d="M0,56.53H112.8c.17-1.69.26-3.4.26-5.13H0Z"/><path class="cls-3" d="M0,82.24v5.14H98.32a51.79,51.79,0,0,0,4.43-5.14Z"/><path class="cls-3" d="M0,20.57V25.7H106.14a51.58,51.58,0,0,0-3.39-5.14Z"/><path class="cls-3" d="M20.81,0h-.25A20.46,20.46,0,0,0,7,5.14H84A51.07,51.07,0,0,0,61.67,0Z"/><path class="cls-3" d="M0,30.85V36H110.69a51,51,0,0,0-1.94-5.14Z"/><path class="cls-3" d="M0,72v5.13H106.14A51.24,51.24,0,0,0,108.75,72Z"/><path class="cls-3" d="M0,61.68v5.14H110.69A50.92,50.92,0,0,0,112,61.68Z"/><path class="cls-3" d="M0,41.22v5.14H112.8a51.15,51.15,0,0,0-.77-5.14Z"/><circle class="cls-2" cx="20.59" cy="20.57" r="20.56" transform="translate(-8.07 15.53) rotate(-35)"/><path class="cls-2" d="M109.36,111.56a20.56,20.56,0,0,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/></g></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 175.64 143.93"><defs><style type="text/css">.cls-1{fill:#e45e5d;}.cls-2{fill:#c7bdcd;}.cls-3{fill:#f69e98;}</style></defs><title>Asset 3</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><path class="cls-2" d="M147.19,51.12h25.61a2.57,2.57,0,1,0,0-5.14H147.19a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-2" d="M147.19,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.79,0H147.19a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-2" d="M172.79,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23a2.57,2.57,0,0,0-2.57,2.57h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.79,118.28Z"/><path class="cls-2" d="M160,72.63a15.65,15.65,0,1,0,15.65,15.65A15.67,15.67,0,0,0,160,72.63Zm0,26.16A10.51,10.51,0,1,1,170.5,88.28,10.52,10.52,0,0,1,160,98.79Z"/><path class="cls-3" d="M2.77,133.64A20.62,20.62,0,0,0,7,138.77H34.14a20.62,20.62,0,0,0,4.21-5.13Z"/><path class="cls-3" d="M0,92.52v5.14H84a51.48,51.48,0,0,0,8.41-5.14Z"/><rect class="cls-3" y="102.8" width="41.12" height="5.13"/><rect class="cls-3" y="113.08" width="41.12" height="5.14"/><path class="cls-3" d="M.68,15.41H98.3a51.8,51.8,0,0,0-5.86-5.14H2.78A20.41,20.41,0,0,0,.68,15.41Z"/><path class="cls-3" d="M0,123.36H0a20.53,20.53,0,0,0,.67,5.12H40.45a20.53,20.53,0,0,0,.67-5.12H0Z"/><path class="cls-3" d="M0,56.53H112.8c.17-1.69.26-3.4.26-5.13H0Z"/><path class="cls-3" d="M0,82.24v5.14H98.32a51.79,51.79,0,0,0,4.43-5.14Z"/><path class="cls-3" d="M0,20.57V25.7H106.14a51.58,51.58,0,0,0-3.39-5.14Z"/><path class="cls-3" d="M20.81,0h-.25A20.46,20.46,0,0,0,7,5.14H84A51.07,51.07,0,0,0,61.67,0Z"/><path class="cls-3" d="M0,30.85V36H110.69a51,51,0,0,0-1.94-5.14Z"/><path class="cls-3" d="M0,72v5.13H106.14A51.24,51.24,0,0,0,108.75,72Z"/><path class="cls-3" d="M0,61.68v5.14H110.69A50.92,50.92,0,0,0,112,61.68Z"/><path class="cls-3" d="M0,41.22v5.14H112.8a51.15,51.15,0,0,0-.77-5.14Z"/><circle class="cls-2" cx="20.59" cy="20.57" r="20.56" transform="translate(-8.07 15.53) rotate(-35)"/><path class="cls-2" d="M109.36,111.56a20.56,20.56,0,0,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/></g></g></svg>
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.4 KiB |
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style>.cls-1{fill:#764d80;}.cls-2{fill:#afdbc5;}</style></defs><title>Asset 1</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><circle class="cls-2" cx="20.59" cy="20.57" r="20.56" transform="matrix(0.82, -0.57, 0.57, 0.82, -8.07, 15.53)"/><path class="cls-2" d="M109.36,111.56a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/><path class="cls-2" d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-2" d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,1,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-2" d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path class="cls-2" d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/></g></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style type="text/css">.cls-1{fill:#764d80;}.cls-2{fill:#afdbc5;}</style></defs><title>Asset 1</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><circle class="cls-2" cx="20.59" cy="20.57" r="20.56" transform="matrix(0.82, -0.57, 0.57, 0.82, -8.07, 15.53)"/><path class="cls-2" d="M109.36,111.56a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/><path class="cls-2" d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-2" d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,1,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-2" d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path class="cls-2" d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/></g></g></svg>
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style>.cls-1{fill:#fff;}</style></defs><title>Asset 6</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/><path d="M62.33,0H21.22A20.56,20.56,0,0,0,.66,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H62.33A51.38,51.38,0,0,0,62.33,0Z"/><path class="cls-1" d="M21.22,138.81A15.45,15.45,0,0,1,5.79,123.37V20.57A15.45,15.45,0,0,1,21.09,5.14H62.33a46.26,46.26,0,0,1,0,92.51H36.65v25.71A15.45,15.45,0,0,1,21.22,138.81Z"/><path d="M21.22,133.68a10.32,10.32,0,0,1-10.3-10.3V20.57A10.33,10.33,0,0,1,21,10.27H62.33a41.13,41.13,0,0,1,0,82.26H31.52v30.84A10.32,10.32,0,0,1,21.22,133.68Z"/><path class="cls-1" d="M21.22,128.55A5.18,5.18,0,0,1,16,123.37V20.57a5.2,5.2,0,0,1,5-5.17H62.33a36,36,0,0,1,0,72H26.39v36A5.18,5.18,0,0,1,21.22,128.55Z"/><path d="M21.27,82.28H62.33a30.87,30.87,0,0,0,0-61.75H21.22Z"/><path class="cls-1" d="M26.39,77.15l0-51.49h36a25.75,25.75,0,0,1,0,51.49Z"/><path d="M31.51,72l0-41.23H62.33a20.62,20.62,0,0,1,0,41.23Z"/><path class="cls-1" d="M36.64,66.9l0-31H62.33a15.49,15.49,0,0,1,0,31Z"/><path d="M41.76,61.77l0-20.72H62.33a10.36,10.36,0,0,1,0,20.72Z"/><path class="cls-1" d="M46.89,56.64V46.18H62.33a5.23,5.23,0,0,1,0,10.47Z"/><circle cx="20.56" cy="20.57" r="20.56" transform="translate(-8.08 15.51) rotate(-35)"/><path d="M109.34,111.57a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.55,67.58Z"/></g></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style type="text/css">.cls-1{fill:#fff;}</style></defs><title>Asset 6</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/><path d="M62.33,0H21.22A20.56,20.56,0,0,0,.66,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H62.33A51.38,51.38,0,0,0,62.33,0Z"/><path class="cls-1" d="M21.22,138.81A15.45,15.45,0,0,1,5.79,123.37V20.57A15.45,15.45,0,0,1,21.09,5.14H62.33a46.26,46.26,0,0,1,0,92.51H36.65v25.71A15.45,15.45,0,0,1,21.22,138.81Z"/><path d="M21.22,133.68a10.32,10.32,0,0,1-10.3-10.3V20.57A10.33,10.33,0,0,1,21,10.27H62.33a41.13,41.13,0,0,1,0,82.26H31.52v30.84A10.32,10.32,0,0,1,21.22,133.68Z"/><path class="cls-1" d="M21.22,128.55A5.18,5.18,0,0,1,16,123.37V20.57a5.2,5.2,0,0,1,5-5.17H62.33a36,36,0,0,1,0,72H26.39v36A5.18,5.18,0,0,1,21.22,128.55Z"/><path d="M21.27,82.28H62.33a30.87,30.87,0,0,0,0-61.75H21.22Z"/><path class="cls-1" d="M26.39,77.15l0-51.49h36a25.75,25.75,0,0,1,0,51.49Z"/><path d="M31.51,72l0-41.23H62.33a20.62,20.62,0,0,1,0,41.23Z"/><path class="cls-1" d="M36.64,66.9l0-31H62.33a15.49,15.49,0,0,1,0,31Z"/><path d="M41.76,61.77l0-20.72H62.33a10.36,10.36,0,0,1,0,20.72Z"/><path class="cls-1" d="M46.89,56.64V46.18H62.33a5.23,5.23,0,0,1,0,10.47Z"/><circle cx="20.56" cy="20.57" r="20.56" transform="translate(-8.08 15.51) rotate(-35)"/><path d="M109.34,111.57a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.55,67.58Z"/></g></g></svg>
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
|
@ -62,6 +62,8 @@ var VectorConferenceHandler = require('../VectorConferenceHandler');
|
|||
var UpdateChecker = require("./updater");
|
||||
var q = require('q');
|
||||
var request = require('browser-request');
|
||||
import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore';
|
||||
import * as languageHandler from 'matrix-react-sdk/lib/languageHandler';
|
||||
|
||||
import url from 'url';
|
||||
|
||||
|
@ -228,8 +230,9 @@ function onLoadCompleted() {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
async function loadApp() {
|
||||
await loadLanguage();
|
||||
|
||||
const fragparts = parseQsFromFragment(window.location);
|
||||
const params = parseQs(window.location);
|
||||
|
||||
|
@ -309,4 +312,22 @@ async function loadApp() {
|
|||
}
|
||||
}
|
||||
|
||||
async function loadLanguage() {
|
||||
const prefLang = UserSettingsStore.getLocalSetting('language');
|
||||
let langs = [];
|
||||
|
||||
if (!prefLang) {
|
||||
languageHandler.getLanguagesFromBrowser().forEach((l) => {
|
||||
langs.push(...languageHandler.getNormalizedLanguageKeys(l));
|
||||
});
|
||||
} else {
|
||||
langs = [prefLang];
|
||||
}
|
||||
try {
|
||||
await languageHandler.setLanguage(langs);
|
||||
} catch (e) {
|
||||
console.error("Unable to set language", e);
|
||||
}
|
||||
}
|
||||
|
||||
loadApp();
|
||||
|
|
|
@ -20,7 +20,7 @@ limitations under the License.
|
|||
import VectorBasePlatform from './VectorBasePlatform';
|
||||
import dis from 'matrix-react-sdk/lib/dispatcher';
|
||||
import q from 'q';
|
||||
import electron, {remote} from 'electron';
|
||||
import electron, {remote, ipcRenderer} from 'electron';
|
||||
|
||||
remote.autoUpdater.on('update-downloaded', onUpdateDownloaded);
|
||||
|
||||
|
@ -54,20 +54,24 @@ function platformFriendlyName(): string {
|
|||
}
|
||||
}
|
||||
|
||||
function _onAction(payload: Object) {
|
||||
// Whitelist payload actions, no point sending most across
|
||||
if (['call_state'].includes(payload.action)) {
|
||||
ipcRenderer.send('app_onAction', payload);
|
||||
}
|
||||
}
|
||||
|
||||
export default class ElectronPlatform extends VectorBasePlatform {
|
||||
constructor() {
|
||||
super();
|
||||
dis.register(_onAction);
|
||||
}
|
||||
|
||||
setNotificationCount(count: number) {
|
||||
if (this.notificationCount === count) return;
|
||||
super.setNotificationCount(count);
|
||||
// this sometimes throws because electron is made of fail:
|
||||
// https://github.com/electron/electron/issues/7351
|
||||
// For now, let's catch the error, but I suspect it may
|
||||
// continue to fail and we might just have to accept that
|
||||
// electron's remote RPC is a non-starter for now and use IPC
|
||||
try {
|
||||
remote.app.setBadgeCount(count);
|
||||
} catch (e) {
|
||||
console.error('Failed to set notification count', e);
|
||||
}
|
||||
|
||||
ipcRenderer.send('setBadgeCount', count);
|
||||
}
|
||||
|
||||
supportsNotifications(): boolean {
|
||||
|
@ -79,7 +83,6 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
|||
}
|
||||
|
||||
displayNotification(title: string, msg: string, avatarUrl: string, room: Object): Notification {
|
||||
|
||||
// GNOME notification spec parses HTML tags for styling...
|
||||
// Electron Docs state all supported linux notification systems follow this markup spec
|
||||
// https://github.com/electron/electron/blob/master/docs/tutorial/desktop-environment-integration.md#linux
|
||||
|
|
|
@ -17,12 +17,57 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import BasePlatform from 'matrix-react-sdk/lib/BasePlatform'
|
||||
import BasePlatform from 'matrix-react-sdk/lib/BasePlatform';
|
||||
import Favico from 'favico.js';
|
||||
|
||||
/**
|
||||
* Vector-specific extensions to the BasePlatform template
|
||||
*/
|
||||
export default class VectorBasePlatform extends BasePlatform {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
// The 'animations' are really low framerate and look terrible.
|
||||
// Also it re-starts the animationb every time you set the badge,
|
||||
// and we set the state each time, even if the value hasn't changed,
|
||||
// so we'd need to fix that if enabling the animation.
|
||||
this.favicon = new Favico({animation: 'none'});
|
||||
this._updateFavicon();
|
||||
}
|
||||
|
||||
_updateFavicon() {
|
||||
try {
|
||||
// This needs to be in in a try block as it will throw
|
||||
// if there are more than 100 badge count changes in
|
||||
// its internal queue
|
||||
let bgColor = "#d00",
|
||||
notif = this.notificationCount;
|
||||
|
||||
if (this.errorDidOccur) {
|
||||
notif = notif || "×";
|
||||
bgColor = "#f00";
|
||||
}
|
||||
|
||||
this.favicon.badge(notif, {
|
||||
bgColor: bgColor,
|
||||
});
|
||||
} catch (e) {
|
||||
console.warn(`Failed to set badge count: ${e.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
setNotificationCount(count: number) {
|
||||
if (this.notificationCount === count) return;
|
||||
super.setNotificationCount(count);
|
||||
this._updateFavicon();
|
||||
}
|
||||
|
||||
setErrorStatus(errorDidOccur: boolean) {
|
||||
if (this.errorDidOccur === errorDidOccur) return;
|
||||
super.setErrorStatus(errorDidOccur);
|
||||
this._updateFavicon();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for the availability of an update to the version of the
|
||||
* app that's currently running.
|
||||
|
|
|
@ -18,7 +18,6 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import VectorBasePlatform from './VectorBasePlatform';
|
||||
import Favico from 'favico.js';
|
||||
import request from 'browser-request';
|
||||
import dis from 'matrix-react-sdk/lib/dispatcher.js';
|
||||
import q from 'q';
|
||||
|
@ -30,45 +29,6 @@ export default class WebPlatform extends VectorBasePlatform {
|
|||
constructor() {
|
||||
super();
|
||||
this.runningVersion = null;
|
||||
// The 'animations' are really low framerate and look terrible.
|
||||
// Also it re-starts the animationb every time you set the badge,
|
||||
// and we set the state each time, even if the value hasn't changed,
|
||||
// so we'd need to fix that if enabling the animation.
|
||||
this.favicon = new Favico({animation: 'none'});
|
||||
this._updateFavicon();
|
||||
}
|
||||
|
||||
_updateFavicon() {
|
||||
try {
|
||||
// This needs to be in in a try block as it will throw
|
||||
// if there are more than 100 badge count changes in
|
||||
// its internal queue
|
||||
let bgColor = "#d00",
|
||||
notif = this.notificationCount;
|
||||
|
||||
if (this.errorDidOccur) {
|
||||
notif = notif || "×";
|
||||
bgColor = "#f00";
|
||||
}
|
||||
|
||||
this.favicon.badge(notif, {
|
||||
bgColor: bgColor,
|
||||
});
|
||||
} catch (e) {
|
||||
console.warn(`Failed to set badge count: ${e.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
setNotificationCount(count: number) {
|
||||
if (this.notificationCount === count) return;
|
||||
super.setNotificationCount(count);
|
||||
this._updateFavicon();
|
||||
}
|
||||
|
||||
setErrorStatus(errorDidOccur: boolean) {
|
||||
if (this.errorDidOccur === errorDidOccur) return;
|
||||
super.setErrorStatus(errorDidOccur);
|
||||
this._updateFavicon();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|