Merge branch 'develop' into t3chguy/electron_profiles

pull/4030/head
Michael Telatynski 2017-06-01 00:01:53 +01:00 committed by GitHub
commit 5762323bd1
30 changed files with 391 additions and 130 deletions

View File

@ -1,6 +1,17 @@
language: node_js
node_js:
- 6 # node v6, to match jenkins
# make sure we work with a range of node versions.
# As of the time of writing:
# - 4.x is still in LTS (until April 2018), but some of our deps (notably
# extract-zip) don't work with it
# - 5.x has been EOLed for nearly a year.
# - 6.x is the current 'LTS' version
# - 7.x is the current 'current' version (until October 2017)
#
# see: https://github.com/nodejs/LTS/
- 6.0
- 6
- 7
install:
- scripts/fetch-develop.deps.sh
- npm install

View File

@ -55,9 +55,10 @@ Building From Source
Riot is a modular webapp built with modern ES6 and requires a npm build system
to build.
1. Install or update `node.js` so that your `npm` is at least at version `2.0.0`
1. Clone the repo: `git clone https://github.com/vector-im/riot-web.git`
1. Switch to the riot-web directory: `cd riot-web`
1. Install or update `node.js` so that your `node` is at least v6.0.0 (and `npm`
is at least v3.8.6).
1. Clone the repo: `git clone https://github.com/vector-im/riot-web.git`.
1. Switch to the riot-web directory: `cd riot-web`.
1. If you're using the `develop` branch, install the develop versions of the
dependencies, as the released ones will be too old:
```
@ -65,7 +66,7 @@ to build.
```
Whenever you git pull on riot-web you will also probably need to force an update
to these dependencies - the simplest way is to re-run the script, but you can also
manually update and reuild them:
manually update and rebuild them:
```
cd matrix-js-sdk
git pull
@ -85,10 +86,10 @@ to build.
up-to-date. Or just use https://riot.im/develop - the continuous integration
release of the develop branch.
(Note that we don't reference the develop versions in git directly due to
https://github.com/npm/npm/issues/3055)
1. Install the prerequisites: `npm install`
https://github.com/npm/npm/issues/3055.)
1. Install the prerequisites: `npm install`.
1. Configure the app by copying `config.sample.json` to `config.json` and
modifying it (see below for details)
modifying it (see below for details).
1. `npm run dist` to build a tarball to deploy. Untaring this file will give
a version-specific directory containing all the files that need to go on your
web server.

View File

@ -10,5 +10,9 @@
"servers": [
"matrix.org"
]
},
"piwik": {
"url": "https://piwik.riot.im/",
"siteId": 1
}
}

View File

@ -7,6 +7,7 @@
"author": "Vector Creations Ltd.",
"dependencies": {
"electron-window-state": "^4.1.0",
"auto-launch": "^5.0.1",
"minimist": "^1.2.0"
}
}

View File

@ -12,5 +12,9 @@
"servers": [
"matrix.org"
]
},
"piwik": {
"url": "https://piwik.riot.im/",
"siteId": 1
}
}

View File

@ -23,6 +23,7 @@ if (checkSquirrelHooks()) return;
const argv = require('minimist')(process.argv);
const electron = require('electron');
const AutoLaunch = require('auto-launch');
const tray = require('./tray');
const vectorMenu = require('./vectormenu');
@ -50,47 +51,6 @@ const INITIAL_UPDATE_DELAY_MS = 30 * 1000;
let mainWindow = null;
let appQuitting = false;
function safeOpenURL(target) {
// openExternal passes the target to open/start/xdg-open,
// so put fairly stringent limits on what can be opened
// (for instance, open /bin/sh does indeed open a terminal
// with a shell, albeit with no arguments)
const parsedUrl = url.parse(target);
if (PERMITTED_URL_SCHEMES.indexOf(parsedUrl.protocol) > -1) {
// explicitly use the URL re-assembled by the url library,
// so we know the url parser has understood all the parts
// of the input string
const newTarget = url.format(parsedUrl);
electron.shell.openExternal(newTarget);
}
}
function onWindowOrNavigate(ev, target) {
// always prevent the default: if something goes wrong,
// we don't want to end up opening it in the electron
// app, as we could end up opening any sort of random
// url in a window that has node scripting access.
ev.preventDefault();
safeOpenURL(target);
}
function onLinkContextMenu(ev, params) {
const popupMenu = new electron.Menu();
popupMenu.append(new electron.MenuItem({
label: params.linkURL,
click() { safeOpenURL(params.linkURL); },
}));
popupMenu.append(new electron.MenuItem({
label: 'Copy Link Address',
click() { electron.clipboard.writeText(params.linkURL); },
}));
popupMenu.popup();
ev.preventDefault();
}
function installUpdate() {
// for some reason, quitAndInstall does not fire the
// before-quit event, so we need to set the flag here.
@ -214,6 +174,47 @@ if (shouldQuit) {
electron.app.exit();
}
const launcher = new AutoLaunch({
name: vectorConfig.brand || 'Riot',
isHidden: true,
mac: {
useLaunchAgent: true,
},
});
const settings = {
'auto-launch': {
get: launcher.isEnabled,
set: function(bool) {
if (bool) {
return launcher.enable();
} else {
return launcher.disable();
}
},
},
};
electron.ipcMain.on('settings_get', async function(ev) {
const data = {};
try {
await Promise.all(Object.keys(settings).map(async function (setting) {
data[setting] = await settings[setting].get();
}));
ev.sender.send('settings', data);
} catch(e) { console.error(e); }
});
electron.ipcMain.on('settings_set', function(ev, key, value) {
console.log(key, value);
if (settings[key] && settings[key].set) {
settings[key].set(value);
}
});
electron.app.on('ready', () => {
if (vectorConfig.update_base_url) {
console.log(`Starting auto update with base URL: ${vectorConfig.update_base_url}`);
@ -243,6 +244,10 @@ electron.app.on('ready', () => {
mainWindow.loadURL(`file://${__dirname}/../../webapp/index.html`);
electron.Menu.setApplicationMenu(vectorMenu);
// explicitly hide because setApplicationMenu on Linux otherwise shows...
// https://github.com/electron/electron/issues/9621
mainWindow.hide();
// Create trayIcon icon
tray.create(mainWindow, {
icon_path: iconPath,

View File

@ -33,7 +33,7 @@
"build:compile": "npm run reskindex && babel --source-maps -d lib src",
"build:bundle": "cross-env NODE_ENV=production webpack -p --progress",
"build:bundle:dev": "webpack --optimize-occurence-order --progress",
"build:electron": "npm run clean && npm run build && build -wml --ia32 --x64",
"build:electron": "npm run clean && npm run build && npm run install:electron && build -wml --ia32 --x64",
"build": "npm run reskindex && npm run build:res && npm run build:bundle",
"build:dev": "npm run reskindex && npm run build:res && npm run build:bundle:dev",
"dist": "scripts/package.sh",

View File

@ -6,6 +6,8 @@
# the branch the current checkout is on, use that branch. Otherwise,
# use develop.
set -e
# Look in the many different CI env vars for which branch we're
# building
if [[ "$TRAVIS" == true ]]; then
@ -40,13 +42,13 @@ dodep matrix-org matrix-react-sdk
mkdir -p node_modules
cd node_modules
rm -r matrix-js-sdk 2> /dev/null
rm -r matrix-js-sdk 2> /dev/null || true
ln -s ../matrix-js-sdk ./
pushd matrix-js-sdk
npm install
popd
rm -r matrix-react-sdk 2> /dev/null
rm -r matrix-react-sdk 2> /dev/null || true
ln -s ../matrix-react-sdk ./
pushd matrix-react-sdk
mkdir -p node_modules

View File

@ -17,6 +17,7 @@ limitations under the License.
'use strict';
var React = require('react');
import { _t, _tJsx } from 'matrix-react-sdk/lib/languageHandler';
module.exports = React.createClass({
displayName: 'CompatibilityPage',
@ -39,23 +40,37 @@ module.exports = React.createClass({
return (
<div className="mx_CompatibilityPage">
<div className="mx_CompatibilityPage_box">
<p>Sorry, your browser is <b>not</b> able to run Riot.</p>
<p>{ _tJsx("Sorry, your browser is <b>not</b> able to run Riot.", /<b>(.*?)<\/b>/, (sub) => <b>{sub}</b>) } </p>
<p>
Riot uses many advanced browser features, some of which are not
available or experimental in your current browser.
{ _t("Riot uses many advanced browser features, some of which are not available or experimental in your current browser.") }
</p>
<p>
Please install <a href="https://www.google.com/chrome">Chrome</a> or <a href="https://getfirefox.com">Firefox</a> for
the best experience. <a href="http://apple.com/safari">Safari</a> and <a href="http://opera.com">Opera</a> work too.
{ _tJsx('Please install <a href="https://www.google.com/chrome">Chrome</a> or <a href="https://getfirefox.com">Firefox</a> for the best experience.',
[
/<a href="https:\/\/www.google.com\/chrome">(.*?)<\/a>/,
/<a href="https:\/\/getfirefox.com">(.*?)<\/a>/,
],
[
(sub) => <a href="https://www.google.com/chrome">{sub}</a>,
(sub) => <a href="https://getfirefox.com">{sub}</a>,
]
)}
{ _tJsx('<a href="http://apple.com/safari">Safari</a> and <a href="http://opera.com">Opera</a> work too.',
[
/<a href="http:\/\/apple\.com\/safari">(.*?)<\/a>/,
/<a href="http:\/\/opera\.com">(.*?)<\/a>/,
],
[
(sub) => <a href="http://apple.com/safari">{sub}</a>,
(sub) => <a href="http://opera.com">{sub}</a>,
]
)}
</p>
<p>
With your current browser, the look and feel of the application may
be completely incorrect, and some or all features may not function.
If you want to try it anyway you can continue, but you are on your own
in terms of any issues you may encounter!
{ _t("With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!") }
</p>
<button onClick={this.onAccept}>
I understand the risks and wish to continue
{ _t("I understand the risks and wish to continue") }
</button>
</div>
</div>

View File

@ -22,6 +22,7 @@ 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 Analytics from 'matrix-react-sdk/lib/Analytics';
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';
@ -61,24 +62,26 @@ module.exports = React.createClass({
return {
phase: this.Phase.MemberInfo,
member: member,
}
}
else {
};
} else {
return {
phase: this.Phase.MemberList
}
};
}
},
onMemberListButtonClick: function() {
Analytics.trackEvent('Right Panel', 'Member List Button', 'click');
this.setState({ phase: this.Phase.MemberList });
},
onFileListButtonClick: function() {
Analytics.trackEvent('Right Panel', 'File List Button', 'click');
this.setState({ phase: this.Phase.FilePanel });
},
onNotificationListButtonClick: function() {
Analytics.trackEvent('Right Panel', 'Notification List Button', 'click');
this.setState({ phase: this.Phase.NotificationPanel });
},
@ -93,7 +96,7 @@ module.exports = React.createClass({
var NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog");
Modal.createDialog(NeedToRegisterDialog, {
title: _t('Please Register'),
description: _t('Guest users can\'t invite users. Please register to invite') + '.'
description: _t('Guest users can\'t invite users. Please register to invite.')
});
return;
}
@ -218,7 +221,7 @@ module.exports = React.createClass({
<TintableSvg src="img/icons-notifications.svg" width="25" height="25"/>
{ notificationsHighlight }
</AccessibleButton>
<div className="mx_RightPanel_headerButton mx_RightPanel_collapsebutton" title="Hide panel" onClick={ this.onCollapseClick }>
<div className="mx_RightPanel_headerButton mx_RightPanel_collapsebutton" title={ _t("Hide panel") } onClick={ this.onCollapseClick }>
<TintableSvg src="img/minimise.svg" width="10" height="16"/>
</div>
</div>;

View File

@ -213,11 +213,11 @@ module.exports = React.createClass({
var Loader = sdk.getComponent("elements.Spinner");
var modal = Modal.createDialog(Loader);
var step = _t('remove %(name)s from the directory', {name: name}) + '.';
var step = _t('remove %(name)s from the directory.', {name: name});
MatrixClientPeg.get().setRoomDirectoryVisibility(room.room_id, 'private').then(() => {
if (!alias) return;
step = _t('delete the alias') + '.';
step = _t('delete the alias.');
return MatrixClientPeg.get().deleteAlias(alias);
}).done(() => {
modal.close();
@ -356,7 +356,7 @@ module.exports = React.createClass({
var NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog");
Modal.createDialog(NeedToRegisterDialog, {
title: _t('Failed to join the room'),
description: _t('This room is inaccessible to guests. You may be able to join if you register') + '.'
description: _t('This room is inaccessible to guests. You may be able to join if you register.')
});
return;
}

View File

@ -100,13 +100,13 @@ module.exports = React.createClass({
if (this.props.collapsed) {
toggleCollapse =
<AccessibleButton className="mx_SearchBox_maximise" tabIndex={collapseTabIndex} onClick={ this.onToggleCollapse.bind(this, true) }>
<TintableSvg src="img/maximise.svg" width="10" height="16" alt="Expand panel"/>
<TintableSvg src="img/maximise.svg" width="10" height="16" alt={ _t("Expand panel") }/>
</AccessibleButton>
}
else {
toggleCollapse =
<AccessibleButton className="mx_SearchBox_minimise" tabIndex={collapseTabIndex} onClick={ this.onToggleCollapse.bind(this, false) }>
<TintableSvg src="img/minimise.svg" width="10" height="16" alt="Collapse panel"/>
<TintableSvg src="img/minimise.svg" width="10" height="16" alt={ _t("Collapse panel") }/>
</AccessibleButton>
}

View File

@ -161,7 +161,7 @@ module.exports = React.createClass({
);
}
if (this.state.canRedact) {
if (!eventStatus && this.state.canRedact) {
redactButton = (
<div className="mx_MessageContextMenu_field" onClick={this.onRedactClick}>
{ _t('Remove') }

View File

@ -16,11 +16,10 @@ limitations under the License.
'use strict';
var React = require('react');
import React from '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');
import Notifier from 'matrix-react-sdk/lib/Notifier';
import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton';
module.exports = React.createClass({
displayName: 'MatrixToolbar',
@ -43,5 +42,5 @@ module.exports = React.createClass({
<AccessibleButton className="mx_MatrixToolbar_close" onClick={ this.hideToolbar } ><img src="img/cancel.svg" width="18" height="18" /></AccessibleButton>
</div>
);
}
},
});

View File

@ -16,7 +16,6 @@ limitations under the License.
'use strict';
import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore';
const React = require('react');
const DateUtils = require('matrix-react-sdk/lib/DateUtils');
@ -30,7 +29,7 @@ module.exports = React.createClass({
render: function() {
const date = new Date(this.props.ts);
return (
<span className="mx_MessageTimestamp" title={ DateUtils.formatFullDate(date) }>
<span className="mx_MessageTimestamp" title={ DateUtils.formatFullDate(date, this.props.showTwelveHour) }>
{ DateUtils.formatTime(date, this.props.showTwelveHour) }
</span>
);

View File

@ -16,7 +16,7 @@ limitations under the License.
'use strict';
var React = require('react');
import { _t } from 'matrix-react-sdk/lib/languageHandler';
import { _t, _tJsx } from 'matrix-react-sdk/lib/languageHandler';
var q = require("q");
var sdk = require('matrix-react-sdk');
var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg');
@ -535,7 +535,16 @@ module.exports = React.createClass({
// it corresponds to all content push rules (stored in self.state.vectorContentRule)
self.state.vectorPushRules.push({
"vectorRuleId": "_keywords",
"description" : (<span>Messages containing <span className="mx_UserNotifSettings_keywords" onClick={ self.onKeywordsClicked }>keywords</span></span>),
"description" : (
<span>
{ _tJsx('Messages containing <span>keywords</span>',
/<span>(.*?)<\/span>/,
(sub) => {
return <span className="mx_UserNotifSettings_keywords" onClick={ self.onKeywordsClicked }>{sub}</span>;
}
)}
</span>
),
"vectorState": self.state.vectorContentRules.vectorState
});
}
@ -549,7 +558,7 @@ module.exports = React.createClass({
self.state.vectorPushRules.push({
"vectorRuleId": vectorRuleId,
"description" : ruleDefinition.description,
"description" : _t(ruleDefinition.description), // Text from VectorPushRulesDefinitions.js
"rule": rule,
"vectorState": vectorState,
});
@ -590,6 +599,7 @@ module.exports = React.createClass({
phase: self.phases.DISPLAY
});
}, function(error) {
console.error(error);
self.setState({
phase: self.phases.ERROR
});
@ -624,7 +634,7 @@ module.exports = React.createClass({
return (
<tr key={ className }>
<th>
{title}
{ title }
</th>
<th>

View File

@ -10,9 +10,9 @@
"Room directory": "Raum-Verzeichnis",
"Create new room": "Neuen Raum erstellen",
"Settings": "Einstellungen",
"powered by Matrix": "basierend auf Matrix",
"Custom Server Options": "Optionen für eigenen Server",
"Dismiss": "ausblenden",
"powered by Matrix": "betrieben mit Matrix",
"Custom Server Options": "Erweiterte Server-Optionen",
"Dismiss": "Ablehnen",
"Failed to get protocol list from Home Server": "Fehler beim Abrufen der Protokoll-Liste 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",
@ -23,7 +23,7 @@
"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",
"Add an email address above to configure email notifications": "Füge oben eine E-Mail-Adresse hinzu, um die E-Mail-Benachrichtigungseinstellungen zu konfigurieren",
"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.": "Beim Speichern deiner E-Mail-Benachrichtigungseinstellungen ist ein Fehler aufgetreten.",
"and remove": "und entfernen",
@ -37,7 +37,7 @@
"Enable desktop notifications": "Desktop-Benachrichtigungen aktivieren",
"Enable email notifications": "Aktiviere E-Mail Benachrichtigungen",
"Enable notifications for this account": "Aktiviere Benachrichtigungen für diesen Benutzer",
"Enter keywords separated by a comma:": "Kommagetrennte Schlagworte eingeben:",
"Enter keywords separated by a comma:": "Schlagworte kommagetrennt eingeben:",
"Error": "Fehler",
"Error saving email notification preferences": "Fehler beim Speichern der E-Mail-Benachrichtigungseinstellungen",
"#example": "#Beispiel",
@ -45,7 +45,7 @@
"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 get public room list": "Die Liste der öffentlichen Räume konnte nicht geladen werden",
"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",
@ -54,7 +54,7 @@
"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",
"Guest users can't invite users. Please register to invite": "Gastnutzer können keine Nutzer einladen. Bitte registriere dich, um Nutzer einzuladen",
"Keywords": "Schlüsselwörter",
"Leave": "Verlassen",
"Low Priority": "Niedrige Priorität",
@ -72,7 +72,7 @@
"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 fetch notification target list": "Liste der Benachrichtigungsempfänger konnte nicht abgerufen werden",
"Unable to join network": "Es ist nicht möglich, dem Netzwerk beizutreten",
"unknown error code": "Unbekannter Fehlercode",
"Unnamed room": "Unbenannter Raum",
@ -91,7 +91,7 @@
"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",
"Failed to set direct chat tag": "Fehler beim Setzen der \"Direkter Chat\"-Kennzeichnung",
"Mentions only": "Nur, wenn du erwähnt wirst",
"Mute": "Stummschalten",
"Permalink": "Permanenter Link",
@ -99,7 +99,7 @@
"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",
"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",
@ -127,5 +127,14 @@
"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-Optionen nutzen, um dich auf anderen Matrix-Servern anzumelden, indem du eine andere Heimserver-URL eingibst. <br/>Dies ermöglicht es dir, Riot mit einem bereits existierenden Matrix-Konto auf einem anderen Heimserver zu nutzen.<br/><br/>Du kannst auch einen benutzerdefinierten Identitäts-Server eingeben, allerdings wirst du dann nicht in der Lage sein, andere Benutzer per E-Mail-Adresse einzuladen oder selbst Einladungen per E-Mail-Adresse zu erhalten."
"customServer_text": "Du kannst die erweiterten Server-Optionen nutzen, um dich auf anderen Matrix-Servern anzumelden, indem du eine andere Heimserver-URL eingibst. <br/>Dies ermöglicht es dir, Riot mit einem bereits existierenden Matrix-Konto auf einem anderen Heimserver zu nutzen.<br/><br/>Du kannst auch einen benutzerdefinierten Identitäts-Server eingeben, allerdings wirst du dann nicht in der Lage sein, andere Benutzer per E-Mail-Adresse einzuladen oder selbst Einladungen per E-Mail-Adresse zu erhalten.",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> und <a href=\"http://opera.com\">Opera</a> funktionieren ebenfalls.",
"I understand the risks and wish to continue": "Ich verstehe das Risiko und möchte fortfahren",
"Messages containing <span>keywords</span>": "Nachrichten, die definierte <span>Schlagworte</span> enthalten",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Bitte installiere <a href=\"https://www.google.com/chrome\">Chrome</a> oder <a href=\"https://getfirefox.com\">Firefox</a> für die beste Erfahrung.",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot nutzt manche erweiterten Browser-Funktionen - manche sind deinem aktuellen Browser nicht verfügbar oder im experimentellen Status.",
"Sorry, your browser is <b>not</b> able to run Riot.": "Es tut uns leid, aber dein Browser kann Riot <b>nicht</b> ausführen.",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "In deinem aktuellen Browser kann das Aussehen und Gefühl der Anwendung komplett inkorrekt sein und einige oder alle Funktionen funktionieren evtl. nicht. Du kannst es trotzdem versuchen und fortfahren, aber du bist alleine mit allen Problemen auf die du stößt!",
"Expand panel": "Panel ausklappen",
"Collapse panel": "Panel einklappen"
}

View File

@ -1,4 +1,5 @@
{
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.",
"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",
@ -9,6 +10,7 @@
"Cancel Sending": "Cancel Sending",
"Can't update user notification settings": "Can't update user notification settings",
"Close": "Close",
"Collapse panel": "Collapse panel",
"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",
@ -29,6 +31,7 @@
"Error": "Error",
"Error saving email notification preferences": "Error saving email notification preferences",
"#example": "#example",
"Expand panel": "Expand panel",
"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",
@ -48,6 +51,7 @@
" 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",
"I understand the risks and wish to continue": "I understand the risks and wish to continue",
"Invite to this room": "Invite to this room",
"Keywords": "Keywords",
"Leave": "Leave",
@ -55,6 +59,7 @@
"Members": "Members",
"Mentions only": "Mentions only",
"Messages containing my display name": "Messages containing my display name",
"Messages containing <span>keywords</span>": "Messages containing <span>keywords</span>",
"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",
@ -72,6 +77,7 @@
"On": "On",
"Operation failed": "Operation failed",
"Permalink": "Permalink",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.",
"Please Register": "Please Register",
"powered by Matrix": "powered by Matrix",
"Quote": "Quote",
@ -83,11 +89,13 @@
"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",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.",
"Room directory": "Room directory",
"Room not found": "Room not found",
"Search for a room": "Search for a room",
"Settings": "Settings",
"Source URL": "Source URL",
"Sorry, your browser is <b>not</b> able to run Riot.": "Sorry, your browser is <b>not</b> able to run Riot.",
"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",
@ -118,5 +126,6 @@
"Saturday": "Saturday",
"Today": "Today",
"Yesterday": "Yesterday",
"Welcome page": "Welcome page"
"Welcome page": "Welcome page",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!"
}

View File

@ -13,10 +13,10 @@
"customServer_text": "Puedes utilizar las opciones de servidor personalizadas para iniciar sesión en otros servidores Matrix especificando una URL de Home server distinta.<br/>Esto te permite usar Riot con una cuenta Matrix existente en un Home server distinto.<br/><br/>También puedes configurar un servidor de identidad personalizado, pero no podrás invitar usuarios por dirección de email, ni ser invitado por email por ti mismo.",
"delete the alias": "borrar el alias",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "¿Borrar la sala alias %(alias)s y retirar %(name)s del directorio?",
"Direct Chat": "Chat Directo",
"Direct Chat": "Conversación directa",
"Directory": "Directorio",
"Download this file": "Descargar este archivo",
"Drop here %(toAction)s": "Soltar aquí %(toAction)s",
"Drop here %(toAction)s": "Suelta aquí para %(toAction)s",
"Enable audible notifications in web client": "Habilitar notificaciones audibles en el cliente web",
"Enable desktop notifications": "Habilitar notificaciones de escritorio",
"Enable email notifications": "Habilitar notificaciones por email",
@ -28,11 +28,11 @@
"#example": "#ejemplo",
"Failed to add tag %(tagName)s to room": "Error al añadir la etiqueta %(tagName)s a la sala",
"Failed to change settings": "Error al cambiar la configuración",
"Failed to forget room %(errCode)s": "No se pudo olvidar la habitación %(errCode)s",
"Failed to forget room %(errCode)s": "Falló al olvidar la sala %(errCode)s",
"Failed to update keywords": "Error al actualizar las palabras clave",
"Failed to get protocol list from Home Server": "Error al obtener la lista de protocolos de Home Server",
"Failed to get public room list": "No se pudo obtener la lista de salas públicas",
"Failed to join the room": "No se puede unir a la habitación",
"Failed to join the room": "Falló al unirse a la sala",
"Failed to remove tag %(tagName)s from room": "Error al eliminar la etiqueta %(tagName)s de la sala",
"Failed to set direct chat tag": "Error al establecer la etiqueta de chat directo",
"Failed to set Direct Message status of room": "No se pudo establecer el estado de Mensaje Directo de la sala",

View File

@ -3,18 +3,18 @@
"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",
"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.",
"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é",
"Custom Server Options": "Options de serveur personnalisées",
"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",
"Dismiss": "Ignorer",
"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",
@ -67,10 +67,10 @@
"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",
"Filter room names": "Filtrer les salons par nom",
"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",
"Guest users can't invite users. Please register to invite": "Les visiteurs 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",
@ -83,7 +83,7 @@
"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",
"Mute": "Couper le son",
"No rooms to show": "Aucun salon à afficher",
"Noisy": "Sonore",
"Notification targets": "Appareils recevant les notifications",
@ -104,7 +104,7 @@
"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",
"This room is inaccessible to guests. You may be able to join if you register": "Ce salon n'est pas ouvert aux visiteurs. 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",
@ -115,10 +115,9 @@
"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",
"Guests can join": "Ouvert aux visiteurs",
" 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.",
"customServer_text": "Vous pouvez utiliser l'option de serveur personnalisé pour vous connectez à d'autres serveurs Matrix, en spécifiant une adresse de homerserver différente.<br/>Cela permet d'utiliser Riot avec un compte existant sur un homeserverdiffé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 cant be displayed here:": "Les notifications pour les mots clés suivant répondent à des critères qui ne peuvent pas être affichés ici :"
}

View File

@ -64,5 +64,68 @@
"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"
"Notify for all other messages/rooms": "Értesítés minden más üzenethez/szobához",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a>val és <a href=\"http://opera.com\">Opera</a>val is működik.",
"Collapse panel": "Panel bezárása",
"customServer_text": "Egyedi Matrix szervert használhatsz a Saját szerver URL beállításával.<br/> Ezzel meglévő Matrix fiókot használhatsz Riot klienssel és egyedi szerverrel.<br/><br/>Beállíthatsz egyedi \"identity\" szervert de akkor nem tudsz e-maillel meghívni felhasználót és téged sem tudnak meghívni e-maillel.",
"Expand panel": "Panel kinyitása",
"I understand the risks and wish to continue": "Megértettem a kockázatot és folytatom",
"Notifications on the following keywords follow rules which cant be displayed here:": "A kulcsszavakhoz tartozó értesítések olyan szabályokat követnek amiket nem lehet itt megjeleníteni:",
"Notify me for anything else": "Értesíts minden egyéb esetben",
"Off": "Ki",
"On": "Be",
"Operation failed": "Művelet sikertelen",
"Permalink": "Állandó hivatkozás",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "A legjobb élmény érdekében telepíts <a href=\"https://www.google.com/chrome\">Chrome</a>ot vagy <a href=\"https://getfirefox.com\">Firefox</a>ot.",
"Please Register": "Regisztrálj",
"powered by Matrix": "Matrixon alapul",
"Quote": "Idézet",
"Redact": "Szerkeszt",
"Reject": "Elutasít",
"Remove %(name)s from the directory?": "Törlöd a %(name)s szobát a listából?",
"Remove": "Töröl",
"remove %(name)s from the directory": "%(name)s szoba törlése a listából",
"Remove from Directory": "Törlés a szobák listájából",
"Resend": "Újraküld",
"Riot does not know how to join a room on this network": "Riot nem tudja, hogy csatlakozzon ehhez a szobához ezen a hálózaton",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot sok haladó képességét használja a böngészőnek amik közül lehet, hogy nem mind érhető el a most használt böngészőben vagy még csak kísérleti jellegű.",
"Room directory": "Szobák listája",
"Room not found": "A szoba nem található",
"Search for a room": "Szoba keresése",
"Settings": "Beállítások",
"Source URL": "Forrás URL",
"Sorry, your browser is <b>not</b> able to run Riot.": "Elnézést, a böngésződ <b>nem</b> képes futtatni a Riotot.",
"Start chat": "Csevegés indítása",
"The Home Server may be too old to support third party networks": "A Saját szerver lehet, hogy túl régi ahhoz, hogy más hálózatokhoz tudjon kapcsolódni",
"There are advanced notifications which are not shown here": "Vannak haladó értesítések amik itt nincsenek megjelenítve",
"The server may be unavailable or overloaded": "A szerver nem érhető el vagy túl van terhelve",
"This room is inaccessible to guests. You may be able to join if you register": "A szoba vendégek számára elérhetetlen. Csak regisztráció után tudsz csatlakozni",
" to room": " szobába",
"Unable to fetch notification target list": "Nem sikerült letölteni az értesítési célok listáját",
"Unable to join network": "Nem sikerült kapcsolódni a hálózathoz",
"Unable to look up room ID from server": "Nem lehet lekérdezni a szoba ID-ját a szervertől",
"Unhide Preview": "Előkép felfedése",
"unknown error code": "ismeretlen hiba kód",
"Unnamed room": "Név nélküli szoba",
"Uploaded on %(date)s by %(user)s": "Feltöltés: %(date)s, %(user)s",
"View Decrypted Source": "Visszafejtett forrás megjelenítése",
"View Source": "Forrás megjelenítése",
"When I'm invited to a room": "Amikor meghívtak a szobába",
"World readable": "Mindenki olvashatja",
"You cannot delete this image. (%(code)s)": "Nem törölheted ezt a képet. (%(code)s)",
"You cannot delete this message. (%(code)s)": "Nem törölheted ezt az üzenetet. (%(code)s)",
"You are not receiving desktop notifications": "Nem fogadsz asztali értesítéseket",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Valószínűleg Riottól eltérő klienssel állítottad be. Riotból nem állítható de érvényben van",
"Sunday": "Vasárnap",
"Monday": "Hétfő",
"Tuesday": "Kedd",
"Wednesday": "Szerda",
"Thursday": "Csütörtök",
"Friday": "Péntek",
"Saturday": "Szombat",
"Today": "Ma",
"Yesterday": "Tegnap",
"Welcome page": "Üdvözlő oldal",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "A jelenlegi bőngésződdel teljesen hibás lehet az alkalmazás kinézete és bizonyos funkciók, ha nem az összes, nem fog működni. Ha mindenképpen ki akarod próbálni, folytathatod de egyedül vagy minden felbukkanó problémával!",
"Messages containing <span>keywords</span>": "Az üzenet <span>kulcsszavakat</span> tartalmaz"
}

View File

@ -9,5 +9,117 @@
"Can't update user notification settings": "Kan ikke oppdatere brukervarsel innstillinger",
"Close": "Lukk",
"Create new room": "Opprett nytt rom",
"Couldn't find a matching Matrix room": "Kunne ikke finne et samsvarende Matrix rom"
"Couldn't find a matching Matrix room": "Kunne ikke finne et samsvarende Matrix rom",
"<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> og <a href=\"http://opera.com\">Opera</a> fungerer også.",
"Call invitation": "Anropsinvitasjon",
"Collapse panel": "Skjul panel",
"Custom Server Options": "Tilpassede serveralternativer",
"customServer_text": "Du kan benytte de egendefinerte serveralternativene til å logge deg på andre Matrix-servere ved å spesifisere en annen Hjemmeserver-URL.<br/>Dette lar deg benytte Riot med en eksisterende Matrix konto på en annen hjemmeserver.<br/><br/>Du kan også angi en egendefinert identitetsserver, men du vil ikke kunne invitere brukere via e-post, eller bli invitert via e-post selv.",
"delete the alias": "Slett aliaset",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Slett rom alias %(alias)s og fjern %(name)s fra katalogen?",
"Direct Chat": "Direkte Chat",
"Directory": "Katalog",
"Download this file": "Last ned filen",
"Drop here %(toAction)s": "Dra hit %(toAction)s",
"Enable audible notifications in web client": "Aktiver lyd-varsel i webklient",
"Enable desktop notifications": "Aktiver skrivebordsvarsler",
"Enable email notifications": "Aktiver e-postvarsler",
"Enable notifications for this account": "Aktiver varsler for denne konto",
"Enable them now": "Aktiver dem nå",
"Enter keywords separated by a comma:": "Angi nøkkelord adskilt med komma:",
"Error": "Feil",
"Error saving email notification preferences": "Feil ved lagring av e-postvarselinnstillinger",
"#example": "#eksempel",
"Expand panel": "Utvid panel",
"Failed to": "Feilet å",
"Failed to add tag %(tagName)s to room": "Kunne ikke legge til tagg %(tagName)s til rom",
"Failed to change settings": "Kunne ikke endre innstillingene",
"Failed to forget room %(errCode)s": "Kunne ikke glemme rommet %(errCode)s",
"Failed to update keywords": "Kunne ikke oppdatere nøkkelord",
"Failed to get protocol list from Home Server": "Kunne ikke hente protokolliste fra Hjemme-Server",
"Failed to get public room list": "Kunne ikke hente offentlig romliste",
"Failed to join the room": "Kunne ikke bli med på rommet",
"Failed to remove tag %(tagName)s from room": "Kunne ikke fjerne tagg %(tagName)s fra rommet",
"Failed to set direct chat tag": "Kunne ikke angi direkte chat-tagg",
"Failed to set Direct Message status of room": "Kunne ikke angi status for direkte melding i rommet",
"Favourite": "Favoritt",
"Fetching third party location failed": "Kunne ikke hente tredjeparts lokalisering",
"Files": "Filer",
"Filter room names": "Filtrer romnavn",
"Forget": "Glem",
" from room": " fra rommet",
"Guests can join": "Gjester kan bli med",
"Guest users can't invite users. Please register to invite": "Gjester kan ikke invitere brukere. Vennligst registrer deg for å invitere",
"I understand the risks and wish to continue": "Jeg forstår risikoen og ønsker å fortsette",
"Invite to this room": "Inviter til dette rommet",
"Keywords": "Nøkkelord",
"Leave": "Forlat",
"Low Priority": "Lav Prioritet",
"Members": "Medlemmer",
"Messages containing my display name": "Meldinger som inneholder mitt visningsnavn",
"Messages containing my user name": "Meldinger som inneholder mitt brukernavn",
"Messages in group chats": "Meldinger i gruppesamtaler",
"Messages in one-to-one chats": "Meldinger i en-til-en samtaler",
"Messages sent by bot": "Meldinger sendt av bot",
"more": "mer",
"No rooms to show": "Ingen rom å vise",
"Noisy": "Bråkete",
"Notification targets": "Mål for varsel",
"Notifications": "Varsler",
"Notifications on the following keywords follow rules which cant be displayed here:": "Varsler på de følgende nøkkelordene følger regler som ikke kan vises her:",
"Notify for all other messages/rooms": "Varsler om alle andre meldinger/rom",
"Notify me for anything else": "Varsle meg om alt annet",
"Off": "Av",
"On": "På",
"Permalink": "Permanent lenke",
"Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Vennligst installer <a href=\"https://www.google.com/chrome\">Chrome</a> eller <a href=\"https://getfirefox.com\">Firefox</a> for den beste opplevelsen.",
"Please Register": "Vennligst registrer deg",
"powered by Matrix": "benytter seg av Matrix",
"Quote": "Sitat",
"Redact": "Maskere",
"Reject": "Avvis",
"Remove %(name)s from the directory?": "Fjern %(name)s fra katalogen?",
"Remove": "Fjern",
"remove %(name)s from the directory": "fjern %(name)s fra katalogen",
"Remove from Directory": "Fjern fra katalogen",
"Resend": "Send på nytt",
"Riot does not know how to join a room on this network": "Riot vet ikke hvordan man kan komme inn på et rom på dette nettverket",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot benytter mange avanserte nettleserfunksjoner, og noen av disse er ikke tilgjengelige eller er eksperimentelle på din nåværende nettleser.",
"Room directory": "Rom katalog",
"Room not found": "Rommet ble ikke funnet",
"Search for a room": "Søk etter et rom",
"Settings": "Innstillinger",
"Source URL": "Kilde URL",
"Sorry, your browser is <b>not</b> able to run Riot.": "Beklager, din nettleser er <b>ikke</b> i stand til å kjøre Riot.",
"Start chat": "Start chat",
"The Home Server may be too old to support third party networks": "Hjemme-serveren kan være for gammel til å støtte tredjeparts-nettverk",
"There are advanced notifications which are not shown here": "Det er avanserte varsler som ikke vises her",
"The server may be unavailable or overloaded": "Serveren kan være utilgjengelig eller overbelastet",
"This room is inaccessible to guests. You may be able to join if you register": "Dette rommet er ikke tilgjengelig for gjester. Du kan kanskje komme inn om du registrerer deg",
" to room": " til rom",
"Unable to fetch notification target list": "Kunne ikke hente varsel-mål liste",
"Unable to join network": "Kunne ikke bli med i nettverket",
"Unable to look up room ID from server": "Kunne ikke slå opp rom-ID fra serveren",
"Unhide Preview": "Vis forhåndsvisning",
"unknown error code": "ukjent feilkode",
"Unnamed room": "Rom uten navn",
"Uploaded on %(date)s by %(user)s": "Lastet opp den %(date)s av %(user)s",
"View Decrypted Source": "Vis dekryptert kilde",
"View Source": "Vis kilde",
"When I'm invited to a room": "Når jeg blir invitert til et rom",
"World readable": "Verden lesbar",
"You cannot delete this image. (%(code)s)": "Du kan ikke slette dette bildet. (%(code)s)",
"You cannot delete this message. (%(code)s)": "Du kan ikke slette denne meldingen. (%(code)s)",
"You are not receiving desktop notifications": "Du mottar ikke skrivebords varsler",
"Messages containing <span>keywords</span>": "Meldinger som inneholder <span>nøkkelord</span>",
"Sunday": "Søndag",
"Monday": "Mandag",
"Tuesday": "Tirsdag",
"Wednesday": "Onsdag",
"Thursday": "Torsdag",
"Friday": "Fredag",
"Saturday": "Lørdag",
"Today": "I dag",
"Yesterday": "I går",
"Welcome page": "Velkomst side"
}

View File

@ -9,12 +9,12 @@
"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",
"Custom Server Options": "Opções para Servidor Personalizado",
"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",
"Dismiss": "Descartar",
"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",
@ -70,7 +70,7 @@
"Operation failed": "A operação falhou",
"Permalink": "Link permanente",
"Please Register": "Por favor, cadastre-se",
"powered by Matrix": "distribuído por Matrix",
"powered by Matrix": "rodando a partir do Matrix",
"Quote": "Citar",
"Redact": "Remover",
"Reject": "Rejeitar",
@ -115,8 +115,9 @@
"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"
"Welcome page": "Página de boas vindas",
"Advanced notification settings": "Configurações avançadas de notificação",
"customServer_text": "Você pode usar as opções de servidor personalizado para entrar em outros servidores Matrix, especificando uma URL de outro Servidor de Base. Isso permite que você use Riot com uma conta Matrix que exista em outro Servidor de Base. Você também pode configurar um servidor de Identidade personalizado, mas neste caso não poderá convidar usuárias(os) pelo endereço de e-mail, ou ser convidado(a) pelo seu endereço de e-mail."
}

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

@ -0,0 +1 @@
{}

View File

@ -65,7 +65,7 @@ module.exports = {
// Messages containing user's display name
".m.rule.contains_display_name": new VectorPushRuleDefinition({
kind: "override",
description: "Messages containing my display name",
description: "Messages containing my display name", // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { // The actions for each vector state, or null to disable the rule.
on: StandardActions.ACTION_NOTIFY,
loud: StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND,
@ -76,7 +76,7 @@ module.exports = {
// Messages containing user's username (localpart/MXID)
".m.rule.contains_user_name": new VectorPushRuleDefinition({
kind: "override",
description: "Messages containing my user name",
description: "Messages containing my user name", // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { // The actions for each vector state, or null to disable the rule.
on: StandardActions.ACTION_NOTIFY,
loud: StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND,
@ -87,7 +87,7 @@ module.exports = {
// Messages just sent to the user in a 1:1 room
".m.rule.room_one_to_one": new VectorPushRuleDefinition({
kind: "underride",
description: "Messages in one-to-one chats",
description: "Messages in one-to-one chats", // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: {
on: StandardActions.ACTION_NOTIFY,
loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,
@ -100,7 +100,7 @@ module.exports = {
// By opposition, all other room messages are from group chat rooms.
".m.rule.message": new VectorPushRuleDefinition({
kind: "underride",
description: "Messages in group chats",
description: "Messages in group chats", // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: {
on: StandardActions.ACTION_NOTIFY,
loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,
@ -111,7 +111,7 @@ module.exports = {
// Invitation for the user
".m.rule.invite_for_me": new VectorPushRuleDefinition({
kind: "underride",
description: "When I'm invited to a room",
description: "When I'm invited to a room", // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: {
on: StandardActions.ACTION_NOTIFY,
loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,
@ -122,7 +122,7 @@ module.exports = {
// Incoming call
".m.rule.call": new VectorPushRuleDefinition({
kind: "underride",
description: "Call invitation",
description: "Call invitation", // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: {
on: StandardActions.ACTION_NOTIFY,
loud: StandardActions.ACTION_NOTIFY_RING_SOUND,
@ -133,7 +133,7 @@ module.exports = {
// Notifications from bots
".m.rule.suppress_notices": new VectorPushRuleDefinition({
kind: "override",
description: "Messages sent by bot",
description: "Messages sent by bot", // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: {
// .m.rule.suppress_notices is a "negative" rule, we have to invert its enabled value for vector UI
on: StandardActions.ACTION_DISABLED,

View File

@ -62,7 +62,7 @@ limitations under the License.
visibility: hidden;
white-space: nowrap;
color: $event-timestamp-color;
font-size: 11px;
font-size: 10px;
left: 8px;
position: absolute;
}

View File

@ -56,7 +56,7 @@ if (process.env.NODE_ENV !== 'production') {
var RunModernizrTests = require("./modernizr"); // this side-effects a global
var ReactDOM = require("react-dom");
var sdk = require("matrix-react-sdk");
var PlatformPeg = require("matrix-react-sdk/lib/PlatformPeg");
const PlatformPeg = require("matrix-react-sdk/lib/PlatformPeg");
sdk.loadSkin(require('../component-index'));
var VectorConferenceHandler = require('../VectorConferenceHandler');
var UpdateChecker = require("./updater");
@ -143,7 +143,7 @@ var onNewScreen = function(screen) {
var hash = '#/' + screen;
lastLocationHashSet = hash;
window.location.hash = hash;
}
};
// We use this to work out what URL the SDK should
// pass through when registering to allow the user to
@ -295,8 +295,7 @@ async function loadApp() {
/>,
document.getElementById('matrixchat')
);
}
else {
} else {
console.error("Browser is missing required features.");
// take to a different landing page to AWOOOOOGA at the user
var CompatibilityPage = sdk.getComponent("structures.CompatibilityPage");

View File

@ -67,6 +67,10 @@ export default class ElectronPlatform extends VectorBasePlatform {
dis.register(_onAction);
}
getHumanReadableName(): string {
return 'Electron Platform';
}
setNotificationCount(count: number) {
if (this.notificationCount === count) return;
super.setNotificationCount(count);
@ -149,6 +153,8 @@ export default class ElectronPlatform extends VectorBasePlatform {
return null;
}
isElectron(): boolean { return true; }
requestNotificationPermission(): Promise<string> {
return q('granted');
}

View File

@ -35,6 +35,10 @@ export default class VectorBasePlatform extends BasePlatform {
this._updateFavicon();
}
getHumanReadableName(): string {
return 'Vector Base Platform';
}
_updateFavicon() {
try {
// This needs to be in in a try block as it will throw

View File

@ -31,6 +31,10 @@ export default class WebPlatform extends VectorBasePlatform {
this.runningVersion = null;
}
getHumanReadableName(): string {
return 'Web Platform';
}
/**
* Returns true if the platform supports displaying
* notifications, otherwise false.