diff --git a/CHANGELOG.md b/CHANGELOG.md
index fe3fb26cd0..ae8209ad12 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,17 @@
+Changes in [0.10.2](https://github.com/vector-im/riot-web/releases/tag/v0.10.2) (2017-06-06)
+============================================================================================
+[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.10.1...v0.10.2)
+
+ * Hotfix for bugs where navigating straight to a URL like /#/login and
+ and /#/forgot_password
+
+
+Changes in [0.10.1](https://github.com/vector-im/riot-web/releases/tag/v0.10.1) (2017-06-02)
+============================================================================================
+[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.10.0...v0.10.1)
+
+ * Update to matrix-react-sdk 0.9.1 to fix i18n error which broke start chat in some circumstances
+
Changes in [0.10.0](https://github.com/vector-im/riot-web/releases/tag/v0.10.0) (2017-06-02)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.10.0-rc.2...v0.10.0)
diff --git a/README.md b/README.md
index 388d2d9bab..94e2a9cc9c 100644
--- a/README.md
+++ b/README.md
@@ -134,7 +134,7 @@ Running as a Desktop app
Riot can also be run as a desktop app, wrapped in electron. You can download a
pre-built version from https://riot.im/desktop.html or, if you prefer,
-built it yourself.
+build it yourself. Requires Electron >=1.6.0
To run as a desktop app:
diff --git a/config.sample.json b/config.sample.json
index c9b3d65b0f..7f2c97f92c 100644
--- a/config.sample.json
+++ b/config.sample.json
@@ -11,6 +11,7 @@
"matrix.org"
]
},
+ "welcomeUserId": "@riot-bot:matrix.org",
"piwik": {
"url": "https://piwik.riot.im/",
"siteId": 1
diff --git a/docs/translating.md b/docs/translating.md
index ca9920d323..9a4f6f6e9c 100644
--- a/docs/translating.md
+++ b/docs/translating.md
@@ -8,7 +8,7 @@
## Step 0: Join #riotweb-translations:matrix.org
-1. Come and join https://riot.im/develop/#/room/#riotweb-translations:matrix.org
+1. Come and join https://matrix.to/#/#riotweb-translations:matrix.org
2. Read scrollback and/or ask if anyone else is working on your language, and co-ordinate if needed. In general little-or-no coordination is needed though :)
## Step 1: Preparing your Weblate Profile
diff --git a/electron_app/package.json b/electron_app/package.json
index 096c1e96ef..a21fd522c5 100644
--- a/electron_app/package.json
+++ b/electron_app/package.json
@@ -2,12 +2,13 @@
"name": "riot-web",
"productName": "Riot",
"main": "src/electron-main.js",
- "version": "0.10.0",
+ "version": "0.10.2",
"description": "A feature-rich client for Matrix.org",
"author": "Vector Creations Ltd.",
"dependencies": {
- "electron-window-state": "^4.1.0",
"auto-launch": "^5.0.1",
- "minimist": "^1.2.0"
+ "electron-window-state": "^4.1.0",
+ "minimist": "^1.2.0",
+ "png-to-ico": "^1.0.2"
}
}
diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js
index ef0d173c00..3491ce0fa3 100644
--- a/electron_app/src/electron-main.js
+++ b/electron_app/src/electron-main.js
@@ -1,6 +1,7 @@
/*
Copyright 2016 Aviral Dasgupta
Copyright 2016 OpenMarket Ltd
+Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -216,6 +217,20 @@ electron.ipcMain.on('settings_set', function(ev, key, value) {
});
electron.app.on('ready', () => {
+
+ if (argv.devtools) {
+ try {
+ const { default: installExtension, REACT_DEVELOPER_TOOLS, REACT_PERF } = require('electron-devtools-installer');
+ installExtension(REACT_DEVELOPER_TOOLS)
+ .then((name) => console.log(`Added Extension: ${name}`))
+ .catch((err) => console.log('An error occurred: ', err));
+ installExtension(REACT_PERF)
+ .then((name) => console.log(`Added Extension: ${name}`))
+ .catch((err) => console.log('An error occurred: ', err));
+ } catch(e) {console.log(e);}
+ }
+
+
if (vectorConfig.update_base_url) {
console.log(`Starting auto update with base URL: ${vectorConfig.update_base_url}`);
startAutoUpdate(vectorConfig.update_base_url);
diff --git a/electron_app/src/tray.js b/electron_app/src/tray.js
index 9df1a0fb60..039e7133fa 100644
--- a/electron_app/src/tray.js
+++ b/electron_app/src/tray.js
@@ -16,6 +16,9 @@ limitations under the License.
*/
const {app, Tray, Menu, nativeImage} = require('electron');
+const pngToIco = require('png-to-ico');
+const path = require('path');
+const fs = require('fs');
let trayIcon = null;
@@ -57,7 +60,7 @@ exports.create = function(win, config) {
trayIcon.on('click', toggleWin);
let lastFavicon = null;
- win.webContents.on('page-favicon-updated', function(ev, favicons) {
+ win.webContents.on('page-favicon-updated', async function(ev, favicons) {
let newFavicon = config.icon_path;
if (favicons && favicons.length > 0 && favicons[0].startsWith('data:')) {
newFavicon = favicons[0];
@@ -70,6 +73,15 @@ exports.create = function(win, config) {
// if its not default we have to construct into nativeImage
if (newFavicon !== config.icon_path) {
newFavicon = nativeImage.createFromDataURL(favicons[0]);
+
+ if (process.platform === 'win32') {
+ try {
+ const icoPath = path.join(app.getPath('temp'), 'win32_riot_icon.ico')
+ const icoBuf = await pngToIco(newFavicon.toPNG());
+ fs.writeFileSync(icoPath, icoBuf);
+ newFavicon = icoPath;
+ } catch (e) {console.error(e);}
+ }
}
trayIcon.setImage(newFavicon);
diff --git a/package.json b/package.json
index bcbd89fa9b..ffed4f17a1 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "riot-web",
"productName": "Riot",
"main": "electron_app/src/electron-main.js",
- "version": "0.10.0",
+ "version": "0.10.2",
"description": "A feature-rich client for Matrix.org",
"author": "Vector Creations Ltd.",
"repository": {
@@ -46,7 +46,7 @@
"start:prod": "parallelshell \"npm run reskindex:watch\" \"npm run start:res\" \"npm run start:js:prod\"",
"lint": "eslint src/",
"lintall": "eslint src/ test/",
- "clean": "rimraf lib webapp electron/dist",
+ "clean": "rimraf lib webapp electron_app/dist",
"prepublish": "npm run build:compile",
"test": "karma start --single-run=true --autoWatch=false --browsers PhantomJS --colors=false",
"test-multi": "karma start"
@@ -66,7 +66,7 @@
"highlight.js": "^9.0.0",
"linkifyjs": "^2.1.3",
"matrix-js-sdk": "0.7.10",
- "matrix-react-sdk": "0.9.0",
+ "matrix-react-sdk": "0.9.2",
"modernizr": "^3.1.0",
"pako": "^1.0.5",
"q": "^1.4.1",
@@ -78,7 +78,8 @@
"sanitize-html": "^1.11.1",
"text-encoding-utf-8": "^1.0.1",
"ua-parser-js": "^0.7.10",
- "url": "^0.11.0"
+ "url": "^0.11.0",
+ "velocity-vector": "vector-im/velocity#059e3b2"
},
"devDependencies": {
"autoprefixer": "^6.6.0",
@@ -102,6 +103,7 @@
"css-raw-loader": "^0.1.1",
"electron-builder": "^11.2.4",
"electron-builder-squirrel-windows": "^11.2.1",
+ "electron-devtools-installer": "^2.2.0",
"emojione": "^2.2.7",
"eslint": "^3.14.0",
"eslint-config-google": "^0.7.1",
@@ -163,7 +165,7 @@
"category": "Network;InstantMessaging;Chat",
"maintainer": "support@riot.im",
"desktop": {
- "StartupWMClass": "riot-web"
+ "StartupWMClass": "riot"
}
},
"win": {
diff --git a/res/flags/AD.png b/res/flags/AD.png
index 8e777b9822..d5d59645fe 100644
Binary files a/res/flags/AD.png and b/res/flags/AD.png differ
diff --git a/res/flags/AE.png b/res/flags/AE.png
index 1c4a2bb790..05c7418aa4 100644
Binary files a/res/flags/AE.png and b/res/flags/AE.png differ
diff --git a/res/flags/AF.png b/res/flags/AF.png
index 7d369371f5..bc7cef0916 100644
Binary files a/res/flags/AF.png and b/res/flags/AF.png differ
diff --git a/res/flags/AG.png b/res/flags/AG.png
index 78c03626ba..d48facad47 100644
Binary files a/res/flags/AG.png and b/res/flags/AG.png differ
diff --git a/res/flags/AI.png b/res/flags/AI.png
index 8a70782310..8fd27cd39e 100644
Binary files a/res/flags/AI.png and b/res/flags/AI.png differ
diff --git a/res/flags/AL.png b/res/flags/AL.png
index b19c7bc52d..883835ffb3 100644
Binary files a/res/flags/AL.png and b/res/flags/AL.png differ
diff --git a/res/flags/AM.png b/res/flags/AM.png
index b39695fd49..b1bb36b987 100644
Binary files a/res/flags/AM.png and b/res/flags/AM.png differ
diff --git a/res/flags/AO.png b/res/flags/AO.png
index 5aee75af1b..ae68b12c44 100644
Binary files a/res/flags/AO.png and b/res/flags/AO.png differ
diff --git a/res/flags/AQ.png b/res/flags/AQ.png
index fa76fbb278..146e9c0a04 100644
Binary files a/res/flags/AQ.png and b/res/flags/AQ.png differ
diff --git a/res/flags/AR.png b/res/flags/AR.png
index 28750f42a8..8142adfc83 100644
Binary files a/res/flags/AR.png and b/res/flags/AR.png differ
diff --git a/res/flags/AS.png b/res/flags/AS.png
index 36ba9b34df..cc5bf30daf 100644
Binary files a/res/flags/AS.png and b/res/flags/AS.png differ
diff --git a/res/flags/AT.png b/res/flags/AT.png
index 487fee823c..e32414bd6a 100644
Binary files a/res/flags/AT.png and b/res/flags/AT.png differ
diff --git a/res/flags/AU.png b/res/flags/AU.png
index 7004861f7f..8d1e143791 100644
Binary files a/res/flags/AU.png and b/res/flags/AU.png differ
diff --git a/res/flags/AW.png b/res/flags/AW.png
index 238084e4a8..6ec178847e 100644
Binary files a/res/flags/AW.png and b/res/flags/AW.png differ
diff --git a/res/flags/AX.png b/res/flags/AX.png
index 07ac7742ab..ba269c0453 100644
Binary files a/res/flags/AX.png and b/res/flags/AX.png differ
diff --git a/res/flags/AZ.png b/res/flags/AZ.png
index 686dbed76c..2bf3c746e7 100644
Binary files a/res/flags/AZ.png and b/res/flags/AZ.png differ
diff --git a/res/flags/BA.png b/res/flags/BA.png
index 5cfbb6d657..3e3ec3fc76 100644
Binary files a/res/flags/BA.png and b/res/flags/BA.png differ
diff --git a/res/flags/BB.png b/res/flags/BB.png
index dcdbae7a9a..694050ca46 100644
Binary files a/res/flags/BB.png and b/res/flags/BB.png differ
diff --git a/res/flags/BD.png b/res/flags/BD.png
index 3bd977a442..6de2cde85b 100644
Binary files a/res/flags/BD.png and b/res/flags/BD.png differ
diff --git a/res/flags/BE.png b/res/flags/BE.png
index 555ac8bb74..742ba9231f 100644
Binary files a/res/flags/BE.png and b/res/flags/BE.png differ
diff --git a/res/flags/BF.png b/res/flags/BF.png
index 5a80be2aaa..17f9f67d26 100644
Binary files a/res/flags/BF.png and b/res/flags/BF.png differ
diff --git a/res/flags/BG.png b/res/flags/BG.png
index 6d8be358f9..b01d3ff57b 100644
Binary files a/res/flags/BG.png and b/res/flags/BG.png differ
diff --git a/res/flags/BH.png b/res/flags/BH.png
index 0d98e0e051..d0f82e8285 100644
Binary files a/res/flags/BH.png and b/res/flags/BH.png differ
diff --git a/res/flags/BI.png b/res/flags/BI.png
index e2659e3bc1..21865ac720 100644
Binary files a/res/flags/BI.png and b/res/flags/BI.png differ
diff --git a/res/flags/BJ.png b/res/flags/BJ.png
index 13fa3c91e7..a7c6091434 100644
Binary files a/res/flags/BJ.png and b/res/flags/BJ.png differ
diff --git a/res/flags/BL.png b/res/flags/BL.png
index 8e50a79605..6d50a0f544 100644
Binary files a/res/flags/BL.png and b/res/flags/BL.png differ
diff --git a/res/flags/BM.png b/res/flags/BM.png
index 53de7c39b2..310a25ea23 100644
Binary files a/res/flags/BM.png and b/res/flags/BM.png differ
diff --git a/res/flags/BN.png b/res/flags/BN.png
index 3ed976ebff..bc4da8d9a6 100644
Binary files a/res/flags/BN.png and b/res/flags/BN.png differ
diff --git a/res/flags/BO.png b/res/flags/BO.png
index 8e20ea8cee..144b8d32db 100644
Binary files a/res/flags/BO.png and b/res/flags/BO.png differ
diff --git a/res/flags/BQ.png b/res/flags/BQ.png
index 1547226606..0897943760 100644
Binary files a/res/flags/BQ.png and b/res/flags/BQ.png differ
diff --git a/res/flags/BR.png b/res/flags/BR.png
index 7a2bc17adc..0278492592 100644
Binary files a/res/flags/BR.png and b/res/flags/BR.png differ
diff --git a/res/flags/BS.png b/res/flags/BS.png
index 2a152575c6..2b05a8fc7c 100644
Binary files a/res/flags/BS.png and b/res/flags/BS.png differ
diff --git a/res/flags/BT.png b/res/flags/BT.png
index 4782cf34a6..1f031df071 100644
Binary files a/res/flags/BT.png and b/res/flags/BT.png differ
diff --git a/res/flags/BV.png b/res/flags/BV.png
index 991a6cd76c..aafb0f1776 100644
Binary files a/res/flags/BV.png and b/res/flags/BV.png differ
diff --git a/res/flags/BW.png b/res/flags/BW.png
index cd78895521..3084016718 100644
Binary files a/res/flags/BW.png and b/res/flags/BW.png differ
diff --git a/res/flags/BY.png b/res/flags/BY.png
index 40cdd8a7dd..ce9de9c9c7 100644
Binary files a/res/flags/BY.png and b/res/flags/BY.png differ
diff --git a/res/flags/BZ.png b/res/flags/BZ.png
index 5de79b7630..33620c3f31 100644
Binary files a/res/flags/BZ.png and b/res/flags/BZ.png differ
diff --git a/res/flags/CA.png b/res/flags/CA.png
index 68bcac9997..4bbf8b1169 100644
Binary files a/res/flags/CA.png and b/res/flags/CA.png differ
diff --git a/res/flags/CC.png b/res/flags/CC.png
index 13fe2b7f4d..fd40fc8a78 100644
Binary files a/res/flags/CC.png and b/res/flags/CC.png differ
diff --git a/res/flags/CD.png b/res/flags/CD.png
index c19304093e..230aacd454 100644
Binary files a/res/flags/CD.png and b/res/flags/CD.png differ
diff --git a/res/flags/CF.png b/res/flags/CF.png
index 6df7750774..c58ed4f7b2 100644
Binary files a/res/flags/CF.png and b/res/flags/CF.png differ
diff --git a/res/flags/CG.png b/res/flags/CG.png
index 2d37cd50a8..6c2441e3e0 100644
Binary files a/res/flags/CG.png and b/res/flags/CG.png differ
diff --git a/res/flags/CH.png b/res/flags/CH.png
index 00d3871728..9fd87167df 100644
Binary files a/res/flags/CH.png and b/res/flags/CH.png differ
diff --git a/res/flags/CI.png b/res/flags/CI.png
index 82c7606ee9..9741b9b11f 100644
Binary files a/res/flags/CI.png and b/res/flags/CI.png differ
diff --git a/res/flags/CK.png b/res/flags/CK.png
index 26bca5f9c9..6cca35967c 100644
Binary files a/res/flags/CK.png and b/res/flags/CK.png differ
diff --git a/res/flags/CL.png b/res/flags/CL.png
index 317ec573fc..13b993d15d 100644
Binary files a/res/flags/CL.png and b/res/flags/CL.png differ
diff --git a/res/flags/CM.png b/res/flags/CM.png
index c5605d6391..bca5730fb5 100644
Binary files a/res/flags/CM.png and b/res/flags/CM.png differ
diff --git a/res/flags/CN.png b/res/flags/CN.png
index 1c25ab8662..e086855c73 100644
Binary files a/res/flags/CN.png and b/res/flags/CN.png differ
diff --git a/res/flags/CO.png b/res/flags/CO.png
index b328c1ea82..65c0aba447 100644
Binary files a/res/flags/CO.png and b/res/flags/CO.png differ
diff --git a/res/flags/CR.png b/res/flags/CR.png
index df959197fe..b351c67a53 100644
Binary files a/res/flags/CR.png and b/res/flags/CR.png differ
diff --git a/res/flags/CU.png b/res/flags/CU.png
index 60f6a8c8f2..e7a25c60b3 100644
Binary files a/res/flags/CU.png and b/res/flags/CU.png differ
diff --git a/res/flags/CV.png b/res/flags/CV.png
index 2dfe516d29..f249bbaa46 100644
Binary files a/res/flags/CV.png and b/res/flags/CV.png differ
diff --git a/res/flags/CW.png b/res/flags/CW.png
index 2380de1568..e02cacd3dd 100644
Binary files a/res/flags/CW.png and b/res/flags/CW.png differ
diff --git a/res/flags/CX.png b/res/flags/CX.png
index 49a51c164b..3ea21422f0 100644
Binary files a/res/flags/CX.png and b/res/flags/CX.png differ
diff --git a/res/flags/CY.png b/res/flags/CY.png
index 08a0e372e2..3182f48bd2 100644
Binary files a/res/flags/CY.png and b/res/flags/CY.png differ
diff --git a/res/flags/CZ.png b/res/flags/CZ.png
index 90ceaa242a..5462334638 100644
Binary files a/res/flags/CZ.png and b/res/flags/CZ.png differ
diff --git a/res/flags/DE.png b/res/flags/DE.png
index 90cab7e9a4..93e269166b 100644
Binary files a/res/flags/DE.png and b/res/flags/DE.png differ
diff --git a/res/flags/DJ.png b/res/flags/DJ.png
index c424a807a8..243bb7390d 100644
Binary files a/res/flags/DJ.png and b/res/flags/DJ.png differ
diff --git a/res/flags/DK.png b/res/flags/DK.png
index 5a3845ad10..fc74cc396c 100644
Binary files a/res/flags/DK.png and b/res/flags/DK.png differ
diff --git a/res/flags/DM.png b/res/flags/DM.png
index e7fb60c04a..c3a0e9d102 100644
Binary files a/res/flags/DM.png and b/res/flags/DM.png differ
diff --git a/res/flags/DO.png b/res/flags/DO.png
index 03c2f1b9d4..5c4a004fef 100644
Binary files a/res/flags/DO.png and b/res/flags/DO.png differ
diff --git a/res/flags/DZ.png b/res/flags/DZ.png
index 9d63939e7f..1589d0cc40 100644
Binary files a/res/flags/DZ.png and b/res/flags/DZ.png differ
diff --git a/res/flags/EC.png b/res/flags/EC.png
index 92e2a9e929..4c53dead1c 100644
Binary files a/res/flags/EC.png and b/res/flags/EC.png differ
diff --git a/res/flags/EE.png b/res/flags/EE.png
index 081568695f..3668de7919 100644
Binary files a/res/flags/EE.png and b/res/flags/EE.png differ
diff --git a/res/flags/EG.png b/res/flags/EG.png
index 7e9d6c5cc1..66ec709df7 100644
Binary files a/res/flags/EG.png and b/res/flags/EG.png differ
diff --git a/res/flags/EH.png b/res/flags/EH.png
index f8e59b21fc..148be93c08 100644
Binary files a/res/flags/EH.png and b/res/flags/EH.png differ
diff --git a/res/flags/ER.png b/res/flags/ER.png
index ffeb28dac8..7cb8441514 100644
Binary files a/res/flags/ER.png and b/res/flags/ER.png differ
diff --git a/res/flags/ES.png b/res/flags/ES.png
index 3ce59fe891..aae73b6fcb 100644
Binary files a/res/flags/ES.png and b/res/flags/ES.png differ
diff --git a/res/flags/ET.png b/res/flags/ET.png
index f9d92859c4..7b420f02f4 100644
Binary files a/res/flags/ET.png and b/res/flags/ET.png differ
diff --git a/res/flags/FI.png b/res/flags/FI.png
index 0930988c29..42f64bf360 100644
Binary files a/res/flags/FI.png and b/res/flags/FI.png differ
diff --git a/res/flags/FJ.png b/res/flags/FJ.png
index 2a78075da4..cecc683c9c 100644
Binary files a/res/flags/FJ.png and b/res/flags/FJ.png differ
diff --git a/res/flags/FK.png b/res/flags/FK.png
index 52543390c7..6074fea09c 100644
Binary files a/res/flags/FK.png and b/res/flags/FK.png differ
diff --git a/res/flags/FM.png b/res/flags/FM.png
index 0ba546ed38..45fdb66426 100644
Binary files a/res/flags/FM.png and b/res/flags/FM.png differ
diff --git a/res/flags/FO.png b/res/flags/FO.png
index 2a0cd64579..d8fd75c638 100644
Binary files a/res/flags/FO.png and b/res/flags/FO.png differ
diff --git a/res/flags/FR.png b/res/flags/FR.png
index ef05d74bc7..6d50a0f544 100644
Binary files a/res/flags/FR.png and b/res/flags/FR.png differ
diff --git a/res/flags/GA.png b/res/flags/GA.png
index 6539d6dd21..3808a61f1d 100644
Binary files a/res/flags/GA.png and b/res/flags/GA.png differ
diff --git a/res/flags/GB.png b/res/flags/GB.png
index 2938e61b8b..589be70063 100644
Binary files a/res/flags/GB.png and b/res/flags/GB.png differ
diff --git a/res/flags/GD.png b/res/flags/GD.png
index a55638e7ed..babe1e4cc6 100644
Binary files a/res/flags/GD.png and b/res/flags/GD.png differ
diff --git a/res/flags/GE.png b/res/flags/GE.png
index c6cfd2b069..d34cddeca9 100644
Binary files a/res/flags/GE.png and b/res/flags/GE.png differ
diff --git a/res/flags/GF.png b/res/flags/GF.png
index dfc1badffc..98828a5906 100644
Binary files a/res/flags/GF.png and b/res/flags/GF.png differ
diff --git a/res/flags/GG.png b/res/flags/GG.png
index a79f8c1f30..aec8969b28 100644
Binary files a/res/flags/GG.png and b/res/flags/GG.png differ
diff --git a/res/flags/GH.png b/res/flags/GH.png
index bda5d6f661..70b1a623de 100644
Binary files a/res/flags/GH.png and b/res/flags/GH.png differ
diff --git a/res/flags/GI.png b/res/flags/GI.png
index 620b50b3df..9aa58327e3 100644
Binary files a/res/flags/GI.png and b/res/flags/GI.png differ
diff --git a/res/flags/GL.png b/res/flags/GL.png
index c3d6bcf36b..cf1645c2b5 100644
Binary files a/res/flags/GL.png and b/res/flags/GL.png differ
diff --git a/res/flags/GM.png b/res/flags/GM.png
index fa2d771ee2..ec374fb3c3 100644
Binary files a/res/flags/GM.png and b/res/flags/GM.png differ
diff --git a/res/flags/GN.png b/res/flags/GN.png
index dabe7ce494..46874b4d98 100644
Binary files a/res/flags/GN.png and b/res/flags/GN.png differ
diff --git a/res/flags/GP.png b/res/flags/GP.png
index 7bf7695635..81b7abdf0e 100644
Binary files a/res/flags/GP.png and b/res/flags/GP.png differ
diff --git a/res/flags/GQ.png b/res/flags/GQ.png
index edae61e9e8..7fd1015e8b 100644
Binary files a/res/flags/GQ.png and b/res/flags/GQ.png differ
diff --git a/res/flags/GR.png b/res/flags/GR.png
index 5abc59d393..101de51eab 100644
Binary files a/res/flags/GR.png and b/res/flags/GR.png differ
diff --git a/res/flags/GS.png b/res/flags/GS.png
index baa930d0a3..772c2cbe6d 100644
Binary files a/res/flags/GS.png and b/res/flags/GS.png differ
diff --git a/res/flags/GT.png b/res/flags/GT.png
index 10ef0cdd16..d5bd8c1e46 100644
Binary files a/res/flags/GT.png and b/res/flags/GT.png differ
diff --git a/res/flags/GU.png b/res/flags/GU.png
index 166c121e1a..8923085d5a 100644
Binary files a/res/flags/GU.png and b/res/flags/GU.png differ
diff --git a/res/flags/GW.png b/res/flags/GW.png
index fb59de837c..20c268ce06 100644
Binary files a/res/flags/GW.png and b/res/flags/GW.png differ
diff --git a/res/flags/GY.png b/res/flags/GY.png
index 65499a7ca3..86f56635ef 100644
Binary files a/res/flags/GY.png and b/res/flags/GY.png differ
diff --git a/res/flags/HK.png b/res/flags/HK.png
index 3958838402..907dc59624 100644
Binary files a/res/flags/HK.png and b/res/flags/HK.png differ
diff --git a/res/flags/HM.png b/res/flags/HM.png
index 26a61cbff4..8d1e143791 100644
Binary files a/res/flags/HM.png and b/res/flags/HM.png differ
diff --git a/res/flags/HN.png b/res/flags/HN.png
index bf923cb81b..4cf8c3112c 100644
Binary files a/res/flags/HN.png and b/res/flags/HN.png differ
diff --git a/res/flags/HR.png b/res/flags/HR.png
index 139e143b8f..413ceb1586 100644
Binary files a/res/flags/HR.png and b/res/flags/HR.png differ
diff --git a/res/flags/HT.png b/res/flags/HT.png
index 2583da392f..097abeb434 100644
Binary files a/res/flags/HT.png and b/res/flags/HT.png differ
diff --git a/res/flags/HU.png b/res/flags/HU.png
index 625846af53..23499bf63c 100644
Binary files a/res/flags/HU.png and b/res/flags/HU.png differ
diff --git a/res/flags/ID.png b/res/flags/ID.png
index f88d48af94..80200657c6 100644
Binary files a/res/flags/ID.png and b/res/flags/ID.png differ
diff --git a/res/flags/IE.png b/res/flags/IE.png
index 17f255fc26..63f2220118 100644
Binary files a/res/flags/IE.png and b/res/flags/IE.png differ
diff --git a/res/flags/IL.png b/res/flags/IL.png
index 6c9a6b57d8..0268826321 100644
Binary files a/res/flags/IL.png and b/res/flags/IL.png differ
diff --git a/res/flags/IM.png b/res/flags/IM.png
index 936e801d72..c777acc490 100644
Binary files a/res/flags/IM.png and b/res/flags/IM.png differ
diff --git a/res/flags/IN.png b/res/flags/IN.png
index ecba2f9c48..85fa9bfe72 100644
Binary files a/res/flags/IN.png and b/res/flags/IN.png differ
diff --git a/res/flags/IO.png b/res/flags/IO.png
index b0edb1610f..1675d8e7db 100644
Binary files a/res/flags/IO.png and b/res/flags/IO.png differ
diff --git a/res/flags/IQ.png b/res/flags/IQ.png
index 19055f14f7..f2c21f7260 100644
Binary files a/res/flags/IQ.png and b/res/flags/IQ.png differ
diff --git a/res/flags/IR.png b/res/flags/IR.png
index 9056d21ec2..0b8e67506c 100644
Binary files a/res/flags/IR.png and b/res/flags/IR.png differ
diff --git a/res/flags/IS.png b/res/flags/IS.png
index 06be01a879..5ee3e63c5c 100644
Binary files a/res/flags/IS.png and b/res/flags/IS.png differ
diff --git a/res/flags/IT.png b/res/flags/IT.png
index 50e17b22a9..53b967be99 100644
Binary files a/res/flags/IT.png and b/res/flags/IT.png differ
diff --git a/res/flags/JE.png b/res/flags/JE.png
index 456a1a837e..a1437aba78 100644
Binary files a/res/flags/JE.png and b/res/flags/JE.png differ
diff --git a/res/flags/JM.png b/res/flags/JM.png
index 5e4e73d325..0d462fa3ae 100644
Binary files a/res/flags/JM.png and b/res/flags/JM.png differ
diff --git a/res/flags/JO.png b/res/flags/JO.png
index 5982705bbe..8934db7eca 100644
Binary files a/res/flags/JO.png and b/res/flags/JO.png differ
diff --git a/res/flags/JP.png b/res/flags/JP.png
index 009a990a49..6f92d52365 100644
Binary files a/res/flags/JP.png and b/res/flags/JP.png differ
diff --git a/res/flags/KE.png b/res/flags/KE.png
index b5a9f733e4..866b3f15dc 100644
Binary files a/res/flags/KE.png and b/res/flags/KE.png differ
diff --git a/res/flags/KG.png b/res/flags/KG.png
index acf6646b8a..56b433c756 100644
Binary files a/res/flags/KG.png and b/res/flags/KG.png differ
diff --git a/res/flags/KH.png b/res/flags/KH.png
index 58ad9c6175..e1ddd5f84c 100644
Binary files a/res/flags/KH.png and b/res/flags/KH.png differ
diff --git a/res/flags/KI.png b/res/flags/KI.png
index 49902d25aa..8b7c54bc0f 100644
Binary files a/res/flags/KI.png and b/res/flags/KI.png differ
diff --git a/res/flags/KM.png b/res/flags/KM.png
index 9fa9a454e1..227a3b3396 100644
Binary files a/res/flags/KM.png and b/res/flags/KM.png differ
diff --git a/res/flags/KN.png b/res/flags/KN.png
index 3b39f8f7ae..bc6189bed1 100644
Binary files a/res/flags/KN.png and b/res/flags/KN.png differ
diff --git a/res/flags/KP.png b/res/flags/KP.png
index eacc3ad0fd..c92248b910 100644
Binary files a/res/flags/KP.png and b/res/flags/KP.png differ
diff --git a/res/flags/KR.png b/res/flags/KR.png
index a0df8da033..ab1cb94943 100644
Binary files a/res/flags/KR.png and b/res/flags/KR.png differ
diff --git a/res/flags/KW.png b/res/flags/KW.png
index c6839950d8..0b41c7a532 100644
Binary files a/res/flags/KW.png and b/res/flags/KW.png differ
diff --git a/res/flags/KY.png b/res/flags/KY.png
index 3f82fa749e..7af5290d31 100644
Binary files a/res/flags/KY.png and b/res/flags/KY.png differ
diff --git a/res/flags/KZ.png b/res/flags/KZ.png
index 4b43621212..e10a1255a0 100644
Binary files a/res/flags/KZ.png and b/res/flags/KZ.png differ
diff --git a/res/flags/LA.png b/res/flags/LA.png
index ee9c41ea18..6ad67d4255 100644
Binary files a/res/flags/LA.png and b/res/flags/LA.png differ
diff --git a/res/flags/LB.png b/res/flags/LB.png
index 7b4d66537f..865df57a42 100644
Binary files a/res/flags/LB.png and b/res/flags/LB.png differ
diff --git a/res/flags/LC.png b/res/flags/LC.png
index d97f8d8dc7..e83a2d08bc 100644
Binary files a/res/flags/LC.png and b/res/flags/LC.png differ
diff --git a/res/flags/LI.png b/res/flags/LI.png
index c75a229fa8..57034d367c 100644
Binary files a/res/flags/LI.png and b/res/flags/LI.png differ
diff --git a/res/flags/LK.png b/res/flags/LK.png
index 2ca1a0c167..6e7ad58254 100644
Binary files a/res/flags/LK.png and b/res/flags/LK.png differ
diff --git a/res/flags/LR.png b/res/flags/LR.png
index 41bf4a96ce..46c3b84a92 100644
Binary files a/res/flags/LR.png and b/res/flags/LR.png differ
diff --git a/res/flags/LS.png b/res/flags/LS.png
index 10cf81b054..79b505d490 100644
Binary files a/res/flags/LS.png and b/res/flags/LS.png differ
diff --git a/res/flags/LT.png b/res/flags/LT.png
index 17a36c71ce..7740cdc0a0 100644
Binary files a/res/flags/LT.png and b/res/flags/LT.png differ
diff --git a/res/flags/LU.png b/res/flags/LU.png
index 675a891dd6..8f383e674e 100644
Binary files a/res/flags/LU.png and b/res/flags/LU.png differ
diff --git a/res/flags/LV.png b/res/flags/LV.png
index 763a612026..a0f36d89c4 100644
Binary files a/res/flags/LV.png and b/res/flags/LV.png differ
diff --git a/res/flags/LY.png b/res/flags/LY.png
index 5211a9024f..2884c4c0a9 100644
Binary files a/res/flags/LY.png and b/res/flags/LY.png differ
diff --git a/res/flags/MA.png b/res/flags/MA.png
index 098db5009b..1f76cfc9bd 100644
Binary files a/res/flags/MA.png and b/res/flags/MA.png differ
diff --git a/res/flags/MC.png b/res/flags/MC.png
index 8d1a98132c..06fc2ad166 100644
Binary files a/res/flags/MC.png and b/res/flags/MC.png differ
diff --git a/res/flags/MD.png b/res/flags/MD.png
index 6ca6f734c9..8e54c2b815 100644
Binary files a/res/flags/MD.png and b/res/flags/MD.png differ
diff --git a/res/flags/ME.png b/res/flags/ME.png
index c7fccac3b9..97424d4ec2 100644
Binary files a/res/flags/ME.png and b/res/flags/ME.png differ
diff --git a/res/flags/MF.png b/res/flags/MF.png
index 7f6824e0ab..6d50a0f544 100644
Binary files a/res/flags/MF.png and b/res/flags/MF.png differ
diff --git a/res/flags/MG.png b/res/flags/MG.png
index 55bc89850a..28bfccc9e8 100644
Binary files a/res/flags/MG.png and b/res/flags/MG.png differ
diff --git a/res/flags/MH.png b/res/flags/MH.png
index 4484977945..e482a65924 100644
Binary files a/res/flags/MH.png and b/res/flags/MH.png differ
diff --git a/res/flags/MK.png b/res/flags/MK.png
index ef8d2e55ee..84e2e65e76 100644
Binary files a/res/flags/MK.png and b/res/flags/MK.png differ
diff --git a/res/flags/ML.png b/res/flags/ML.png
index b8c5737f3d..38fec34796 100644
Binary files a/res/flags/ML.png and b/res/flags/ML.png differ
diff --git a/res/flags/MM.png b/res/flags/MM.png
index afac494059..70a03c6b14 100644
Binary files a/res/flags/MM.png and b/res/flags/MM.png differ
diff --git a/res/flags/MN.png b/res/flags/MN.png
index 6e3de3381b..1e1bbe6089 100644
Binary files a/res/flags/MN.png and b/res/flags/MN.png differ
diff --git a/res/flags/MO.png b/res/flags/MO.png
index 02118edf4b..3833d683e7 100644
Binary files a/res/flags/MO.png and b/res/flags/MO.png differ
diff --git a/res/flags/MP.png b/res/flags/MP.png
index a85be51b1b..63119096b0 100644
Binary files a/res/flags/MP.png and b/res/flags/MP.png differ
diff --git a/res/flags/MQ.png b/res/flags/MQ.png
index 92eb07275d..9cab441aec 100644
Binary files a/res/flags/MQ.png and b/res/flags/MQ.png differ
diff --git a/res/flags/MR.png b/res/flags/MR.png
index 95a5272652..c144de17f7 100644
Binary files a/res/flags/MR.png and b/res/flags/MR.png differ
diff --git a/res/flags/MS.png b/res/flags/MS.png
index a811c5bd0f..1221707042 100644
Binary files a/res/flags/MS.png and b/res/flags/MS.png differ
diff --git a/res/flags/MT.png b/res/flags/MT.png
index 857672bf3a..7963aa618a 100644
Binary files a/res/flags/MT.png and b/res/flags/MT.png differ
diff --git a/res/flags/MU.png b/res/flags/MU.png
index 8f6abb7331..d5d4d4008d 100644
Binary files a/res/flags/MU.png and b/res/flags/MU.png differ
diff --git a/res/flags/MV.png b/res/flags/MV.png
index bdb8119f5f..0f2ecb4389 100644
Binary files a/res/flags/MV.png and b/res/flags/MV.png differ
diff --git a/res/flags/MW.png b/res/flags/MW.png
index c684776a33..d0a5d24f55 100644
Binary files a/res/flags/MW.png and b/res/flags/MW.png differ
diff --git a/res/flags/MX.png b/res/flags/MX.png
index aee282de37..096cb1111f 100644
Binary files a/res/flags/MX.png and b/res/flags/MX.png differ
diff --git a/res/flags/MY.png b/res/flags/MY.png
index 3941aa8cb1..17f18ac519 100644
Binary files a/res/flags/MY.png and b/res/flags/MY.png differ
diff --git a/res/flags/MZ.png b/res/flags/MZ.png
index dd497c23c1..66be6563c6 100644
Binary files a/res/flags/MZ.png and b/res/flags/MZ.png differ
diff --git a/res/flags/NA.png b/res/flags/NA.png
index 68e4aeabe6..7ecfd317c7 100644
Binary files a/res/flags/NA.png and b/res/flags/NA.png differ
diff --git a/res/flags/NC.png b/res/flags/NC.png
index ffcc21662b..11126ade77 100644
Binary files a/res/flags/NC.png and b/res/flags/NC.png differ
diff --git a/res/flags/NE.png b/res/flags/NE.png
index 08950d2f37..d584fa8429 100644
Binary files a/res/flags/NE.png and b/res/flags/NE.png differ
diff --git a/res/flags/NF.png b/res/flags/NF.png
index 2728ed548b..c054042591 100644
Binary files a/res/flags/NF.png and b/res/flags/NF.png differ
diff --git a/res/flags/NG.png b/res/flags/NG.png
index 5812b2d29c..73aee15b3f 100644
Binary files a/res/flags/NG.png and b/res/flags/NG.png differ
diff --git a/res/flags/NI.png b/res/flags/NI.png
index d09e132955..fd044933e4 100644
Binary files a/res/flags/NI.png and b/res/flags/NI.png differ
diff --git a/res/flags/NL.png b/res/flags/NL.png
index f920328273..0897943760 100644
Binary files a/res/flags/NL.png and b/res/flags/NL.png differ
diff --git a/res/flags/NO.png b/res/flags/NO.png
index 0bedee3f18..aafb0f1776 100644
Binary files a/res/flags/NO.png and b/res/flags/NO.png differ
diff --git a/res/flags/NP.png b/res/flags/NP.png
index e7775c2516..744458e17e 100644
Binary files a/res/flags/NP.png and b/res/flags/NP.png differ
diff --git a/res/flags/NR.png b/res/flags/NR.png
index 4760404ba6..58c2afb228 100644
Binary files a/res/flags/NR.png and b/res/flags/NR.png differ
diff --git a/res/flags/NU.png b/res/flags/NU.png
index 7c130d5b88..007c99eca5 100644
Binary files a/res/flags/NU.png and b/res/flags/NU.png differ
diff --git a/res/flags/NZ.png b/res/flags/NZ.png
index 67c98728fc..839368dd7b 100644
Binary files a/res/flags/NZ.png and b/res/flags/NZ.png differ
diff --git a/res/flags/OM.png b/res/flags/OM.png
index a6762503fa..63a893367f 100644
Binary files a/res/flags/OM.png and b/res/flags/OM.png differ
diff --git a/res/flags/PA.png b/res/flags/PA.png
index ed18bddaf6..3515d95d37 100644
Binary files a/res/flags/PA.png and b/res/flags/PA.png differ
diff --git a/res/flags/PE.png b/res/flags/PE.png
index 7485279cb6..58f70b8d18 100644
Binary files a/res/flags/PE.png and b/res/flags/PE.png differ
diff --git a/res/flags/PF.png b/res/flags/PF.png
index 6623f41346..2f33f2574f 100644
Binary files a/res/flags/PF.png and b/res/flags/PF.png differ
diff --git a/res/flags/PG.png b/res/flags/PG.png
index 92504c5147..c796f587c6 100644
Binary files a/res/flags/PG.png and b/res/flags/PG.png differ
diff --git a/res/flags/PH.png b/res/flags/PH.png
index d6d676210d..0d98de0386 100644
Binary files a/res/flags/PH.png and b/res/flags/PH.png differ
diff --git a/res/flags/PK.png b/res/flags/PK.png
index f7c8bb94e8..87f4e2f492 100644
Binary files a/res/flags/PK.png and b/res/flags/PK.png differ
diff --git a/res/flags/PL.png b/res/flags/PL.png
index 8303b1ea89..273869dfc6 100644
Binary files a/res/flags/PL.png and b/res/flags/PL.png differ
diff --git a/res/flags/PM.png b/res/flags/PM.png
index 2507c86eae..b74c396d92 100644
Binary files a/res/flags/PM.png and b/res/flags/PM.png differ
diff --git a/res/flags/PN.png b/res/flags/PN.png
index c5e1d88463..e34c62d598 100644
Binary files a/res/flags/PN.png and b/res/flags/PN.png differ
diff --git a/res/flags/PR.png b/res/flags/PR.png
index 938c83502f..8efdb91252 100644
Binary files a/res/flags/PR.png and b/res/flags/PR.png differ
diff --git a/res/flags/PS.png b/res/flags/PS.png
index d106ba89fa..7a0cceec00 100644
Binary files a/res/flags/PS.png and b/res/flags/PS.png differ
diff --git a/res/flags/PT.png b/res/flags/PT.png
index 168f060570..49e290827c 100644
Binary files a/res/flags/PT.png and b/res/flags/PT.png differ
diff --git a/res/flags/PW.png b/res/flags/PW.png
index 2d6e5d5b51..6cb2e1e70d 100644
Binary files a/res/flags/PW.png and b/res/flags/PW.png differ
diff --git a/res/flags/PY.png b/res/flags/PY.png
index 9cae9a780c..a61c42c423 100644
Binary files a/res/flags/PY.png and b/res/flags/PY.png differ
diff --git a/res/flags/QA.png b/res/flags/QA.png
index ce9d31edaf..bb091cc88c 100644
Binary files a/res/flags/QA.png and b/res/flags/QA.png differ
diff --git a/res/flags/RE.png b/res/flags/RE.png
index 85c2571022..6d50a0f544 100644
Binary files a/res/flags/RE.png and b/res/flags/RE.png differ
diff --git a/res/flags/RO.png b/res/flags/RO.png
index e77996d5ad..4495d29eb0 100644
Binary files a/res/flags/RO.png and b/res/flags/RO.png differ
diff --git a/res/flags/RS.png b/res/flags/RS.png
index fc7a2ab717..ebb0f28a7b 100644
Binary files a/res/flags/RS.png and b/res/flags/RS.png differ
diff --git a/res/flags/RU.png b/res/flags/RU.png
index 8b3df77988..64532ffa58 100644
Binary files a/res/flags/RU.png and b/res/flags/RU.png differ
diff --git a/res/flags/RW.png b/res/flags/RW.png
index 87f718674e..64b3cfff04 100644
Binary files a/res/flags/RW.png and b/res/flags/RW.png differ
diff --git a/res/flags/SA.png b/res/flags/SA.png
index d93b91c7c4..250de6f6f5 100644
Binary files a/res/flags/SA.png and b/res/flags/SA.png differ
diff --git a/res/flags/SB.png b/res/flags/SB.png
index e9a2a8f3f0..5833c130eb 100644
Binary files a/res/flags/SB.png and b/res/flags/SB.png differ
diff --git a/res/flags/SC.png b/res/flags/SC.png
index 488ac3bef3..ce5248f434 100644
Binary files a/res/flags/SC.png and b/res/flags/SC.png differ
diff --git a/res/flags/SD.png b/res/flags/SD.png
index 6ba8c5cac3..d8711a83d6 100644
Binary files a/res/flags/SD.png and b/res/flags/SD.png differ
diff --git a/res/flags/SE.png b/res/flags/SE.png
index e7bd806f4f..81880931f3 100644
Binary files a/res/flags/SE.png and b/res/flags/SE.png differ
diff --git a/res/flags/SG.png b/res/flags/SG.png
index 797069fc9e..6f00e57923 100644
Binary files a/res/flags/SG.png and b/res/flags/SG.png differ
diff --git a/res/flags/SH.png b/res/flags/SH.png
index b2c589d0c5..055dde68bc 100644
Binary files a/res/flags/SH.png and b/res/flags/SH.png differ
diff --git a/res/flags/SI.png b/res/flags/SI.png
index be8e7a8973..9635983406 100644
Binary files a/res/flags/SI.png and b/res/flags/SI.png differ
diff --git a/res/flags/SJ.png b/res/flags/SJ.png
index 1dd7e78627..aafb0f1776 100644
Binary files a/res/flags/SJ.png and b/res/flags/SJ.png differ
diff --git a/res/flags/SK.png b/res/flags/SK.png
index be3d10f221..84c7021f0a 100644
Binary files a/res/flags/SK.png and b/res/flags/SK.png differ
diff --git a/res/flags/SL.png b/res/flags/SL.png
index b3f997b163..c5ed199141 100644
Binary files a/res/flags/SL.png and b/res/flags/SL.png differ
diff --git a/res/flags/SM.png b/res/flags/SM.png
index b30f77ad69..1af1ca284f 100644
Binary files a/res/flags/SM.png and b/res/flags/SM.png differ
diff --git a/res/flags/SN.png b/res/flags/SN.png
index b5cdb2101d..d0b1843561 100644
Binary files a/res/flags/SN.png and b/res/flags/SN.png differ
diff --git a/res/flags/SO.png b/res/flags/SO.png
index 5f80850834..64e2970b9d 100644
Binary files a/res/flags/SO.png and b/res/flags/SO.png differ
diff --git a/res/flags/SR.png b/res/flags/SR.png
index a2d124e92b..b072dda835 100644
Binary files a/res/flags/SR.png and b/res/flags/SR.png differ
diff --git a/res/flags/SS.png b/res/flags/SS.png
index 19c65899c2..83933d4521 100644
Binary files a/res/flags/SS.png and b/res/flags/SS.png differ
diff --git a/res/flags/ST.png b/res/flags/ST.png
index 1d2befe46d..c102721a86 100644
Binary files a/res/flags/ST.png and b/res/flags/ST.png differ
diff --git a/res/flags/SV.png b/res/flags/SV.png
index fc3a9ca40d..80de92e556 100644
Binary files a/res/flags/SV.png and b/res/flags/SV.png differ
diff --git a/res/flags/SX.png b/res/flags/SX.png
index 6051aaa624..dd52215c5d 100644
Binary files a/res/flags/SX.png and b/res/flags/SX.png differ
diff --git a/res/flags/SY.png b/res/flags/SY.png
index 0d51d071fb..78f45b7c0b 100644
Binary files a/res/flags/SY.png and b/res/flags/SY.png differ
diff --git a/res/flags/SZ.png b/res/flags/SZ.png
index a7366cb638..2182f4ff93 100644
Binary files a/res/flags/SZ.png and b/res/flags/SZ.png differ
diff --git a/res/flags/TC.png b/res/flags/TC.png
index 39971bb9b2..3e3e19d4b3 100644
Binary files a/res/flags/TC.png and b/res/flags/TC.png differ
diff --git a/res/flags/TD.png b/res/flags/TD.png
index 1fb647d488..753bec22b0 100644
Binary files a/res/flags/TD.png and b/res/flags/TD.png differ
diff --git a/res/flags/TF.png b/res/flags/TF.png
index 41bd93343a..6d50a0f544 100644
Binary files a/res/flags/TF.png and b/res/flags/TF.png differ
diff --git a/res/flags/TG.png b/res/flags/TG.png
index 560fc0988b..8501ada655 100644
Binary files a/res/flags/TG.png and b/res/flags/TG.png differ
diff --git a/res/flags/TH.png b/res/flags/TH.png
index 9ee5ce8997..0c884c329e 100644
Binary files a/res/flags/TH.png and b/res/flags/TH.png differ
diff --git a/res/flags/TJ.png b/res/flags/TJ.png
index ca4be07739..3c9026fa0f 100644
Binary files a/res/flags/TJ.png and b/res/flags/TJ.png differ
diff --git a/res/flags/TK.png b/res/flags/TK.png
index 88a7eb1a24..fd605749ea 100644
Binary files a/res/flags/TK.png and b/res/flags/TK.png differ
diff --git a/res/flags/TL.png b/res/flags/TL.png
index fa6c365b9b..b4c834b1d6 100644
Binary files a/res/flags/TL.png and b/res/flags/TL.png differ
diff --git a/res/flags/TM.png b/res/flags/TM.png
index 6cc0539da6..d18cb939a9 100644
Binary files a/res/flags/TM.png and b/res/flags/TM.png differ
diff --git a/res/flags/TN.png b/res/flags/TN.png
index 1cc09ec6f0..21c4b98be7 100644
Binary files a/res/flags/TN.png and b/res/flags/TN.png differ
diff --git a/res/flags/TO.png b/res/flags/TO.png
index 44c42ce0d1..c828206e35 100644
Binary files a/res/flags/TO.png and b/res/flags/TO.png differ
diff --git a/res/flags/TR.png b/res/flags/TR.png
index 4e63d61b9c..f2a5bd22c8 100644
Binary files a/res/flags/TR.png and b/res/flags/TR.png differ
diff --git a/res/flags/TT.png b/res/flags/TT.png
index 3831347f56..66d698334b 100644
Binary files a/res/flags/TT.png and b/res/flags/TT.png differ
diff --git a/res/flags/TV.png b/res/flags/TV.png
index 2f24fbf728..7a127f51ae 100644
Binary files a/res/flags/TV.png and b/res/flags/TV.png differ
diff --git a/res/flags/TW.png b/res/flags/TW.png
index cda05c9b4c..2353ba1b0a 100644
Binary files a/res/flags/TW.png and b/res/flags/TW.png differ
diff --git a/res/flags/TZ.png b/res/flags/TZ.png
index a60d5b3fa6..7949f65d8a 100644
Binary files a/res/flags/TZ.png and b/res/flags/TZ.png differ
diff --git a/res/flags/UA.png b/res/flags/UA.png
index f62089b695..687e305294 100644
Binary files a/res/flags/UA.png and b/res/flags/UA.png differ
diff --git a/res/flags/UG.png b/res/flags/UG.png
index 8fb590e864..0a21ad15c3 100644
Binary files a/res/flags/UG.png and b/res/flags/UG.png differ
diff --git a/res/flags/US.png b/res/flags/US.png
index f6b7ab982d..c3a245b767 100644
Binary files a/res/flags/US.png and b/res/flags/US.png differ
diff --git a/res/flags/UY.png b/res/flags/UY.png
index 11abe8c100..21a347c6fc 100644
Binary files a/res/flags/UY.png and b/res/flags/UY.png differ
diff --git a/res/flags/UZ.png b/res/flags/UZ.png
index 5d9168a3ea..643b6ae0cf 100644
Binary files a/res/flags/UZ.png and b/res/flags/UZ.png differ
diff --git a/res/flags/VA.png b/res/flags/VA.png
index 4e5a92bdd7..63a13c0e81 100644
Binary files a/res/flags/VA.png and b/res/flags/VA.png differ
diff --git a/res/flags/VC.png b/res/flags/VC.png
index 4a8dfa41ea..da991a9344 100644
Binary files a/res/flags/VC.png and b/res/flags/VC.png differ
diff --git a/res/flags/VE.png b/res/flags/VE.png
index 3632def0ca..e75e17c9f0 100644
Binary files a/res/flags/VE.png and b/res/flags/VE.png differ
diff --git a/res/flags/VG.png b/res/flags/VG.png
index 15a5e5fadb..46f93cad1e 100644
Binary files a/res/flags/VG.png and b/res/flags/VG.png differ
diff --git a/res/flags/VI.png b/res/flags/VI.png
index 986a53d2fe..8c849a733e 100644
Binary files a/res/flags/VI.png and b/res/flags/VI.png differ
diff --git a/res/flags/VN.png b/res/flags/VN.png
index f19db790e3..6ea2122f9d 100644
Binary files a/res/flags/VN.png and b/res/flags/VN.png differ
diff --git a/res/flags/VU.png b/res/flags/VU.png
index a322030a28..bad3ba4d46 100644
Binary files a/res/flags/VU.png and b/res/flags/VU.png differ
diff --git a/res/flags/WF.png b/res/flags/WF.png
index 5f6e2bedaa..d94359dcc4 100644
Binary files a/res/flags/WF.png and b/res/flags/WF.png differ
diff --git a/res/flags/WS.png b/res/flags/WS.png
index de43a37312..f8b80e5ba9 100644
Binary files a/res/flags/WS.png and b/res/flags/WS.png differ
diff --git a/res/flags/YE.png b/res/flags/YE.png
index b132bc13c4..8b9bbd8942 100644
Binary files a/res/flags/YE.png and b/res/flags/YE.png differ
diff --git a/res/flags/YT.png b/res/flags/YT.png
index 5c450dfb91..328879361e 100644
Binary files a/res/flags/YT.png and b/res/flags/YT.png differ
diff --git a/res/flags/ZA.png b/res/flags/ZA.png
index adec062d1d..7f0a52d3b2 100644
Binary files a/res/flags/ZA.png and b/res/flags/ZA.png differ
diff --git a/res/flags/ZM.png b/res/flags/ZM.png
index 56287f589b..87adc3afaa 100644
Binary files a/res/flags/ZM.png and b/res/flags/ZM.png differ
diff --git a/res/flags/ZW.png b/res/flags/ZW.png
index e58dff382b..742c9f7e71 100644
Binary files a/res/flags/ZW.png and b/res/flags/ZW.png differ
diff --git a/res/home.html b/res/home.html
new file mode 100644
index 0000000000..3ba2e96419
--- /dev/null
+++ b/res/home.html
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
_t("Welcome to Riot.im")
+
_t("Decentralised, encrypted chat & collaboration powered by [matrix]")
+
+
+
+
+
+
_t("Search the room directory")
+
+
+
+
+ _t("Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!")
+
+
+
+
+
+
_t("Chat with Riot Bot")
+
+
+
+
+ _t("Get started with some tips from Riot Bot!")
+
+
- ;
+ ;
}
if (!this.props.collapsed) {
diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js
index 257fdbd5cd..64a53d336d 100644
--- a/src/components/structures/RoomDirectory.js
+++ b/src/components/structures/RoomDirectory.js
@@ -353,11 +353,7 @@ module.exports = React.createClass({
// to the directory.
if (MatrixClientPeg.get().isGuest()) {
if (!room.world_readable && !room.guest_can_join) {
- 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.')
- });
+ dis.dispatch({action: 'view_set_mxid'});
return;
}
}
diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js
index b368948cd0..2740c6a400 100644
--- a/src/components/structures/RoomSubList.js
+++ b/src/components/structures/RoomSubList.js
@@ -1,4 +1,5 @@
/*
+Copyright 2017 Vector Creations Ltd
Copyright 2015, 2016 OpenMarket Ltd
Licensed under the Apache License, Version 2.0 (the "License");
@@ -84,6 +85,8 @@ var RoomSubList = React.createClass({
incomingCall: React.PropTypes.object,
onShowMoreRooms: React.PropTypes.func,
searchFilter: React.PropTypes.string,
+ emptyContent: React.PropTypes.node, // content shown if the list is empty
+ headerItems: React.PropTypes.node, // content shown in the sublist header
},
getInitialState: function() {
@@ -522,16 +525,15 @@ var RoomSubList = React.createClass({
render: function() {
var connectDropTarget = this.props.connectDropTarget;
- var RoomDropTarget = sdk.getComponent('rooms.RoomDropTarget');
var TruncatedList = sdk.getComponent('elements.TruncatedList');
var label = this.props.collapsed ? null : this.props.label;
- //console.log("render: " + JSON.stringify(this.state.sortedList));
-
- var target;
- if (this.state.sortedList.length == 0 && this.props.editable) {
- target = ;
+ let content;
+ if (this.state.sortedList.length == 0) {
+ content = this.props.emptyContent;
+ } else {
+ content = this.makeRoomTiles();
}
if (this.state.sortedList.length > 0 || this.props.editable) {
@@ -541,8 +543,7 @@ var RoomSubList = React.createClass({
if (!this.state.hidden) {
subList =
- { target }
- { this.makeRoomTiles() }
+ { content }
;
}
else {
diff --git a/src/components/views/dialogs/SetPasswordDialog.js b/src/components/views/dialogs/SetPasswordDialog.js
new file mode 100644
index 0000000000..76c3bb229e
--- /dev/null
+++ b/src/components/views/dialogs/SetPasswordDialog.js
@@ -0,0 +1,118 @@
+/*
+Copyright 2017 Vector Creations Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import sdk from 'matrix-react-sdk';
+import { _t } from 'matrix-react-sdk/lib/languageHandler';
+
+
+/**
+ * Prompt the user to set a password
+ *
+ * On success, `onFinished()` when finished
+ */
+export default React.createClass({
+ displayName: 'SetPasswordDialog',
+ propTypes: {
+ onFinished: React.PropTypes.func.isRequired,
+ },
+
+ getInitialState: function() {
+ return {
+ error: null,
+ success: false,
+ };
+ },
+
+ _onPasswordChanged: function() {
+ this.setState({
+ success: true,
+ });
+ },
+
+ _onContinueClicked: function() {
+ this.props.onFinished(true);
+ },
+
+ _onPasswordChangeError: function(err) {
+ let errMsg = err.error || "";
+ if (err.httpStatus === 403) {
+ errMsg = _t('Failed to change password. Is your password correct?');
+ } else if (err.httpStatus) {
+ errMsg += _t(
+ ' (HTTP status %(httpStatus))',
+ { httpStatus: err.httpStatus },
+ );
+ }
+ this.setState({
+ error: errMsg,
+ });
+ },
+
+ render: function() {
+ const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
+ const ChangePassword = sdk.getComponent('views.settings.ChangePassword');
+
+ if (this.state.success) {
+ return (
+
+
+
+ { _t('You can now return to your account after signing out, and sign in on other devices.') }
+
+
+
+
+
+
+ );
+ }
+
+ return (
+
+
+
+ { _t('This will allow you to return to your account after signing out, and sign in on other devices.') }
+
+
+
+ { this.state.error }
+
+
+
+ );
+ },
+});
diff --git a/src/components/views/globals/GuestWarningBar.js b/src/components/views/globals/GuestWarningBar.js
deleted file mode 100644
index 6cf11fed62..0000000000
--- a/src/components/views/globals/GuestWarningBar.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-Copyright 2016 OpenMarket Ltd
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-var React = require('react');
-var dis = require('matrix-react-sdk/lib/dispatcher');
-import { _tJsx } from 'matrix-react-sdk/lib/languageHandler';
-
-module.exports = React.createClass({
- displayName: 'GuestWarningBar',
-
- onRegisterClicked: function() {
- dis.dispatch({'action': 'start_upgrade_registration'});
- },
-
- onLoginClicked: function() {
- dis.dispatch({'action': 'logout'});
- dis.dispatch({'action': 'start_login'});
- },
-
- render: function() {
- return (
-
- );
- }
-});
-
diff --git a/src/components/views/globals/PasswordNagBar.js b/src/components/views/globals/PasswordNagBar.js
new file mode 100644
index 0000000000..37d011a605
--- /dev/null
+++ b/src/components/views/globals/PasswordNagBar.js
@@ -0,0 +1,60 @@
+/*
+Copyright 2017 Vector Creations Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+'use strict';
+
+import React from 'react';
+import sdk from 'matrix-react-sdk';
+import Modal from 'matrix-react-sdk/lib/Modal';
+import dis from 'matrix-react-sdk/lib/dispatcher';
+
+export default React.createClass({
+ onUpdateClicked: function() {
+ const SetPasswordDialog = sdk.getComponent('dialogs.SetPasswordDialog');
+ Modal.createDialog(SetPasswordDialog, {
+ onFinished: (passwordChanged) => {
+ if (!passwordChanged) {
+ return;
+ }
+ // Notify SessionStore that the user's password was changed
+ dis.dispatch({
+ action: 'password_changed',
+ });
+ }
+ });
+ },
+
+ render: function() {
+ const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
+ const toolbarClasses = "mx_MatrixToolbar mx_MatrixToolbar_clickable";
+ return (
+
+
+
+ To return to your account in future you need to set a password
+
+
+
+ );
+ }
+});
diff --git a/src/components/views/messages/MessageTimestamp.js b/src/components/views/messages/MessageTimestamp.js
index 586ca94cc8..3102b55915 100644
--- a/src/components/views/messages/MessageTimestamp.js
+++ b/src/components/views/messages/MessageTimestamp.js
@@ -16,8 +16,8 @@ limitations under the License.
'use strict';
-const React = require('react');
-const DateUtils = require('matrix-react-sdk/lib/DateUtils');
+import React from 'react';
+import DateUtils from 'matrix-react-sdk/lib/DateUtils';
module.exports = React.createClass({
displayName: 'MessageTimestamp',
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 48e139c8a8..b9578e8282 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -6,9 +6,9 @@
"Notifications": "Benachrichtigungen",
"Invite to this room": "In diesen Raum einladen",
"Filter room names": "Raum-Namen filtern",
- "Start chat": "Neuen Chat starten",
+ "Start chat": "Starte Chat",
"Room directory": "Raum-Verzeichnis",
- "Create new room": "Neuen Raum erstellen",
+ "Create new room": "Erstelle neuen Raum",
"Settings": "Einstellungen",
"powered by Matrix": "betrieben mit Matrix",
"Custom Server Options": "Erweiterte Server-Optionen",
@@ -17,7 +17,7 @@
"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",
+ "Search for a room": "Nach einem Raum suchen",
"No rooms to show": "Keine Räume zum anzeigen",
"World readable": "Alle können mitlesen",
"Guests can join": "Gäste können beitreten",
@@ -37,7 +37,7 @@
"Enable desktop notifications": "Desktop-Benachrichtigungen aktivieren",
"Enable email notifications": "E-Mail-Benachrichtigungen aktivieren",
"Enable notifications for this account": "Benachrichtigungen für dieses Konto aktivieren",
- "Enter keywords separated by a comma:": "Schlagworte kommagetrennt eingeben:",
+ "Enter keywords separated by a comma:": "Schlüsselwörter kommagetrennt eingeben:",
"Error": "Fehler",
"Error saving email notification preferences": "Fehler beim Speichern der E-Mail-Benachrichtigungseinstellungen",
"#example": "#Beispiel",
@@ -59,7 +59,7 @@
"Low Priority": "Niedrige Priorität",
"Noisy": "Laut",
"Notification targets": "Benachrichtigungsziele",
- "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:",
+ "Notifications on the following keywords follow rules which can’t be displayed here:": "Die Benachrichtigungen zu den folgenden Schlüsselwörtern folgen Regeln, die hier nicht angezeigt werden können:",
"Notify for all other messages/rooms": "Benachrichtigungen für alle anderen Mitteilungen/Räume aktivieren",
"Operation failed": "Aktion fehlgeschlagen",
"Reject": "ablehnen",
@@ -120,18 +120,18 @@
"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 containing my user name": "Nachrichten, die meinen Benutzernamen enthalten",
"Messages in group chats": "Nachrichten in Gruppen-Chats",
- "Messages in one-to-one chats": "Nachrichten in Eins-zu-Eins-Chats",
+ "Messages in one-to-one chats": "Nachrichten in Einzel-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-Optionen nutzen, um dich auf anderen Matrix-Servern anzumelden, indem du eine andere Heimserver-URL eingibst. Dies ermöglicht es dir, Riot mit einem bereits existierenden Matrix-Konto auf einem anderen Heimserver zu nutzen.
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.",
"Safari and Opera work too.": "Safari und Opera funktionieren ebenfalls.",
"I understand the risks and wish to continue": "Ich verstehe das Risiko und möchte fortfahren",
- "Messages containing keywords": "Nachrichten, die definierte Schlagworte enthalten",
+ "Messages containing keywords": "Nachrichten, die definierte Schlüsselwörter enthalten",
"Please install Chrome or Firefox for the best experience.": "Bitte installiere Chrome oder Firefox 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.",
+ "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot nutzt zahlreiche fortgeschrittene Browser-Funktionen, die teilweise in deinem aktuell verwendeten Browser noch nicht verfügbar sind oder sich noch im experimentellen Status befinden.",
"Sorry, your browser is not able to run Riot.": "Es tut uns leid, aber dein Browser kann Riot nicht 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",
@@ -154,8 +154,8 @@
"Report a bug": "Einen Fehler melden",
"Riot Desktop on %(platformName)s": "Riot Desktop auf %(platformName)s",
"Riot is not supported on mobile web. Install the app?": "Riot wird im mobilen Web nicht unterstützt. App installieren?",
- "Search": "Suche",
- "Search…": "Suche…",
+ "Search": "Suchen",
+ "Search…": "Suchen…",
"Send": "Sende",
"Send logs": "Sende Protokolle",
"This Room": "Dieser Raum",
@@ -168,5 +168,40 @@
"Waiting for response from server": "Warte auf eine Antwort vom Server",
"You are Rioting as a guest. Register or sign in to access more rooms and features!": "Du verwendest Riot als Gast. Registriere oder melde dich an um Zugang zu mehr Räumen und Funktionen zu bekommen!",
"You need to be using HTTPS to place a screen-sharing call.": "Du musst HTTPS nutzen um einen Anruf mit Bildschirmfreigabe durchzuführen.",
- "OK": "OK"
+ "OK": "OK",
+ "Login": "Anmeldung",
+ "Welcome to Riot.im": "Willkommen bei Riot.im",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Dezentralisierter, verschlüsselter Chat & Zusammenarbeit unterstützt von [matrix]",
+ "Search the room directory": "Durchsuche Raum-Verzeichnis",
+ "Chat with Riot Bot": "Chatte mit dem Riot-Bot",
+ "Get started with some tips from Riot Bot!": "Beginne mit einigen Tipps vom Riot-Bot!",
+ "General discussion about Matrix": "Allgemeine Diskussion über Matrix",
+ "Discussion of all things Matrix!": "\"Diskussion über alle Dinge\"-Matrix!",
+ "Riot/Web & Desktop chat": "Riot-Web & Desktop-Chat",
+ "Riot/iOS & matrix-ios-sdk chat": "Riot-iOS & \"matrix-ios-sdk\"-Chat",
+ "Riot/Android & matrix-android-sdk chat": "Riot-Android & matrix-android-sdk-Chat",
+ "Matrix technical discussions": "Technische Diskussion über Matrix",
+ "Running Matrix services": "Matrix-Dienste betreiben",
+ "Community-run support for Synapse": "Synapse-Support von der Community",
+ "Admin support for Dendrite": "Admin-Unterstützung für Dendrite",
+ "Announcements about Synapse releases": "Ankündigungen über Synapse-Versionen",
+ "Support for those using and running matrix-appservice-irc": "Unterstützung für die, die \"matrix-appservice-irc\" betreiben und nutzen",
+ "Building services on Matrix": "Dienste bauen für Matrix",
+ "Support for those using the Matrix spec": "Unterstützung für die Nutzer der Matrix-Spezification",
+ "Design and implementation of E2E in Matrix": "Design und Implementierung von Ende-zu-Ende-Verschlüsselung in Matrix",
+ "Implementing VR services with Matrix": "Implementierung von VR-Diensten mit Matrix",
+ "Implementing VoIP services with Matrix": "Implementierung von VoIP-Diensten mit Matrix",
+ "Discussion of the Identity Service API": "Diskussion der Identitätsdienst-API",
+ "Support for those using, running and writing other bridges": "Unterstützung für die, die andere Brücken nutzen, betreiben oder schreiben",
+ "Contributing code to Matrix and Riot": "Code zu Matrix und Riot beitragen",
+ "Dev chat for the Riot/Web dev team": "Entwickler-Chat für das Riot-Web-Entwickler-Team",
+ "Co-ordination for Riot/Web translators": "Koordination für Riot-Web-Übersetzer",
+ "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Im Matrix-Netzwerk gibt es bereits jetzt zahlreiche Räume, die entweder mit bekannten Netzwerken wie Slack, IRC, Gitter, usw. verknüpft sind oder auch komplett eigenständig betrieben werden. Einen genauen Überblick erhältst du im Raum-Verzeichnis!",
+ "Failed to change password. Is your password correct?": "Passwortänderung fehlgeschlagen. Ist dein Passwort richtig?",
+ "You have successfully set a password!": "Du hast erfolgreich ein Passwort gesetzt!",
+ "You can now return to your account after signing out, and sign in on other devices.": "Du kannst nun zu deinem Konto zurückkehren nach dem du dich an anderen Geräten ab- und angemeldet hast.",
+ "Continue": "Fortfahren",
+ "Please set a password!": "Bitte ein Passwort einrichten!",
+ "This will allow you to return to your account after signing out, and sign in on other devices.": "Dies erlaubt dir, dich wieder an deinem Konto anzumelden, nachdem du dich abgemeldet hast.",
+ "Dev chat for the Dendrite dev team": "Entwickler-Chat for das Dendrite-Entwickler-Team"
}
diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json
new file mode 100644
index 0000000000..ef09843466
--- /dev/null
+++ b/src/i18n/strings/el.json
@@ -0,0 +1,159 @@
+{
+ "A new version of Riot is available.": "Μία νέα έκδοση του Riot είναι διαθέσιμη.",
+ "Advanced notification settings": "Προχωρημένες ρυθμίσεις ειδοποιήσεων",
+ "All messages": "Όλα τα μηνύματα",
+ "All Rooms": "Όλα τα δωμάτια",
+ "All notifications are currently disabled for all targets.": "Όλες οι ειδοποιήσεις είναι προς το παρόν απενεργοποιημένες για όλες τις συσκευές.",
+ "An error occurred whilst saving your email notification preferences.": "Ένα σφάλμα προέκυψε κατά την αποθήκευση των ρυθμίσεων σας.",
+ "Call invitation": "Πρόσκληση σε κλήση",
+ "Cancel": "Ακύρωση",
+ "Cancel Sending": "Ακύρωση Αποστολής",
+ "Can't update user notification settings": "Δεν είναι δυνατή η ενημέρωση των ρυθμίσεων ειδοποίησης χρήστη",
+ "Changelog": "Αλλαγές",
+ "Close": "Κλείσιμο",
+ "Collapse panel": "Ελαχιστοποίηση καρτέλας",
+ "Create new room": "Δημιούργησε ένα νέο δωμάτιο",
+ "Custom Server Options": "Προσαρμοσμένες ρυθμίσεις διακομιστή",
+ "Describe your problem here.": "Περιέγραψε το πρόβλημα σου εδώ.",
+ "Direct Chat": "Απευθείας Συνομιλία",
+ "Directory": "Ευρετήριο",
+ "Download this file": "Κατέβασε το αρχείο",
+ "Enable audible notifications in web client": "Ενεργοποίηση των ηχητικών ειδοποιήσεων",
+ "Enable email notifications": "Ενεργοποίηση ειδοποιήσεων μέσω email",
+ "Enable notifications for this account": "Ενεργοποίηση ειδοποιήσεων γι' αυτό το λογαριασμό",
+ "Enter keywords separated by a comma:": "Πρόσθεσε λέξεις κλειδιά χωρισμένες με κόμμα:",
+ "Error": "Σφάλμα",
+ "#example": "#παράδειγμα",
+ "Expand panel": "Μεγιστοποίηση καρτέλας",
+ "Safari and Opera work too.": "Safari και Opera λειτουργούν επίσης.",
+ "Add an email address above to configure email notifications": "Πρόσθεσε μια διεύθυνση email στο παραπάνω πεδίο, για να έχεις τη δυνατότητα να λαμβάνεις ειδοποιήσεις",
+ "Collecting app version information": "Συγκέντρωση πληροφοριών σχετικά με την έκδοση της εφαρμογής",
+ "customServer_text": "Μπορείτε να χρησιμοποιήσετε τις προσαρμοσμένες ρυθμίσεις για να εισέλθετε σε άλλους διακομιστές Matrix επιλέγοντας ένα διαφορετικό URL για το διακομιστή. Αυτό σας επιτρέπει να χρησιμοποιήσετε την εφαρμογή Riot με έναν υπάρχοντα λογαριασμό σε διαφορετικό διακομιστή.
Επίσης μπορείτε να επιλέξετε ένα διαφορετικό διακομιστή ταυτότητας αλλά δεν θα έχετε τη δυνατότητα να προσκαλέσετε άλλους χρήστες ή να σας προσκαλέσουν, μέσω email.",
+ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s μέσω %(browserName)s σε %(osName)s",
+ "All messages (loud)": "Όλα τα μηνύματα (δυνατά)",
+ "delete the alias.": "διέγραψε το ψευδώνυμο.",
+ "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Διαγραφή του ψευδώνυμου %(alias)s και αφαίρεση του %(name)s από το ευρετήριο;",
+ "Dismiss": "Αγνόησε",
+ "Failed to add tag %(tagName)s to room": "Δεν ήταν δυνατή η εισαγωγή του tag %(tagName)s στο δωμάτιο",
+ "Failed to change settings": "Δεν ήταν δυνατή η αλλαγή των ρυθμίσεων",
+ "Failed to join the room": "Δεν ήταν δυνατή η σύνδεση στο δωμάτιο",
+ "Favourite": "Αγαπημένο",
+ "Files": "Αρχεία",
+ "Filter room names": "Φίλτραρε τα δωμάτια",
+ "Forward Message": "Προώθηση",
+ " from room": " από το δωμάτιο",
+ "Guests can join": "Επισκέπτες μπορούν να συνδεθούν",
+ "Guest users can't invite users. Please register to invite.": "Οι επισκέπτες δεν έχουν τη δυνατότητα να προσκαλέσουν άλλους χρήστες. Παρακαλώ εγγραφείτε πρώτα.",
+ "Hide panel": "Κρύψε τη καρτέλα",
+ "I understand the risks and wish to continue": "Κατανοώ του κινδύνους και επιθυμώ να συνεχίσω",
+ "Invite to this room": "Προσκάλεσε",
+ "Keywords": "Λέξεις κλειδιά",
+ "Leave": "Αποχώρησε",
+ "Low Priority": "Χαμηλής Προτεραιότητας",
+ "Members": "Μέλη",
+ "Messages containing keywords": "Μηνύματα που περιέχουν λέξεις κλειδιά",
+ "Messages containing my user name": "Μηνύματα που περιέχουν το ψευδώνυμο μου",
+ "Messages in group chats": "Μηνύματα σε ομαδικές συνομιλίες",
+ "Messages in one-to-one chats": "Μηνύματα σε 1-προς-1 συνομιλίες",
+ "Messages sent by bot": "Μηνύματα από bots",
+ "more": "περισσότερα",
+ "Mute": "Σίγαση",
+ "No rooms to show": "Δεν υπάρχουν δωμάτια για εμφάνιση",
+ "Noisy": "Δυνατά",
+ "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": "Ειδοποίησέ με για οτιδήποτε άλλο",
+ "Operation failed": "Η λειτουργία απέτυχε",
+ "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Παρακαλώ περιγράψτε το σφάλμα. Τι κάνατε; Τι περιμένατε να συμβεί; Τι έγινε τελικά;",
+ "Please Register": "Παρακαλώ εγγραφείτε",
+ "Redact": "Ανακάλεσε",
+ "Reject": "Απέρριψε",
+ "Remove": "Αφαίρεσε",
+ "Remove from Directory": "Αφαίρεση από το Ευρετήριο",
+ "Resend": "Ξαναστείλε",
+ "Riot Desktop on %(platformName)s": "Riot Desktop σε %(platformName)s",
+ "Room directory": "Ευρετήριο",
+ "Room not found": "Το δωμάτιο δεν βρέθηκε",
+ "Search": "Αναζήτηση",
+ "Search…": "Αναζήτηση…",
+ "Send": "Στείλε",
+ "Settings": "Ρυθμίσεις",
+ "Start chat": "Άρχισε μια συνομιλία",
+ "This Room": "Στο δωμάτιο",
+ "Unavailable": "Μη διαθέσιμο",
+ "Unknown device": "Άγνωστη συσκευή",
+ "Update": "Ενημέρωση",
+ "Enable desktop notifications": "Ενεργοποίηση ειδοποιήσεων στην επιφάνεια εργασίας",
+ "Error saving email notification preferences": "Σφάλμα κατά την αποθήκευση των προτιμήσεων",
+ "Failed to send report: ": "Η αποστολή της αναφοράς απέτυχε: ",
+ "Loading bug report module": "Φόρτωση μονάδας αναφοράς σφαλμάτων",
+ "Mentions only": "Αναφορές μόνο",
+ "Messages containing my display name": "Μηνύματα που περιέχουν το όνομα μου",
+ "Off": "Ανενεργό",
+ "On": "Ενεργό",
+ "Permalink": "Μόνιμος σύνδεσμος",
+ "Please install Chrome or Firefox for the best experience.": "Παρακαλώ εγκαταστήστε έναν από τους φυλλομετρητές Chrome ή Firefox για την καλύτερη δυνατή εμπειρία.",
+ "Report a bug": "Ανεφέρε κάποιο πρόβλημα",
+ "Riot does not know how to join a room on this network": "To Riot δεν γνωρίζει πως να συνδεθεί σε δωμάτια που ανήκουν σ' αυτό το δίκτυο",
+ "Search for a room": "Αναζήτησε κάποιο δωμάτιο",
+ "Sorry, your browser is not able to run Riot.": "Λυπούμαστε, αλλά ο φυλλομετρητής σας δεν υποστηρίζεται από το Riot.",
+ "There are advanced notifications which are not shown here": "Υπάρχουν προχωρημένες ειδοποιήσεις οι οποίες δεν εμφανίζονται εδώ",
+ "This room is inaccessible to guests. You may be able to join if you register.": "Το δωμάτιο δεν είναι προσβάσιμο σε επισκέπτες. Πιθανόν να μπορέσετε να συνδεθείτε εάν εγγραφείτε.",
+ "Unable to join network": "Δεν είναι δυνατή η σύνδεση στο δίκτυο",
+ "unknown error code": "άγνωστος κωδικός σφάλματος",
+ "Unnamed room": "Δωμάτιο χωρίς όνομα",
+ "Uploaded on %(date)s by %(user)s": "Ανέβηκε την %(date)s από %(user)s",
+ "Uploading report": "Ανέβασμα αναφοράς",
+ "What's New": "Τι νέο υπάρχει",
+ "What's new?": "Τι νέο υπάρχει;",
+ "When I'm invited to a room": "Όταν με προσκαλούν σ' ένα δωμάτιο",
+ "World readable": "Εμφανές σε όλους",
+ "You cannot delete this image. (%(code)s)": "Δεν μπορείτε να διαγράψετε αυτή την εικόνα. (%(code)s)",
+ "You cannot delete this message. (%(code)s)": "Δεν μπορείτε να διαγράψετε αυτό το μήνυμα. (%(code)s)",
+ "You are not receiving desktop notifications": "Δεν λαμβάνετε ειδοποιήσεις στην επιφάνεια εργασίας",
+ "Sunday": "Κυριακή",
+ "Monday": "Δευτέρα",
+ "Tuesday": "Τρίτη",
+ "Wednesday": "Τετάρτη",
+ "Thursday": "Πέμπτη",
+ "Friday": "Παρασκευή",
+ "Saturday": "Σάββατο",
+ "Today": "Σήμερα",
+ "Yesterday": "Χθές",
+ "OK": "ΟΚ",
+ "You need to be using HTTPS to place a screen-sharing call.": "Απαιτείται η χρήση HTTPS για το διαμοιρασμό της επιφάνειας εργασίας μέσω κλήσης.",
+ "Welcome page": "Αρχική σελίδα",
+ "Forget": "Διαγραφή",
+ "Riot is not supported on mobile web. Install the app?": "Το Riot δεν υποστηρίζεται από φυλλομετρητές κινητών. Θέλετε να εγκαταστήσετε την εφαρμογή;",
+ "Unhide Preview": "Προεπισκόπηση",
+ "Waiting for response from server": "Αναμονή απάντησης από τον διακομιστή",
+ "You are Rioting as a guest. Register or sign in to access more rooms and features!": "Χρησιμοποιείς το Riot ως επισκέπτης. Κάνε εγγραφή ή συνδέσου για να αποκτήσεις πρόσβαση σε περισσότερα δωμάτια και επιλογές!",
+ "Collecting logs": "Συγκέντρωση πληροφοριών",
+ "Enable them now": "Ενεργοποίηση",
+ "Failed to forget room %(errCode)s": "Δεν ήταν δυνατή η διαγραφή του δωματίου",
+ "Failed to update keywords": "Οι λέξεις κλειδιά δεν ενημερώθηκαν",
+ "Failed to get protocol list from Home Server": "Δεν ήταν δυνατή η εύρεση των διαθέσιμων πρωτοκόλλων από το διακομιστή",
+ "Failed to remove tag %(tagName)s from room": "Δεν ήταν δυνατή η διαγραφή του tag %(tagName)s από το δωμάτιο",
+ "Notification targets": "Στόχοι ειδοποιήσεων",
+ "Please describe the bug and/or send logs.": "Παρακαλώ περιγράψτε το πρόβλημα και/ή στείλτε πληροφορίες σχετικά με την εφαρμογή.",
+ "Remove %(name)s from the directory?": "Αφαίρεση του %(name)s από το ευρετήριο;",
+ "remove %(name)s from the directory.": "αφαίρεση του %(name)s από το ευρετήριο.",
+ "Send logs": "Στείλε πληροφορίες",
+ "Source URL": "Πηγαίο URL",
+ "The server may be unavailable or overloaded": "Ο διακομιστής είναι μη διαθέσιμος ή υπερφορτωμένος",
+ " to room": " στο δωμάτιο",
+ "Unable to fetch notification target list": "Δεν ήταν δυνατή η εύρεση στόχων για τις ειδοποιήσεις",
+ "Unable to look up room ID from server": "Δεν είναι δυνατή η εύρεση του ID για το δωμάτιο",
+ "View Decrypted Source": "Δες τον αποκρυπτογραφημένο κώδικα",
+ "View Source": "Δες τον κώδικα",
+ "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Ισως έχεις κάνει τις ρυθμίσεις σε άλλη εφαρμογή εκτός του Riot. Δεν μπορείς να τις αλλάξεις μέσω του Riot αλλά ισχύουν κανονικά",
+ "Couldn't find a matching Matrix room": "Δεν βρέθηκε κάποιο δωμάτιο",
+ "Drop here %(toAction)s": "Σύρε εδώ %(toAction)s",
+ "Failed to": "Αποτυχία να",
+ "Failed to get public room list": "Δεν ήταν δυνατή η λήψη της λίστας με τα δημόσια δωμάτια",
+ "Failed to set direct chat tag": "Δεν ήταν δυνατός ο χαρακτηρισμός της συνομιλίας ως 1-προς-1",
+ "powered by Matrix": "βασισμένο στο πρωτόκολλο Matrix",
+ "Quote": "Αναφορά",
+ "Fetching third party location failed": "Η λήψη τοποθεσίας απέτυχε"
+}
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index e148248cc6..c6f461e0e7 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -67,6 +67,7 @@
"Invite to this room": "Invite to this room",
"Keywords": "Keywords",
"Leave": "Leave",
+ "Login": "Login",
"Loading bug report module": "Loading bug report module",
"Low Priority": "Low Priority",
"Members": "Members",
@@ -160,5 +161,39 @@
"OK": "OK",
"You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.",
"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!"
+ "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!",
+ "Welcome to Riot.im": "Welcome to Riot.im",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralised, encrypted chat & collaboration powered by [matrix]",
+ "Search the room directory": "Search the room directory",
+ "Chat with Riot Bot": "Chat with Riot Bot",
+ "Get started with some tips from Riot Bot!": "Get started with some tips from Riot Bot!",
+ "General discussion about Matrix and Riot": "General discussion about Matrix and Riot",
+ "Discussion of all things Matrix!": "Discussion of all things Matrix!",
+ "Riot/Web & Desktop chat": "Riot/Web & Desktop chat",
+ "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat",
+ "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat",
+ "Matrix technical discussions": "Matrix technical discussions",
+ "Running Matrix services": "Running Matrix services",
+ "Community-run support for Synapse": "Community-run support for Synapse",
+ "Admin support for Dendrite": "Admin support for Dendrite",
+ "Announcements about Synapse releases": "Announcements about Synapse releases",
+ "Support for those using and running matrix-appservice-irc": "Support for those using and running matrix-appservice-irc",
+ "Building services on Matrix": "Building services on Matrix",
+ "Support for those using the Matrix spec": "Support for those using the Matrix spec",
+ "Design and implementation of E2E in Matrix": "Design and implementation of E2E in Matrix",
+ "Implementing VR services with Matrix": "Implementing VR services with Matrix",
+ "Implementing VoIP services with Matrix": "Implementing VoIP services with Matrix",
+ "Discussion of the Identity Service API": "Discussion of the Identity Service API",
+ "Support for those using, running and writing other bridges": "Support for those using, running and writing other bridges",
+ "Contributing code to Matrix and Riot": "Contributing code to Matrix and Riot",
+ "Dev chat for the Riot/Web dev team": "Dev chat for the Riot/Web dev team",
+ "Dev chat for the Dendrite dev team": "Dev chat for the Dendrite dev team",
+ "Co-ordination for Riot/Web translators": "Co-ordination for Riot/Web translators",
+ "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!",
+ "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?",
+ "You have successfully set a password!": "You have successfully set a password!",
+ "You can now return to your account after signing out, and sign in on other devices.": "You can now return to your account after signing out, and sign in on other devices.",
+ "Continue": "Continue",
+ "Please set a password!": "Please set a password!",
+ "This will allow you to return to your account after signing out, and sign in on other devices.": "This will allow you to return to your account after signing out, and sign in on other devices."
}
diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json
new file mode 100644
index 0000000000..a75bc7f5f6
--- /dev/null
+++ b/src/i18n/strings/en_US.json
@@ -0,0 +1,164 @@
+{
+ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s",
+ "Safari and Opera work too.": "Safari and Opera work too.",
+ "A new version of Riot is available.": "A new version of Riot is available.",
+ "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 Rooms": "All Rooms",
+ "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 while saving your email notification preferences.",
+ "Call invitation": "Call invitation",
+ "Cancel": "Cancel",
+ "Cancel Sending": "Cancel Sending",
+ "Can't update user notification settings": "Can't update user notification settings",
+ "Changelog": "Changelog",
+ "Close": "Close",
+ "Collapse panel": "Collapse panel",
+ "Collecting app version information": "Collecting app version information",
+ "Collecting logs": "Collecting logs",
+ "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. This allows you to use Riot with an existing Matrix account on a different home server.
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?",
+ "Describe your problem here.": "Describe your problem here.",
+ "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",
+ "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",
+ "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 send report: ": "Failed to send report: ",
+ "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": "Favorite",
+ "Fetching third party location failed": "Fetching third party location failed",
+ "Files": "Files",
+ "Filter room names": "Filter room names",
+ "Forget": "Forget",
+ "Forward Message": "Forward Message",
+ " 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.",
+ "Hide panel": "Hide panel",
+ "I understand the risks and wish to continue": "I understand the risks and wish to continue",
+ "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please uncheck:",
+ "Invite to this room": "Invite to this room",
+ "Keywords": "Keywords",
+ "Leave": "Leave",
+ "Loading bug report module": "Loading bug report module",
+ "Low Priority": "Low Priority",
+ "Members": "Members",
+ "Mentions only": "Mentions only",
+ "Messages containing my display name": "Messages containing my display name",
+ "Messages containing keywords": "Messages containing keywords",
+ "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 describe the bug. What did you do? What did you expect to happen? What actually happened?": "Please describe the bug. What did you do? What did you expect to happen? What actually happened?",
+ "Please describe the bug and/or send logs.": "Please describe the bug and/or send logs.",
+ "Please install Chrome or Firefox for the best experience.": "Please install Chrome or Firefox for the best experience.",
+ "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",
+ "Report a bug": "Report a bug",
+ "Resend": "Resend",
+ "Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s",
+ "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 is not supported on mobile web. Install the app?": "Riot is not supported on mobile web. Install the app?",
+ "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": "Search",
+ "Search…": "Search…",
+ "Search for a room": "Search for a room",
+ "Send": "Send",
+ "Send logs": "Send logs",
+ "Settings": "Settings",
+ "Source URL": "Source URL",
+ "Sorry, your browser is not able to run Riot.": "Sorry, your browser is not 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",
+ "The server may be unavailable or overloaded": "The server may be unavailable or overloaded",
+ "This Room": "This Room",
+ "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",
+ "Unavailable": "Unavailable",
+ "Unhide Preview": "Unhide Preview",
+ "Unknown device": "Unknown device",
+ "unknown error code": "unknown error code",
+ "Unnamed room": "Unnamed room",
+ "Update": "Update",
+ "Uploaded on %(date)s by %(user)s": "Uploaded on %(date)s by %(user)s",
+ "Uploading report": "Uploading report",
+ "View Decrypted Source": "View Decrypted Source",
+ "View Source": "View Source",
+ "What's New": "What's New",
+ "What's new?": "What's new?",
+ "Waiting for response from server": "Waiting for response from server",
+ "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 are Rioting as a guest. Register or sign in to access more rooms and features!": "You are Rioting as a guest. Register or sign in to access more rooms and features!",
+ "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",
+ "OK": "OK",
+ "You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.",
+ "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!"
+}
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index 31b1699b1f..9fd5dd5470 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -16,7 +16,7 @@
"Direct Chat": "Conversación directa",
"Directory": "Directorio",
"Download this file": "Descargar este archivo",
- "Drop here %(toAction)s": "Suelta aquí para %(toAction)s",
+ "Drop here %(toAction)s": "Suelta aquí %(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",
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index 34e9904af9..d5d33930ab 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -127,5 +127,38 @@
"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 keywords": "Az üzenet kulcsszavakat tartalmaz"
+ "Messages containing keywords": "Az üzenet kulcsszavakat tartalmaz",
+ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s alkalmazás %(browserName)s böngészőn %(osName)s rendszeren",
+ "A new version of Riot is available.": "Új verzió érhető el a Riot-ból.",
+ "All Rooms": "Minden szoba",
+ "Cancel": "Mégse",
+ "Changelog": "Változások",
+ "Collecting app version information": "Alkalmazás verzió információk összegyűjtése",
+ "Collecting logs": "Naplók összegyűjtése",
+ "Describe your problem here.": "Írd le a problémád itt.",
+ "Failed to send report: ": "A jelentést nem lehetett elküldeni: ",
+ "Forward Message": "Üzenet továbbküldése",
+ "Hide panel": "Panel elrejtése",
+ "Loading bug report module": "Hibabejelentő modul betöltése",
+ "Please describe the bug and/or send logs.": "Írd le a hibát és/vagy küld el a naplókat.",
+ "Report a bug": "Hiba bejelentése",
+ "Riot Desktop on %(platformName)s": "Riot Desktop ezen: %(platformName)s",
+ "Riot is not supported on mobile web. Install the app?": "Riot nem támogatott mobil webböngészőn. Telepíted az alkalmazást?",
+ "Search": "Keresés",
+ "Search…": "Keresés…",
+ "Send": "Küld",
+ "Send logs": "Naplók elküldése",
+ "This Room": "Ez a szoba",
+ "Unavailable": "Elérhetetlen",
+ "Unknown device": "Ismeretlen eszköz",
+ "Update": "Frissítés",
+ "Uploading report": "Jelentés feltöltése",
+ "What's New": "Mik az újdonságok",
+ "What's new?": "Mik az újdonságok?",
+ "Waiting for response from server": "Válasz várása a szervertől",
+ "You are Rioting as a guest. Register or sign in to access more rooms and features!": "Vendégként használod a Riot-ot. Regisztrálj vagy jelentkezz be további szobák és lehetőségek eléréséhez!",
+ "OK": "Rendben",
+ "You need to be using HTTPS to place a screen-sharing call.": "HTTPS-t kell használnod hogy képernyőmegosztásos hívást kezdeményezz.",
+ "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "A problémák diagnosztizálása érdekében erről a kliensről a hibajelentésben naplók lesznek elküldve. Ha csak az alábbi szöveget szeretnéd elküldeni akkor ezt ne jelöld meg:",
+ "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Írd le a hibát. Mit csináltál? Mi az amit szerettél volna ha történik? Ezzel szemben mi az ami történt?"
}
diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json
index d449c446c5..3ecffb3e72 100644
--- a/src/i18n/strings/nl.json
+++ b/src/i18n/strings/nl.json
@@ -118,5 +118,8 @@
"Welcome page": "Welkom pagina",
"Drop here %(toAction)s": "%(toAction)s hier naar toe verplaatsen",
"Failed to set Direct Message status of room": "Het is mislukt om de directe berichten status van de kamer in te stellen",
- "Redact": "Redigeren"
+ "Redact": "Redigeren",
+ "A new version of Riot is available.": "Nieuwe Riot versie is beschikbaar.",
+ "All Rooms": "Alle Kamers",
+ "Cancel": "Annuleer"
}
diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json
index 9e26dfeeb6..953aaa1f94 100644
--- a/src/i18n/strings/pl.json
+++ b/src/i18n/strings/pl.json
@@ -1 +1,78 @@
-{}
\ No newline at end of file
+{
+ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s przez %(browserName)s na %(osName)s",
+ "Safari and Opera work too.": "Safari i Opera też działają.",
+ "A new version of Riot is available.": "Dostępna jest nowa wersja Riot.",
+ "Add an email address above to configure email notifications": "Dodaj adres e-mail powyżej, aby skonfigurować powiadomienia e-mailowe",
+ "Advanced notification settings": "Zaawansowane ustawienia powiadomień",
+ "All messages": "Wszystkie wiadomości",
+ "All messages (loud)": "Wszystkie wiadomości (głośno)",
+ "All Rooms": "Wszystkie pokoje",
+ "All notifications are currently disabled for all targets.": "Wszystkie powiadomienia są obecnie wyłączone dla wszystkich celów.",
+ "An error occurred whilst saving your email notification preferences.": "Podczas zapisywania ustawień powiadomień e-mail wystąpił błąd.",
+ "Call invitation": "Zaproszenie do rozmowy",
+ "Cancel": "Anuluj",
+ "Cancel Sending": "Anuluj wysyłanie",
+ "Can't update user notification settings": "Nie można zaktualizować ustawień powiadomień użytkownika",
+ "Changelog": "Dziennik zmian",
+ "Close": "Blisko",
+ "Collecting app version information": "Zbieranie informacji o wersji aplikacji",
+ "Collecting logs": "Zbieranie dzienników",
+ "Create new room": "Utwórz nowy pokój",
+ "Couldn't find a matching Matrix room": "Nie można znaleźć pasującego pokoju Matrix",
+ "Custom Server Options": "Niestandardowe opcje serwera",
+ "delete the alias.": "usunąć alias.",
+ "Describe your problem here.": "Opisz swój problem tutaj.",
+ "Directory": "Księga adresowa",
+ "Download this file": "Pobierz plik",
+ "Welcome page": "Strona powitalna",
+ "Riot is not supported on mobile web. Install the app?": "Riot nie jest obsługiwany przez mobilną przeglądarkę internetową. Zainstaluj aplikację?",
+ "Room directory": "Katalog pokojowy",
+ "Search": "Szukaj",
+ "Search…": "Szukaj…",
+ "Search for a room": "Szukaj pokoju",
+ "Send": "Wysłać",
+ "Settings": "Ustawienia",
+ "Collapse panel": "Ukryj panel",
+ "customServer_text": "Możesz używać opcji serwera niestandardowego do logowania się na inne serwery Matrix, określając inny adres URL serwera domowego. Pozwala to na wykorzystanie Riot z istniejącym kontem Matrix na innym serwerze domowym.
Można również ustawić niestandardowy serwer tożsamości, ale nie będzie można zapraszać użytkowników adresem e-mail, ani być zaproszony przez adres e-mailowy.",
+ "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Usuń alias %(alias)s i usuń %(name)s z katalogu?",
+ "Dismiss": "Zdymisjonować",
+ "Drop here %(toAction)s": "Upuść tutaj %(toAction)s",
+ "Enable audible notifications in web client": "Włącz dźwiękowe powiadomienia w kliencie internetowym",
+ "Enable email notifications": "Włącz powiadomienia e-mailowe",
+ "Enable notifications for this account": "Włącz powiadomienia na tym koncie",
+ "Enable them now": "Włącz je teraz",
+ "Enter keywords separated by a comma:": "Wpisz słowa kluczowe oddzielone przecinkami:",
+ "Error": "Błąd",
+ "Error saving email notification preferences": "Wystąpił błąd podczas zapisywania ustawień powiadomień e-mailowych",
+ "#example": "#przykład",
+ "Expand panel": "Rozwiń panel",
+ "Failed to": "Nie udało się",
+ "Failed to add tag %(tagName)s to room": "Nie można dodać tagu %(tagName)s do pokoju",
+ "Failed to change settings": "Nie udało się zmienić ustawień",
+ "Failed to forget room %(errCode)s": "Nie mogłem zapomnieć o pokoju %(errCode)s",
+ "Failed to update keywords": "Nie udało się zaktualizować słów kluczowych",
+ "Failed to get protocol list from Home Server": "Nie można pobrać listy protokołów z serwera domowego",
+ "Failed to get public room list": "Nie udało się uzyskać publicznej listy pokojowej",
+ "Failed to join the room": "Nie udało się dołączyć do pokoju",
+ "Failed to remove tag %(tagName)s from room": "Nie udało się usunąć tagu %(tagName)s z pokoju",
+ "Failed to send report: ": "Nie udało się wysłać raportu: ",
+ "Favourite": "Ulubiony",
+ "Files": "Pliki",
+ "Filter room names": "Filtruj nazwy pokojów",
+ "Forget": "Zapomnij",
+ "Forward Message": "Przekaż wiadomość",
+ " from room": " z pokoju",
+ "Guests can join": "Goście mogą dołączyć",
+ "Hide panel": "Ukryj panel",
+ "I understand the risks and wish to continue": "Rozumiem ryzyko i chęć kontynuować",
+ "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "W celu zdiagnozowania problemów logi z tego klienta zostaną wysłane wraz z tym raportem o błędzie. Jeśli wolisz wysłać tylko tekst powyżej, proszę odznacz:",
+ "Invite to this room": "Zaproś do tego pokoju",
+ "Keywords": "Słowa kluczowe",
+ "Loading bug report module": "Ładowanie modułu raportu błędów",
+ "Low Priority": "Niski priorytet",
+ "Messages containing keywords": "Wiadomości zawierające słowa kluczowe",
+ "Messages containing my user name": "Wiadomości zawierające mój użytkownik",
+ "Messages in group chats": "Wiadomości w czatach grupowych",
+ "Messages sent by bot": "Wiadomości wysłane przez robota",
+ "more": "więcej"
+}
diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json
index e2406a5107..63f8500c9c 100644
--- a/src/i18n/strings/pt.json
+++ b/src/i18n/strings/pt.json
@@ -1,8 +1,8 @@
{
- "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",
+ "Add an email address above to configure email notifications": "Insira um endereço de email no campo acima para configurar as notificações por email",
"All messages": "Todas as mensagens",
"All messages (loud)": "Todas as mensagens (alto)",
- "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.",
+ "An error occurred whilst saving your email notification preferences.": "Ocorreu um erro ao guardar as 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",
@@ -15,62 +15,62 @@
"Direct Chat": "Conversa pessoal",
"Directory": "Diretório",
"Dismiss": "Descartar",
- "Download this file": "Baixar este arquivo",
+ "Download this file": "Transferir este ficheiro",
"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 email notifications": "Ativar notificações por e-mail",
"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:",
+ "Enable them now": "Ativar agora",
+ "Enter keywords separated by a comma:": "Insira palavras-chave separadas por vírgula:",
"Error": "Erro",
- "Error saving email notification preferences": "Erro ao salvar as preferências de notificação por email",
+ "Error saving email notification preferences": "Erro ao guardar as preferências de notificação por e-mail",
"#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 change settings": "Falha ao alterar as configurações",
+ "Failed to forget room %(errCode)s": "Falha ao esquecer a sala %(errCode)s",
+ "Failed to update keywords": "Falha ao atualizar as palavras-chave",
+ "Failed to get protocol list from Home Server": "Falha ao obter a lista de protocolos do servidor padrão",
+ "Failed to get public room list": "Falha ao obter a lista de salas públicas",
+ "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 definir a mensagem de status da sala",
"Favourite": "Favorito",
- "Fetching third party location failed": "Falha ao acessar localização de terceiros",
- "Files": "Arquivos",
+ "Fetching third party location failed": "Falha ao obter localização de terceiros",
+ "Files": "Ficheiros",
"Filter room names": "Filtrar salas por título",
"Forget": "Esquecer",
"Forward Message": "Encaminhar",
" 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.",
+ "Guest users can't invite users. Please register to invite.": "Utilizadores convidados não podem convidar utilizadores. Por favor registe-se para convidar.",
"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 containing my display name": "Mensagens contendo o meu nome público",
+ "Messages containing my user name": "Mensagens contendo o meu nome de utilizador",
"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",
+ "more": "mais",
+ "Mute": "Silenciar",
"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 for all other messages/rooms": "Notificar para todas as outras mensagens/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",
+ "Please Register": "Por favor registe-se",
"powered by Matrix": "rodando a partir do Matrix",
"Quote": "Citar",
"Redact": "Remover",
@@ -80,87 +80,87 @@
"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",
+ "Riot does not know how to join a room on this network": "O Riot não sabe como entrar numa sala nesta rede",
"Room directory": "Lista de salas públicas",
"Room not found": "Sala não encontrada",
- "Search for a room": "Procurar por uma sala",
+ "Search for a room": "Pesquisar por uma sala",
"Settings": "Configurações",
"Source URL": "URL fonte",
- "Start chat": "Começar conversa",
+ "Start chat": "Iniciar 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",
+ "There are advanced notifications which are not shown here": "Existem notificaçõ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.",
+ "This room is inaccessible to guests. You may be able to join if you register.": "Esta sala é inacessível para convidados. Poderá conseguir entrar caso se registe.",
" 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",
+ "Unable to join network": "Não foi possível juntar-se à rede",
+ "Unable to look up room ID from server": "Não foi possível obter a identificação da sala do 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 Decrypted Source": "Ver a fonte decifrada",
"View Source": "Ver a fonte",
- "When I'm invited to a room": "Quando sou convidada(o) a uma sala",
+ "When I'm invited to a room": "Quando sou convidado para 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",
+ "You cannot delete this image. (%(code)s)": "Não pode apagar esta imagem. (%(code)s)",
+ "You cannot delete this message. (%(code)s)": "Não pode apagar esta mensagem. (%(code)s)",
+ "You are not receiving desktop notifications": "Não está a receber notificações de desktop",
+ "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Pode ter configurado num outro cliente sem ser o Riot. Não pode ajustá-las no Riot, mas ainda assim elas aplicam-se",
"Sunday": "Domingo",
- "Monday": "Segunda",
- "Tuesday": "Terça",
- "Wednesday": "Quarta",
- "Thursday": "Quinta",
- "Friday": "Sexta",
+ "Monday": "Segunda-feira",
+ "Tuesday": "Terça-feira",
+ "Wednesday": "Quarta-feira",
+ "Thursday": "Quinta-feira",
+ "Friday": "Sexta-feira",
"Saturday": "Sábado",
"Today": "Hoje",
"Yesterday": "Ontem",
"#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.",
- "Safari and Opera work too.": "Safari e Opera funcionam também.",
- "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os casos.",
+ "customServer_text": "Pode usar as opções de servidor personalizado para entrar noutros servidores Matrix especificando para isso um URL de outro Servidor de Base. Isto permite que use o Riot com uma conta Matrix que exista noutro Servidor de Base.
Também pode configurar um servidor de Identidade personalizado mas não poderá convidar utilizadores através do endereço de e-mail, ou ser convidado pelo seu endereço de e-mail.",
+ "Safari and Opera work too.": "Safari e Opera também funcionam.",
+ "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desativadas para todos os casos.",
"Collapse panel": "Colapsar o painel",
"Expand panel": "Expandir o painel",
- "I understand the risks and wish to continue": "Entendo os riscos e desejo continuar",
+ "I understand the risks and wish to continue": "Entendo os riscos e pretendo continuar",
"Messages containing keywords": "Mensagens contendo palavras-chave",
- "Please install Chrome or Firefox for the best experience.": "Por favor instale Chrome ou Firefox para ter a melhor experiência de uso.",
+ "Please install Chrome or Firefox for the best experience.": "Por favor instale Chrome ou Firefox para ter a melhor experiência.",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "O Riot usa muitas funcionalidades avançadas do navegador, algumas das quais não estão disponíveis ou ainda são experimentais no seu navegador atual.",
- "Sorry, your browser is not able to run Riot.": "Perdão. O seu navegador não é capaz de rodar o Riot.",
- "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!": "Com o seu navegador atual, a aparência e sensação de uso da aplicação podem estar completamente incorretas, e algumas das funcionalidades poderão não funcionar. Se você quiser tentar de qualquer maneira, pode continuar, mas aí vai ter que se virar sozinho(a) com os problemas que porventura encontrar!",
+ "Sorry, your browser is not able to run Riot.": "Desculpe, o seu navegador não é capaz de executar o Riot.",
+ "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!": "Com o seu navegador atual, a aparência e sensação de uso da aplicação podem estar completamente incorretas, e algumas das funcionalidades poderão não funcionar. Se quiser tentar de qualquer maneira pode continuar, mas está por sua conta com algum problema que possa encontrar!",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s em %(osName)s",
"A new version of Riot is available.": "Uma nova versão do Riot está disponível.",
"All Rooms": "Todas as salas",
"Cancel": "Cancelar",
"Changelog": "Histórico de alterações",
- "Collecting app version information": "Coletando informação sobre a versão do app",
- "Collecting logs": "Coletando logs",
+ "Collecting app version information": "A recolher informação da versão da app",
+ "Collecting logs": "A recolher logs",
"Describe your problem here.": "Descreva o seu problema aqui.",
"Failed to send report: ": "Falha ao enviar o relatório: ",
"Hide panel": "Ocultar o painel",
- "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Para diagnosticar problemas, relatórios deste cliente serão enviados junto a esta notificação de falha. Se você prefere apenas enviar o seu texto acima, por favor des-selecione:",
- "Loading bug report module": "Carregando o módulo de relatórios de erros",
- "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Por favor, descreva a falha encontrada. O que você estava fazendo? O que você esperava que devia ocorrer? E o que aconteceu efetivamente?",
- "Please describe the bug and/or send logs.": "Por favor, descreva as falhas e/ou envie os logs de erro.",
+ "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Para diagnosticar problemas, relatórios deste cliente serão enviados juntamente com esta notificação de falha. Se preferir enviar apenas o texto acima, por favor remova a seleção:",
+ "Loading bug report module": "A carregar o módulo de relato de erros",
+ "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Por favor descreva a falha encontrada. O que fez? O que esperava que acontecesse? O que realmente aconteceu?",
+ "Please describe the bug and/or send logs.": "Por favor descreva a falha e/ou envie os logs de erro.",
"Report a bug": "Reportar uma falha",
"Riot Desktop on %(platformName)s": "Riot para computadores desktop em %(platformName)s",
- "Riot is not supported on mobile web. Install the app?": "Riot versão web não é suportado a partir de celular. Quer instalar o app para celular?",
- "Search": "Buscar",
- "Search…": "Buscar…",
+ "Riot is not supported on mobile web. Install the app?": "O Riot não é suportado na web para dispositivos móveis. Quer instalar a app?",
+ "Search": "Pesquisar",
+ "Search…": "Pesquisar…",
"Send": "Enviar",
"Send logs": "Enviar relatórios de erro",
"This Room": "Esta sala",
"Unavailable": "Indisponível",
"Unknown device": "Dispositivo desconhecido",
"Update": "Atualizar",
- "Uploading report": "Enviando o relatório",
+ "Uploading report": "A enviar o relatório",
"What's New": "Novidades",
- "What's new?": "O que há de novidades?",
- "Waiting for response from server": "Esperando por resposta do servidor",
- "You are Rioting as a guest. Register or sign in to access more rooms and features!": "Você está usando o Riot como visitante. Registre-se ou faça login para acessar mais salas e funcionalidades!",
+ "What's new?": "O que há de novo?",
+ "Waiting for response from server": "À espera de resposta do servidor",
+ "You are Rioting as a guest. Register or sign in to access more rooms and features!": "Está a usar o Riot como convidado. Registe-se ou faça login para aceder a mais salas e funcionalidades!",
"OK": "Ok",
- "You need to be using HTTPS to place a screen-sharing call.": "Você precisa estar usando HTTPS para poder iniciar uma chamada com compartilhamento de tela."
+ "You need to be using HTTPS to place a screen-sharing call.": "Necessita de estar a usar HTTPS para poder iniciar uma chamada com partilha de ecrã."
}
diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json
index e2406a5107..0619e52ada 100644
--- a/src/i18n/strings/pt_BR.json
+++ b/src/i18n/strings/pt_BR.json
@@ -16,7 +16,7 @@
"Directory": "Diretório",
"Dismiss": "Descartar",
"Download this file": "Baixar este arquivo",
- "Drop here %(toAction)s": "Arraste aqui para %(toAction)s",
+ "Drop here %(toAction)s": "Arraste aqui %(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",
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index 50df719c2e..8075a28ec6 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -6,19 +6,19 @@
"Can't update user notification settings": "Не возможно обновить пользовательские настройки оповещения",
"Create new room": "Создать комнату",
"Couldn't find a matching Matrix room": "Не возможно найти подходящую Матрикс комнату",
- "Custom Server Options": "Настройки пользовательского сервера",
+ "Custom Server Options": "Расширенные настройки сервера",
"delete the alias.": "удалить привязку.",
"Delete the room alias": "Удалить привязку комнаты",
"Direct Chat": "Персональное сообщение",
"Directory": "Каталог",
- "Dismiss": "Отмена",
+ "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:": "Введите ключевые слова, разделенные запятой",
+ "Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой:",
"Error": "Ошибка",
"Error saving email notification preferences": "Ошибка сохранения настроек оповещений по электронной почте",
"#example": "#пример",
@@ -27,20 +27,20 @@
"Failed to change settings": "Не удалось изменить настройки",
"Failed to update keywords": "Не удалось обновить ключевые слова",
"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 remove tag ": "Не удалось удалить тег ",
"Failed to set Direct Message status of room": "Не удалось задать статус комнаты Персональное Сообщение",
"Favourite": "Избранное",
"Fetching third party location failed": "Не удалось получить местоположение",
"Files": "Файлы",
- "Filter room names": "Отфильтровать по названию комнаты",
+ "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": "Пригласить в эту комнату",
+ "Invite to this room": "Пригласить",
"Keywords": "Ключевые слова",
"Leave": "Покинуть",
"Low Priority": "Низкий приоритет",
@@ -49,14 +49,14 @@
"Noisy": "Звук",
"Notification targets": "Цели уведомления",
"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 me for anything else": "Уведомить меня обо всем кроме",
"Off": "Выключить",
"On": "Включить",
- "Operation failed": "Операция не удалась",
+ "Operation failed": "Действие не удалось",
"Please Register": "Пожалуйста, зарегистрируйтесь",
- "powered by Matrix": "разработано в Matrix",
+ "powered by Matrix": "управляемый с Matrix",
"Reject": "Отклонить",
"Remove": "Удалить",
"remove": "удалить",
@@ -68,7 +68,7 @@
"Settings": "Настройки",
"Start chat": "Начать чат",
"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": "Возможно сервер недоступен или перегружен",
"This room is inaccessible to guests. You may be able to join if you register.": "Эта комната недоступна для гостей. Вы можете присоединиться, если зарегистрируетесь.",
" to room": " к комнате",
@@ -85,7 +85,7 @@
"Cancel Sending": "Отмена отправки",
"Close": "Закрыть",
"Download this file": "Скачать этот файл",
- "Drop here %(toAction)s": "Вставить сюда для %(toAction)s",
+ "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",
@@ -93,7 +93,7 @@
"Failed to set direct chat tag": "Не удалось пометить прямую беседу",
"Unhide Preview": "Показать предпросмотр",
"Uploaded on %(date)s by %(user)s": "Загружено %(date)s %(user)s",
- "View Decrypted Source": "Просмотр зашыфрованного источника",
+ "View Decrypted Source": "Просмотр зашифрованного источника",
"View Source": "Просмотр источника",
"You cannot delete this image. (%(code)s)": "Вы не можете удалить это изображение. (%(code)s)",
"You cannot delete this message. (%(code)s)": "Вы не можете удалить это сообщение. (%(code)s)",
@@ -125,5 +125,52 @@
"Messages in one-to-one chats": "Сообщения в приватных чатах",
"Messages sent by bot": "Сообщения, отправленные ботом",
"more": "больше",
- "When I'm invited to a room": "Когда я приглашен в комнату"
+ "When I'm invited to a room": "Когда я приглашен в комнату",
+ "A new version of Riot is available.": "Доступна новая версия Riot.",
+ "All Rooms": "Все комнаты",
+ "Cancel": "Отмена",
+ "Changelog": "История изменений",
+ "Collapse panel": "Закрыпть панель",
+ "Collecting app version information": "Сбор информации о версиях программы",
+ "Collecting logs": "Сбор протоколов",
+ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s с %(browserName)s на %(osName)s",
+ "Safari and Opera work too.": "Safari и Opera работают тоже.",
+ "Describe your problem here.": "Опиши здесь свою проблему.",
+ "Expand panel": "Открыть панель",
+ "Failed to send report: ": "Не удалось отослать отчет: ",
+ "Forward Message": "Переслать сообщение дальше",
+ "Hide panel": "Скрыть панель",
+ "I understand the risks and wish to continue": "Я понимаю риск и хочу продолжыть",
+ "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Что бы выявить проблему, будет отослан журнал этого клиента с сообщением о ошыбке. Если ты только верхний текст отослать хочешь, отключи следующее:",
+ "Loading bug report module": "Загрузи Модуль ошыбок",
+ "Messages containing keywords": "Сообщения, которые содержат определенный ключевые слова",
+ "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Пожалуйста опишы (на Английском) ошыбку. Что ты делал? Что ты ожыдал получить? Что произошло?",
+ "Please describe the bug and/or send logs.": "Пожалуйста опишы ошибку и/или перешли протоколы.",
+ "Please install Chrome or Firefox for the best experience.": "Пожалуйста проинсталируй Chrome или Firefox для лутшего результата.",
+ "Report a bug": "Отчет о ошыбке",
+ "Riot Desktop on %(platformName)s": "Riot Desktop на %(platformName)s",
+ "Riot is not supported on mobile web. Install the app?": "Riot не будет на мобильном Интернете работать. Программу инсталлировать?",
+ "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot использует некоторые расширенные фукции интернет-проводника - некоторые из них отсутствуют или экспериментальные в этом проводнике.",
+ "Search": "Поиск",
+ "Search…": "Поиск.…",
+ "Send": "Отослать",
+ "Send logs": "Отослать протокол",
+ "Sorry, your browser is not able to run Riot.": "Извените, ваш браузер не может Riot запустить.",
+ "This Room": "Эта комната",
+ "Unavailable": "Недоступен",
+ "Unknown device": "Неизвестное устройство",
+ "Update": "Обновление",
+ "Uploading report": "Отчет загружается",
+ "What's New": "Что нового",
+ "What's new?": "Что нового?",
+ "Waiting for response from server": "Подождите ответа от сервера",
+ "You are Rioting as a guest. Register or sign in to access more rooms and features!": "Вы пользуетесь Riot как гость. Зарегистрируйтесь или войдите в систему и плучите доступ к огромному количеству комнат и функций!",
+ "OK": "ОК",
+ "You need to be using HTTPS to place a screen-sharing call.": "Вы должны пользоваться HTTPS чтобы пользоваться видиозвонком.",
+ "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!": "Еали ваш браузер не корректно отображает информацию и все или некоторые фукции отключены, вы можете и дальше этим браузеом пользоваться но но ваши проблемы останутся с вами!",
+ "Login": "Войти",
+ "Welcome to Riot.im": "Добро пожаловать на Riot.im",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализованное, шифрованное общение и сотрудничество на основе [matrix]",
+ "Search the room directory": "Поиск по директории комнат",
+ "Chat with Riot Bot": "Пообщаться с Riot Bot"
}
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index 09c55a731c..146e237d6a 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -14,7 +14,7 @@
"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. Så här kan du använda Riot med ett existerande Matrix-konto på en annan hemserver.
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",
+ "Direct Chat": "Direkt-chatt",
"Directory": "Katalog",
"Dismiss": "Avvisa",
"Download this file": "Ladda ner filen",
@@ -30,11 +30,11 @@
"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 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 join the room": "Det gick inte att gå med i 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",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s på %(osName)s",
@@ -115,5 +115,47 @@
"The Home Server may be too old to support third party networks": "Hemservern kan vara för gammal för stöda tredje parters nätverk",
"There are advanced notifications which are not shown here": "Det finns avancerade aviseringar som inte visas här",
"The server may be unavailable or overloaded": "Servern kan vara överbelastad eller inte tillgänglig",
- "This Room": "Det här rummet"
+ "This Room": "Det här rummet",
+ "This room is inaccessible to guests. You may be able to join if you register.": "Det här rummet är inte tillgängligt till gäster. Du kan möjligtvis gå med i rummet om du registrerar dig.",
+ " to room": " till rum",
+ "Unable to fetch notification target list": "Det gick inte att hämta aviseringsmållistan",
+ "Unable to join network": "Det gick inte att ansluta till nätverket",
+ "Unable to look up room ID from server": "Det gick inte att hämta rums-ID:t från servern",
+ "Unavailable": "Inte tillgänglig",
+ "Unhide Preview": "Visa förhandsvisning",
+ "Unknown device": "Okänd enhet",
+ "unknown error code": "okänd felkod",
+ "Unnamed room": "Namnlöst rum",
+ "Update": "Uppdatera",
+ "Uploaded on %(date)s by %(user)s": "%(user)s laddade upp %(date)s",
+ "Uploading report": "Laddar upp rapport",
+ "View Decrypted Source": "Visa dekrypterad källa",
+ "View Source": "Visa källa",
+ "What's New": "Vad är nytt",
+ "What's new?": "Vad är nytt?",
+ "Waiting for response from server": "Väntar på svar från servern",
+ "When I'm invited to a room": "När jag bjuds in till ett rum",
+ "World readable": "Alla kan läsa",
+ "You cannot delete this image. (%(code)s)": "Du kan inte radera den här bilden. (%(code)s)",
+ "You cannot delete this message. (%(code)s)": "Du kan inte radera det här meddelandet. (%(code)s)",
+ "You are not receiving desktop notifications": "Du får inte skrivbordsaviseringar",
+ "You are Rioting as a guest. Register or sign in to access more rooms and features!": "Du använder Riot som en gäst. Registrera dig eller logga in för att få tillgång till flera rum och egenskaper!",
+ "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du kan ha konfigurerat dem i en annan klient än Riot. Du kan inte ändra dem i Riot men de tillämpas ändå",
+ "Sunday": "söndag",
+ "Monday": "måndag",
+ "Tuesday": "tisdag",
+ "Wednesday": "onsdag",
+ "Thursday": "torsdag",
+ "Friday": "fredag",
+ "Saturday": "lördag",
+ "Today": "idag",
+ "Yesterday": "igår",
+ "OK": "OK",
+ "You need to be using HTTPS to place a screen-sharing call.": "Du måste använda HTTPS för att dela din skärm.",
+ "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!": "Med din nuvarande webbläsare kan appens utseende vara helt fel, och vissa eller alla egenskaper kommer nödvändigtvis inte att fungera. Om du ändå vill försöka så kan du fortsätta, men gör det på egen risk!",
+ "Welcome page": "Välkomstsida",
+ "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Radera rumsadressen %(alias)s och ta bort %(name)s från katalogen?",
+ "Collecting logs": "Samlar in loggar",
+ "Collecting app version information": "Samlar in appversionsinformation",
+ "Notifications on the following keywords follow rules which can’t be displayed here:": "Aviseringar för följande nyckelord följer regler som inte kan visas här:"
}
diff --git a/src/i18n/strings/th.json b/src/i18n/strings/th.json
new file mode 100644
index 0000000000..66df9f4b42
--- /dev/null
+++ b/src/i18n/strings/th.json
@@ -0,0 +1,199 @@
+{
+ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s ผ่านทาง %(browserName)s บน %(osName)s",
+ "All messages": "ทุกข้อความ",
+ "Cancel": "ยกเลิก",
+ "Close": "ปิด",
+ "Error": "ข้อผิดพลาด",
+ "#example": "#example",
+ "Files": "ไฟล์",
+ "Forward Message": "ส่งต่อข้อความ",
+ " from room": " จากห้อง",
+ "Low Priority": "ความสำคัญต่ำ",
+ "Members": "สมาชิก",
+ "more": "เพิ่มเติม",
+ "Off": "ปิด",
+ "Report a bug": "รายงานจุดบกพร่อง",
+ "powered by Matrix": "ใช้เทคโนโลยี Matrix",
+ "Quote": "อ้างอิง",
+ "Resend": "ส่งใหม่",
+ "Safari and Opera work too.": "Safari หรือ Opera ก็ใช้ได้",
+ "A new version of Riot is available.": "มี Riot เวอร์ชั่นใหม่",
+ "All Rooms": "ทุกห้อง",
+ "Cancel Sending": "ยกเลิกการส่ง",
+ "Changelog": "บันทึกการเปลี่ยนแปลง",
+ "Create new room": "สร้างห้องใหม่",
+ "Describe your problem here.": "อธิบายปัญหาที่นี่",
+ "Download this file": "ดาวน์โหลดไฟล์นี้",
+ "Dismiss": "ไม่สนใจ",
+ "Messages sent by bot": "ข้อความจากบอท",
+ "Mute": "เงียบ",
+ "No rooms to show": "ไม่มีห้องที่จะแสดง",
+ "Notifications": "การแจ้งเตือน",
+ "On": "เปิด",
+ "Permalink": "ลิงก์ถาวร",
+ "Operation failed": "การดำเนินการล้มเหลว",
+ "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "กรุณาอธิบายจุดบกพร่อง คุณทำอะไร? ควรจะเกิดอะไรขึ้น? แล้วอะไรคือสิ่งที่เกิดขึ้นจริง?",
+ "Please describe the bug and/or send logs.": "กรุณาอธิบายจุดบกพร่อง และ/หรือ ส่งล็อก",
+ "Please install Chrome or Firefox for the best experience.": "กรุณาติดตั้ง Chrome หรือ Firefox เพื่อประสบการณ์ที่ดีที่สุด",
+ "Please Register": "กรุณาลงทะเบียน",
+ "Redact": "ลบ",
+ "Reject": "ปฏิเสธ",
+ "Remove": "ลบ",
+ "Messages containing keywords": "ข้อความที่มีคีย์เวิร์ด",
+ "Messages containing my user name": "ข้อความที่มีชื่อผู้ใช้ของฉัน",
+ "Search": "ค้นหา",
+ "Search…": "ค้นหา…",
+ "Room not found": "ไม่พบห้อง",
+ "Search for a room": "ค้นหาห้อง",
+ "Send": "ส่ง",
+ "Send logs": "ส่งล็อก",
+ "Settings": "การตั้งค่า",
+ "Sorry, your browser is not able to run Riot.": "ขออภัย เบราว์เซอร์ของคุณไม่สามารถ run Riot ได้",
+ "This Room": "ห้องนี้",
+ " to room": " ไปยังห้อง",
+ "Unavailable": "ไม่มี",
+ "Unknown device": "อุปกรณ์ที่ไม่รู้จัก",
+ "unknown error code": "รหัสข้อผิดพลาดที่ไม่รู้จัก",
+ "Update": "อัปเดต",
+ "Uploaded on %(date)s by %(user)s": "อัปโหลดเมื่อ %(date)s โดย %(user)s",
+ "Yesterday": "เมื่อวานนี้",
+ "Today": "วันนี้",
+ "Saturday": "วันเสาร์",
+ "Friday": "วันศุกร์",
+ "Thursday": "วันพฤหัสบดี",
+ "Wednesday": "วันพุธ",
+ "Tuesday": "วันอังคาร",
+ "Monday": "วันจันทร์",
+ "Sunday": "วันอาทิตย์",
+ "You cannot delete this image. (%(code)s)": "คุณไม่สามารถลบรูปนี้ได้ (%(code)s)",
+ "You cannot delete this message. (%(code)s)": "คุณไม่สามารถลบข้อความนี้ได้ (%(code)s)",
+ "What's New": "มีอะไรใหม่",
+ "What's new?": "มีอะไรใหม่?",
+ "View Source": "ดูซอร์ส",
+ "Uploading report": "กำลังอัปโหลดรายงาน",
+ "Advanced notification settings": "ตั้งค่าการแจ้งเตือนขั้นสูง",
+ "Can't update user notification settings": "ไม่สามารถอัปเดตการตั้งค่าการแจ้งเตือนของผู้ใช้",
+ "Collecting logs": "กำลังรวบรวมล็อก",
+ "Collapse panel": "ซ่อนหน้าต่าง",
+ "Collecting app version information": "กำลังรวบรวมข้อมูลเวอร์ชันแอป",
+ "OK": "ตกลง",
+ "Welcome page": "หน้าต้อนรับ",
+ "You need to be using HTTPS to place a screen-sharing call.": "คุณต้องใช้ HTTPS เพื่อเริ่มติดต่อแบบแบ่งปันหน้าจอ",
+ "You are not receiving desktop notifications": "การแจ้งเตือนบนเดสก์ทอปถูกปิดอยู่",
+ "You are Rioting as a guest. Register or sign in to access more rooms and features!": "คุณกำลังใช้ Riot ในฐานะแขก ลงทะเบียนหรือเข้าสู่ระบบเพื่อเข้าถึงห้องและคุณสมบัติอื่น ๆ เพิ่มเติม!",
+ "Waiting for response from server": "กำลังรอการตอบสนองจากเซิร์ฟเวอร์",
+ "View Decrypted Source": "ดูซอร์สที่ถอดรหัสแล้ว",
+ "Unnamed room": "ห้องที่ไม่มีชื่อ",
+ "Source URL": "URL ต้นฉบับ",
+ "Start chat": "เริ่มแชท",
+ "Riot Desktop on %(platformName)s": "Riot เดสก์ทอปบน %(platformName)s",
+ "Riot is not supported on mobile web. Install the app?": "Riot ไม่รองรับเว็บบนอุปกรณ์พกพา ติดตั้งแอป?",
+ "Riot does not know how to join a room on this network": "Riot ไม่รู้วิธีเข้าร่วมห้องในเครือข่ายนี้",
+ "Direct Chat": "แชทโดยตรง",
+ "All messages (loud)": "ทุกข้อความ (เสียงดัง)",
+ "Custom Server Options": "กำหนดเซิร์ฟเวอร์เอง",
+ "Directory": "ไดเรกทอรี",
+ "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:": "กรอกคีย์เวิร์ดทั้งหมด คั่นด้วยเครื่องหมายจุลภาค:",
+ "Expand panel": "ขยายหน้าต่าง",
+ "Failed to update keywords": "การอัปเดตคีย์เวิร์ดล้มเหลว",
+ "Failed to join the room": "การเข้าร่วมห้องล้มเหลว",
+ "Failed to remove tag %(tagName)s from room": "การลบแท็ก %(tagName)s จากห้องล้มเหลว",
+ "Failed to send report: ": "การส่งรายงานล้มเหลว: ",
+ "Filter room names": "กรองชื่อห้อง",
+ "Guests can join": "แขกเข้าร่วมได้",
+ "Hide panel": "ซ่อนหน้าต่าง",
+ "I understand the risks and wish to continue": "ฉันเข้าใจความเสี่ยงและต้องการดำเนินการต่อ",
+ "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "ล็อกจากไคลเอนต์จะถูกแนบพร้อมกับรายงานนี้เพื่อวินิจฉัยปัญหา หากคุณต้องการส่งเฉพาะข้อความด้านบน กรุณาเอาเครื่องหมายออก:",
+ "Invite to this room": "เชิญเข้าห้องนี้",
+ "Keywords": "คีย์เวิร์ด",
+ "Leave": "ออกจากห้อง",
+ "Loading bug report module": "กำลังโหลดโมดูลรายงานจุดบกพร่อง",
+ "Mentions only": "เมื่อถูกกล่าวถึงเท่านั้น",
+ "Messages containing my display name": "ข้อความที่มีชื่อของฉัน",
+ "Messages in group chats": "ข้อความในแชทกลุ่ม",
+ "Messages in one-to-one chats": "ข้อความในแชทตัวต่อตัว",
+ "Noisy": "เสียงดัง",
+ "Notification targets": "เป้าหมายการแจ้งเตือน",
+ "Notify for all other messages/rooms": "แจ้งเตือนจากห้อง/ข้อความอื่น ๆ ทั้งหมด",
+ "Notify me for anything else": "แจ้งเตือนสำหรับอย่างอื่นทั้งหมด",
+ "Remove %(name)s from the directory?": "ถอด %(name)s ออกจากไดเรกทอรี?",
+ "remove %(name)s from the directory.": "ถอด %(name)s ออกจากไดเรกทอรี",
+ "Remove from Directory": "ถอดออกจากไดเรกทอรี",
+ "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot ใช้คุณสมบัติขั้นสูงในเบราว์เซอร์หลายประการ คุณสมบัติบางอย่างอาจยังไม่พร้อมใช้งานหรืออยู่ในขั้นทดลองในเบราว์เซอร์ปัจจุบันของคุณ",
+ "Room directory": "ไดเรกทอรีห้อง",
+ "There are advanced notifications which are not shown here": "มีการแจ้งเตือนขั้นสูงที่ไม่ได้แสดงที่นี่",
+ "This room is inaccessible to guests. You may be able to join if you register.": "แขกไม่มีสิทธิ์เข้าถึงห้องนี้ หากคุณลงทะเบียนคุณอาจเข้าร่วมได้",
+ "Unable to join network": "ไม่สามารถเข้าร่วมเครือข่ายได้",
+ "Unable to look up room ID from server": "ไม่สามารถหา ID ห้องจากเซิร์ฟเวอร์ได้",
+ "Unhide Preview": "แสดงตัวอย่าง",
+ "World readable": "ทุกคนอ่านได้",
+ "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "คุณอาจมีการตั้งค่าจากไคลเอนต์อื่นนอกจาก Riot การตั้งต่าเหล่านั้นยังถูกใช้งานอยู่แต่คุณจะปรับแต่งจากใน Riot ไม่ได้",
+ "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!": "การแสดงผลของโปรแกรมอาจผิดพลาด ฟังก์ชันบางอย่างหรือทั้งหมดอาจไม่ทำงานในเบราว์เซอร์ปัจจุบันของคุณ หากคุณต้องการลองดำเนินการต่อ คุณต้องรับมือกับปัญหาที่อาจจะเกิดขึ้นด้วยตัวคุณเอง!",
+ "Add an email address above to configure email notifications": "เพิ่มที่อยู่อีเมลข้างบนเพื่อตั้งค่าการแจ้งเตือนทางอีเมล",
+ "All notifications are currently disabled for all targets.": "การแจ้งเตือนทั้งหมดถูกปิดใช้งานสำหรับทุกอุปกรณ์",
+ "An error occurred whilst saving your email notification preferences.": "เกิดข้อผิดพลาดระหว่างบันทึกการตั้งค่าการแจ้งเตือนทางอีเมล",
+ "Couldn't find a matching Matrix room": "ไม่พบห้อง Matrix ที่ตรงกับคำค้นหา",
+ "customServer_text": "คุณสามารถกำหนดเซิร์ฟเวอร์บ้านเองได้โดยใส่ URL ของเซิร์ฟเวอร์นั้น เพื่อเข้าสู่ระบบของเซิร์ฟเวอร์ Matrix อื่น ทั้งนี่เพื่อให้คุณสามารถใช้ Riot กับบัญชี Matrix ที่มีอยู่แล้วบนเซิร์ฟเวอร์บ้านอื่น ๆ ได้
คุณอาจเลือกเซิร์ฟเวอร์ระบุตัวตนเองด้วยก็ได้ แต่คุณจะไม่สามารถเชิญผู้ใช้อื่นด้วยที่อยู่อีเมล หรือรับคำเชิญจากผู้ใช้อื่นทางที่อยู่อีเมลได้",
+ "delete the alias.": "ลบนามแฝง",
+ "Drop here %(toAction)s": "ปล่อยที่นี่ %(toAction)s",
+ "Error saving email notification preferences": "การบันทึกการตั้งค่าการแจ้งเตือนทางอีเมลผิดพลาด",
+ "Failed to add tag %(tagName)s to room": "การเพิ่มแท็ก %(tagName)s ของห้องนี้ล้มเหลว",
+ "Failed to change settings": "การแก้ไขการตั้งค่าล้มเหลว",
+ "Failed to get protocol list from Home Server": "การขอรายชื่อโปรโตคอลจากเซิร์ฟเวอร์บ้านล้มเหลว",
+ "Failed to get public room list": "การขอรายชื่อห้องสาธารณะล้มเหลว",
+ "Failed to set direct chat tag": "การติดแท็กแชทตรงล้มเหลว",
+ "Failed to set Direct Message status of room": "การตั้งสถานะข้อความตรงของห้องล้มเหลว",
+ "Favourite": "รายการโปรด",
+ "Failed to": "ล้มเหลวในการ",
+ "Fetching third party location failed": "การเรียกข้อมูลตำแหน่งจากบุคคลที่สามล้มเหลว",
+ "Guest users can't invite users. Please register to invite.": "แขกไม่สามารถเชิญผู้ใช้ได้ กรุณาลงทะเบียนเพื่อเชิญผู้อื่น",
+ "The Home Server may be too old to support third party networks": "เซิร์ฟเวอร์บ้านอาจเก่าเกินกว่าจะรองรับเครือข่ายของบุคคลที่สาม",
+ "The server may be unavailable or overloaded": "เซิร์ฟเวอร์อาจไม่พร้อมใช้งานหรือทำงานหนักเกินไป",
+ "Unable to fetch notification target list": "ไม่สามารถรับรายชื่ออุปกรณ์แจ้งเตือน",
+ "When I'm invited to a room": "เมื่อฉันได้รับคำเชิญเข้าห้อง",
+ "Delete the room alias %(alias)s and remove %(name)s from the directory?": "ลบนามแฝง %(alias)s ของห้องและถอด %(name)s ออกจากไดเรกทอรี?",
+ "Call invitation": "คำเชิญเข้าร่วมการโทร",
+ "Failed to forget room %(errCode)s": "การลืมห้องล้มเหลว %(errCode)s",
+ "Forget": "ลืม",
+ "Notifications on the following keywords follow rules which can’t be displayed here:": "การแจ้งเตือนจากคีย์เวิร์ดเหล่านี้ เป็นไปตามกฏที่ไม่สามารถแสดงที่นี่ได้:",
+ "Login": "เข้าสู่ระบบ",
+ "Welcome to Riot.im": "ยินดีต้อนรับสู่ Riot.im",
+ "Search the room directory": "ค้นหาในไดเรกทอรีห้อง",
+ "Chat with Riot Bot": "แชทกับบอท Riot",
+ "Get started with some tips from Riot Bot!": "มาเริ่มกันด้วยเคล็ดลับเล็กน้อยจากบอท Riot!",
+ "General discussion about Matrix": "พูดคุยเรื่องทั่วไปเกี่ยวกับ Matrix",
+ "Discussion of all things Matrix!": "พูดคุยทุกเรื่อง เรื่อง Matrix!",
+ "Riot/Web & Desktop chat": "แชทเกี่ยวกับ Riot บนเว็บและเดสก์ทอป",
+ "Riot/iOS & matrix-ios-sdk chat": "แชทเกี่ยวกับ Riot บน iOS และ matrix-ios-sdk",
+ "Riot/Android & matrix-android-sdk chat": "แชทเกี่ยวกับ Riot บน Android และ matrix-android-sdk",
+ "Matrix technical discussions": "พูดคุยเรื่อง Matrix ทางเทคนิค",
+ "Running Matrix services": "การติดตั้งบริการ Matrix",
+ "Community-run support for Synapse": "ฝ่ายสนับสนุน Synapse โดยชุมชนผู้ใช้",
+ "Admin support for Dendrite": "ฝ่ายสนับสนุน Dendrite จากผู้ดูแล",
+ "Announcements about Synapse releases": "ประกาศเกี่ยวกับ Synapse รุ่นใหม่",
+ "Support for those using and running matrix-appservice-irc": "ฝ่ายสนับสนุนสำหรับผู้ใช้ matrix-appservice-irc",
+ "Building services on Matrix": "การพัฒนาบริการบน Matrix",
+ "Support for those using the Matrix spec": "ฝ่ายสนับสนุนสำหรับผู้ใช้สเปค Matrix",
+ "Implementing VR services with Matrix": "การอิมพลีเมนต์บริการ VR ด้วย Matrix",
+ "Implementing VoIP services with Matrix": "การอิมพลีเมนต์บริการ VoIP ด้วย Matrix",
+ "Support for those using, running and writing other bridges": "ฝ่ายสนับสนุนสำหรับผู้ใช้หรือพัฒนาตัวเชื่อมอื่น ๆ",
+ "Contributing code to Matrix and Riot": "สมทบโค๊ดกับ Matrix และ Riot",
+ "Dev chat for the Riot/Web dev team": "แชทสำหรับทีมพัฒนา Riot บนเว็บ",
+ "Dev chat for the Dendrite dev team": "แชทสำหรับทีมพัฒนา Dendrite",
+ "Co-ordination for Riot/Web translators": "แชทสำหรับประสานงานการแปล Riot บนเว็บ",
+ "Failed to change password. Is your password correct?": "การเปลี่ยนรหัสผ่านล้มเหลว รหัสผ่านของคุณถูกต้องหรือไม่?",
+ "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "มีห้องอยู่มากมายใน Matrix ทั้งห้องที่เชื่อมไปยังเคีือข่ายอื่น (Slack, IRC, Gitter ฯลฯ) และห้องที่อยู่ด้วยตัวเอง ลองดูไดเรกทอรีสิ!",
+ "You have successfully set a password!": "การตั้งรหัสผ่านเสร็จสมบูรณ์!",
+ "You can now return to your account after signing out, and sign in on other devices.": "คุณสามารถกลับไปยังบัญชีของคุณหลังจากออกจากระบบ แล้วกลับเขาสู่ระบบบนอุปกรณ์อื่น ๆ",
+ "Continue": "ดำเนินการต่อ",
+ "Please set a password!": "กรุณาตั้งรหัสผ่าน!",
+ "This will allow you to return to your account after signing out, and sign in on other devices.": "เพื่อคุณจะได้กลับมายังบัญชีเดิมของคุณได้ หลังจากออกจากระบบ แล้วกลับเข้าสู่ระบบในอุปกรณ์อื่น ๆ",
+ "Design and implementation of E2E in Matrix": "การออกแบบและใช้งาน E2E ใน Matrix",
+ "Discussion of the Identity Service API": "พูดคุยเกี่ยวกับ Identity Service API",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "แชทและประสานงานบนระบบที่ทั้งเข้ารหัสได้และกระจายศูนย์กลาง โดยใช้เทคโนโลยีจาก [matrix]"
+}
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index b2feb6e378..d6f0930a77 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -145,5 +145,20 @@
"Sorry, your browser is not able to run Riot.": "可惜你的瀏覽器 無法 執行 Riot.",
"The Home Server may be too old to support third party networks": "主機伺服器可能太老舊無法支援第三方網路",
"The server may be unavailable or overloaded": "伺服器可能過載或無法連取",
- "Unable to fetch notification target list": "無法抓取通知的目標清單"
+ "Unable to fetch notification target list": "無法抓取通知的目標清單",
+ "customServer_text": "你可以使用自定伺服器選項來登入其它的 Matrix 伺服器,只要在在主機伺服器網址上指定其網址資料。 這可讓你透過已有的 Matrix 帳號在不同的主機伺服器上使用 Riot。
你也可以設定自定的識別伺服器但你將無法透過電子郵件來邀請用戶或是以自己的電子郵件來接受別人的邀請。",
+ "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "為了診斷問題,來自客戶的活動記錄會隨著這個程式臭蟲報告一起送出。如果你只想送出以上文字,請取消勾選:",
+ "Notification targets": "通知標的",
+ "Notifications on the following keywords follow rules which can’t be displayed here:": "以下關鍵字依照規則其通知將不會顯示在此:",
+ "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "請描述這個程式臭蟲,你作了什麼動作?你預期會發生什麼狀況?以及實際發生的狀況為何?",
+ "Please describe the bug and/or send logs.": "請描述這個程式臭蟲以及/或送出活動記錄。",
+ "Riot is not supported on mobile web. Install the app?": "Riot 不支援行動網頁,要下載應用程式嗎?",
+ "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Roit 使用了許多先進的瀏覽器功能,有些在你目前所用的瀏覽器上無法使用或僅為試驗效能。",
+ "There are advanced notifications which are not shown here": "有些進階的通知並未在此顯現",
+ "World readable": "全世界可讀",
+ "You cannot delete this image. (%(code)s)": "你不能刪除這個圖片(%(code)s)",
+ "You are not receiving desktop notifications": "你將不會收到桌面通知",
+ "You are Rioting as a guest. Register or sign in to access more rooms and features!": "你目前以訪客身份使用 Riot 註冊 或 登錄 來使用更多聊天室和功能!",
+ "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "你也許不曾在其它Riot之外的客戶端設定它們,在 Riot底下你無法調它們但其仍然可用",
+ "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!": "你目前的瀏覽器,其應用程式的外觀和感覺可能完全不正確,有些或全部功能可以無法使用。如果你仍想試,可以繼續但得自負後果。"
}
diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss
index 5f4b35ace5..4637530b56 100644
--- a/src/skins/vector/css/_components.scss
+++ b/src/skins/vector/css/_components.scss
@@ -3,6 +3,7 @@
@import "./matrix-react-sdk/structures/_ContextualMenu.scss";
@import "./matrix-react-sdk/structures/_CreateRoom.scss";
@import "./matrix-react-sdk/structures/_FilePanel.scss";
+@import "./matrix-react-sdk/structures/_LoginBox.scss";
@import "./matrix-react-sdk/structures/_MatrixChat.scss";
@import "./matrix-react-sdk/structures/_NotificationPanel.scss";
@import "./matrix-react-sdk/structures/_RoomStatusBar.scss";
@@ -17,7 +18,7 @@
@import "./matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss";
@import "./matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss";
@import "./matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss";
-@import "./matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss";
+@import "./matrix-react-sdk/views/dialogs/_SetMxIdDialog.scss";
@import "./matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss";
@import "./matrix-react-sdk/views/elements/_AccessibleButton.scss";
@import "./matrix-react-sdk/views/elements/_AddressSelector.scss";
@@ -27,6 +28,7 @@
@import "./matrix-react-sdk/views/elements/_MemberEventListSummary.scss";
@import "./matrix-react-sdk/views/elements/_ProgressBar.scss";
@import "./matrix-react-sdk/views/elements/_RichText.scss";
+@import "./matrix-react-sdk/views/elements/_RoleButton.scss";
@import "./matrix-react-sdk/views/login/_InteractiveAuthEntryComponents.scss";
@import "./matrix-react-sdk/views/login/_ServerConfig.scss";
@import "./matrix-react-sdk/views/messages/_MEmoteBody.scss";
@@ -69,10 +71,10 @@
@import "./vector-web/views/context_menus/_MessageContextMenu.scss";
@import "./vector-web/views/context_menus/_RoomTileContextMenu.scss";
@import "./vector-web/views/dialogs/_ChangelogDialog.scss";
+@import "./vector-web/views/dialogs/_SetPasswordDialog.scss";
@import "./vector-web/views/directory/_NetworkDropdown.scss";
@import "./vector-web/views/elements/_ImageView.scss";
@import "./vector-web/views/elements/_Spinner.scss";
-@import "./vector-web/views/globals/_GuestWarningBar.scss";
@import "./vector-web/views/globals/_MatrixToolbar.scss";
@import "./vector-web/views/messages/_MessageTimestamp.scss";
@import "./vector-web/views/messages/_SenderProfile.scss";
diff --git a/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss b/src/skins/vector/css/matrix-react-sdk/structures/_LoginBox.scss
similarity index 63%
rename from src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss
rename to src/skins/vector/css/matrix-react-sdk/structures/_LoginBox.scss
index f5bdbaf9ca..3c8091fe9e 100644
--- a/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss
+++ b/src/skins/vector/css/matrix-react-sdk/structures/_LoginBox.scss
@@ -1,5 +1,5 @@
/*
-Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2017 OpenMarket Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,23 +14,23 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-.mx_GuestWarningBar {
+.mx_LoginBox_loginButton_wrapper {
+ text-align: center;
+ width: 100%;
+}
+
+.mx_LoginBox_loginButton {
+ margin-top: -8px;
+ height: 40px;
+ border: 0px;
+ border-radius: 40px;
+ padding-left: 1em;
+ padding-right: 1em;
+
background-color: $accent-color;
- color: $accent-fg-color;
+ color: $primary-bg-color;
- display: flex;
- align-items: center;
-}
-
-.mx_GuestWarningBar_warning {
- margin-left: 16px;
- margin-right: 8px;
- margin-top: -2px;
-}
-
-.mx_GuestWarningBar a {
- color: $accent-fg-color ! important;
- text-decoration: underline ! important;
cursor: pointer;
-}
+ font-size: 15px;
+}
diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss b/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss
index 10528b36a1..156b1709fe 100644
--- a/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss
+++ b/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss
@@ -41,12 +41,6 @@ limitations under the License.
height: 40px;
}
-.mx_GuestWarningBar {
- order: 1;
-
- height: 40px;
-}
-
.mx_MatrixChat_toolbarShowing {
height: auto;
}
diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss
index 94820549e7..805c817a28 100644
--- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss
+++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss
@@ -178,6 +178,7 @@ limitations under the License.
display: inline-block;
min-width: 170px;
align-self: flex-end;
+ flex: 1 1 auto;
}
.mx_Login_field_group {
diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatCreateOrReuseChatDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatCreateOrReuseChatDialog.scss
index 926e7411ed..0f358a588e 100644
--- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatCreateOrReuseChatDialog.scss
+++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatCreateOrReuseChatDialog.scss
@@ -20,8 +20,22 @@ limitations under the License.
.mx_ChatCreateOrReuseDialog .mx_Dialog_content {
margin-bottom: 24px;
+
+ /*
+ To stop spinner that mx_ChatCreateOrReuseDialog_profile replaces from causing a
+ height change
+ */
+ min-height: 100px;
}
.mx_ChatCreateOrReuseDialog .mx_RoomTile_badge {
display: none;
}
+
+.mx_ChatCreateOrReuseDialog_profile {
+ display: flex;
+}
+
+.mx_ChatCreateOrReuseDialog_profile_name {
+ padding: 14px;
+}
diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss
index 4a214b51ce..38bb4f01c3 100644
--- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss
+++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss
@@ -34,6 +34,10 @@ limitations under the License.
word-wrap: nowrap;
}
+.mx_ChatInviteDialog .mx_Dialog_content {
+ min-height: 50px
+}
+
.mx_ChatInviteDialog_inputContainer {
border-radius: 3px;
border: solid 1px $input-border-color;
@@ -64,8 +68,3 @@ limitations under the License.
pointer-events: none;
}
-.mx_ChatInviteDialog_addressSelectHeader {
- font-weight: bold;
- line-height: 150%;
- text-indent: 4px;
-}
diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetMxIdDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetMxIdDialog.scss
new file mode 100644
index 0000000000..f7d8a3d001
--- /dev/null
+++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetMxIdDialog.scss
@@ -0,0 +1,50 @@
+/*
+Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2017 Vector Creations Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+.mx_SetMxIdDialog .mx_Dialog_title {
+ padding-right: 40px;
+}
+
+.mx_SetMxIdDialog_input_group {
+ display: flex;
+}
+
+.mx_SetMxIdDialog_input {
+ border-radius: 3px;
+ border: 1px solid $input-border-color;
+ padding: 9px;
+ color: $primary-fg-color;
+ background-color: $primary-bg-color;
+ font-size: 15px;
+ width: 100%;
+ max-width: 280px;
+}
+
+.mx_SetMxIdDialog_input.error,
+.mx_SetMxIdDialog_input.error:focus {
+ border: 1px solid $warning-color;
+}
+
+.mx_SetMxIdDialog_input_group .mx_Spinner {
+ height: 37px;
+ padding-left: 10px;
+ justify-content: flex-start;
+}
+
+.mx_SetMxIdDialog .success {
+ color: $accent-color;
+}
diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss
new file mode 100644
index 0000000000..094e0b9b1b
--- /dev/null
+++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss
@@ -0,0 +1,33 @@
+/*
+Copyright 2107 Vector Creations Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+.mx_RoleButton {
+ margin-left: 4px;
+ margin-right: 4px;
+ cursor: pointer;
+ display: inline-block;
+}
+
+.mx_RoleButton object {
+ pointer-events: none;
+}
+
+.mx_RoleButton_tooltip {
+ display: inline-block;
+ position: relative;
+ top: -25px;
+ left: 6px;
+}
diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss
index 5542d18d0c..a980d1f9ce 100644
--- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss
+++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss
@@ -63,7 +63,9 @@ limitations under the License.
white-space: nowrap;
color: $event-timestamp-color;
font-size: 10px;
- left: 8px;
+ left: 0px;
+ width: 46px; /* 8 + 30 (avatar) + 8 */
+ text-align: center;
position: absolute;
}
@@ -189,6 +191,7 @@ limitations under the License.
.mx_EventTile_selected .mx_MessageTimestamp {
left: 3px;
+ width: auto;
}
.mx_EventTile_editButton {
@@ -271,10 +274,6 @@ limitations under the License.
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;
@@ -296,6 +295,7 @@ limitations under the License.
.mx_EventTile:hover.mx_EventTile_verified .mx_MessageTimestamp,
.mx_EventTile:hover.mx_EventTile_unverified .mx_MessageTimestamp {
left: 3px;
+ width: auto;
}
/*
@@ -332,6 +332,24 @@ limitations under the License.
.mx_EventTile_content .markdown-body code {
background-color: #f8f8f8;
}
+.mx_EventTile_copyButton {
+ position: absolute;
+ display: inline-block;
+ visibility: hidden;
+ cursor: pointer;
+ top: 6px;
+ right: 6px;
+ width: 19px;
+ height: 19px;
+ background-image: url($copy-button-url);
+}
+.mx_EventTile_body pre {
+ position: relative;
+}
+.mx_EventTile_body pre:hover .mx_EventTile_copyButton
+{
+ visibility: visible;
+}
.mx_EventTile_content .markdown-body h1,
.mx_EventTile_content .markdown-body h2,
@@ -410,6 +428,10 @@ limitations under the License.
top: 7px;
}
+ .mx_EventTile_editButton {
+ top: 3px;
+ }
+
.mx_EventTile_readAvatars {
top: 27px;
}
diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss
index 110dcd5b6b..35787ca0c4 100644
--- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss
+++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2107 Vector Creations Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -37,3 +38,25 @@ limitations under the License.
.mx_RoomList_scrollbar .gm-scrollbar.-vertical {
z-index: 6;
}
+
+.mx_RoomList_emptySubListTip {
+ font-size: 13px;
+ margin-left: 18px;
+ margin-right: 18px;
+ margin-top: 8px;
+ margin-bottom: 7px;
+ padding: 5px;
+ border: 1px dashed $accent-color;
+ color: $primary-fg-color;
+ background-color: $droptarget-bg-color;
+ border-radius: 4px;
+}
+
+.mx_RoomList_emptySubListTip .mx_RoleButton {
+ vertical-align: -3px;
+}
+
+.mx_RoomList_headerButtons {
+ position: absolute;
+ right: 60px;
+}
diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss
index b601191348..fc24af93e2 100644
--- a/src/skins/vector/css/themes/_base.scss
+++ b/src/skins/vector/css/themes/_base.scss
@@ -102,6 +102,7 @@ $event-redacted-img: url('../../img/redacted.jpg');
$event-timestamp-color: #acacac;
$edit-button-url: "../../img/icon_context_message.svg";
+$copy-button-url: "../../img/icon_copy_message.svg";
// e2e
$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color
@@ -114,4 +115,4 @@ $lightbox-fg-color: #ffffff;
$lightbox-border-color: #ffffff;
// unused?
-$progressbar-color: #000;
\ No newline at end of file
+$progressbar-color: #000;
diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss
index 72c21b7572..fe2e7591cf 100644
--- a/src/skins/vector/css/themes/_dark.scss
+++ b/src/skins/vector/css/themes/_dark.scss
@@ -102,6 +102,7 @@ $event-redacted-img: url('../../img/redacted-dark.jpg');
$event-timestamp-color: #acacac;
$edit-button-url: "../../img/icon_context_message_dark.svg";
+$copy-button-url: "../../img/icon_copy_message_dark.svg";
// e2e
$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color
diff --git a/src/skins/vector/css/vector-web/structures/_HomePage.scss b/src/skins/vector/css/vector-web/structures/_HomePage.scss
index e2af399d4a..cdac1bcc8a 100644
--- a/src/skins/vector/css/vector-web/structures/_HomePage.scss
+++ b/src/skins/vector/css/vector-web/structures/_HomePage.scss
@@ -19,16 +19,17 @@ limitations under the License.
max-width: 960px;
width: 100%;
height: 100%;
- overflow-y: hidden;
margin-left: auto;
margin-right: auto;
}
+
.mx_HomePage iframe {
+ display: block;
width: 100%;
- height: 90%;
+ height: 100%;
border: 0px;
}
.mx_HomePage_body {
- margin-left: 63px;
+// margin-left: 63px;
}
diff --git a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss
index 277d10d120..418358dd65 100644
--- a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss
+++ b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss
@@ -64,47 +64,33 @@ limitations under the License.
pointer-events: none;
}
-.mx_LeftPanel .mx_BottomLeftMenu_homePage,
-.mx_LeftPanel .mx_BottomLeftMenu_directory,
-.mx_LeftPanel .mx_BottomLeftMenu_createRoom,
-.mx_LeftPanel .mx_BottomLeftMenu_people,
-.mx_LeftPanel .mx_BottomLeftMenu_settings {
- display: inline-block;
- cursor: pointer;
-}
-
-.collapsed .mx_BottomLeftMenu_homePage,
-.collapsed .mx_BottomLeftMenu_directory,
-.collapsed .mx_BottomLeftMenu_createRoom,
-.collapsed .mx_BottomLeftMenu_people,
-.collapsed .mx_BottomLeftMenu_settings {
+.collapsed .mx_RoleButton {
margin-right: 0px ! important;
padding-top: 3px ! important;
padding-bottom: 3px ! important;
}
-.mx_LeftPanel .mx_BottomLeftMenu_homePage,
-.mx_LeftPanel .mx_BottomLeftMenu_directory,
-.mx_LeftPanel .mx_BottomLeftMenu_createRoom,
-.mx_LeftPanel .mx_BottomLeftMenu_people {
+.mx_BottomLeftMenu_options > div {
+ display: inline-block;
+}
+
+.mx_BottomLeftMenu_options .mx_RoleButton {
+ margin-left: 0px;
margin-right: 10px;
}
-.mx_LeftPanel .mx_BottomLeftMenu_settings {
+.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings {
float: right;
}
+.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings .mx_RoleButton {
+ margin-right: 0px;
+}
+
.mx_LeftPanel.collapsed .mx_BottomLeftMenu_settings {
float: none;
}
-.mx_LeftPanel .mx_BottomLeftMenu_tooltip {
- display: inline-block;
- position: relative;
- top: -25px;
- left: 6px;
-}
-
.mx_MatrixChat_useCompactLayout {
.mx_LeftPanel .mx_BottomLeftMenu {
flex: 0 0 50px;
diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss b/src/skins/vector/css/vector-web/views/dialogs/_SetPasswordDialog.scss
similarity index 70%
rename from src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss
rename to src/skins/vector/css/vector-web/views/dialogs/_SetPasswordDialog.scss
index 2f0750ad6b..28a8b7c9d7 100644
--- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss
+++ b/src/skins/vector/css/vector-web/views/dialogs/_SetPasswordDialog.scss
@@ -1,5 +1,5 @@
/*
-Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2017 Vector Creations Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,11 +14,22 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-.mx_SetDisplayNameDialog_input {
+.mx_SetPasswordDialog_change_password input {
border-radius: 3px;
border: 1px solid $input-border-color;
padding: 9px;
color: $primary-fg-color;
background-color: $primary-bg-color;
font-size: 15px;
-}
\ No newline at end of file
+ width: 100%;
+ max-width: 280px;
+ margin-bottom: 10px;
+}
+
+.mx_SetPasswordDialog_change_password_button {
+ margin-top: 68px;
+}
+
+.mx_SetPasswordDialog .mx_Dialog_content {
+ margin-bottom: 0px;
+}
diff --git a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss
index 5a0b23aeb1..1a7b1c1646 100644
--- a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss
+++ b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss
@@ -39,6 +39,10 @@ limitations under the License.
cursor: pointer;
}
+.mx_MatrixToolbar_clickable {
+ cursor: pointer;
+}
+
.mx_MatrixToolbar_close {
cursor: pointer;
}
diff --git a/src/skins/vector/img/icon_copy_message.svg b/src/skins/vector/img/icon_copy_message.svg
new file mode 100644
index 0000000000..8d8887bb22
--- /dev/null
+++ b/src/skins/vector/img/icon_copy_message.svg
@@ -0,0 +1,86 @@
+
+
diff --git a/src/skins/vector/img/icon_copy_message_dark.svg b/src/skins/vector/img/icon_copy_message_dark.svg
new file mode 100644
index 0000000000..b81e617d8c
--- /dev/null
+++ b/src/skins/vector/img/icon_copy_message_dark.svg
@@ -0,0 +1,77 @@
+
+
diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js
index 8397a7f703..b9e941e63c 100644
--- a/src/vector/platform/WebPlatform.js
+++ b/src/vector/platform/WebPlatform.js
@@ -160,8 +160,8 @@ export default class WebPlatform extends VectorBasePlatform {
const appName = u.format();
const ua = new UAParser();
- const browserName = ua.getBrowser().name;
- const osName = ua.getOS().name;
+ const browserName = ua.getBrowser().name || "unknown browser";
+ const osName = ua.getOS().name || "unknown os";
return _t('%(appName)s via %(browserName)s on %(osName)s', {appName: appName, browserName: browserName, osName: osName});
}
diff --git a/test/app-tests/joining.js b/test/app-tests/joining.js
index 7aaaaec855..24a4ceed3c 100644
--- a/test/app-tests/joining.js
+++ b/test/app-tests/joining.js
@@ -88,13 +88,13 @@ describe('joining a room', function () {
var mc = (
{throw new Error("unimplemented");}}
+ initialScreenAfterLogin={{
+ screen: 'directory',
+ }}
/>
);
matrixChat = ReactDOM.render(mc, parentDiv);
- // switch to the Directory
- matrixChat._setPage(PageTypes.RoomDirectory);
-
var roomView;
// wait for /sync to happen. This may take some time, as the client
@@ -138,7 +138,11 @@ describe('joining a room', function () {
httpBackend.when('GET', '/directory/room/'+encodeURIComponent(ROOM_ALIAS)).respond(200, { room_id: ROOM_ID });
httpBackend.when('GET', '/rooms/'+encodeURIComponent(ROOM_ID)+"/initialSync")
.respond(401, {errcode: 'M_GUEST_ACCESS_FORBIDDEN'});
- return httpBackend.flush();
+
+ return q.all([
+ httpBackend.flush('/directory/room/'+encodeURIComponent(ROOM_ALIAS)),
+ httpBackend.flush('/rooms/'+encodeURIComponent(ROOM_ID)+"/initialSync"),
+ ]);
}).then(() => {
httpBackend.verifyNoOutstandingExpectation();
@@ -146,30 +150,27 @@ describe('joining a room', function () {
roomView = ReactTestUtils.findRenderedComponentWithType(
matrixChat, RoomView);
- var previewBar = ReactTestUtils.findRenderedComponentWithType(
+ const previewBar = ReactTestUtils.findRenderedComponentWithType(
roomView, RoomPreviewBar);
- var joinLink = ReactTestUtils.findRenderedDOMComponentWithTag(
+ const joinLink = ReactTestUtils.findRenderedDOMComponentWithTag(
previewBar, 'a');
ReactTestUtils.Simulate.click(joinLink);
- // that will fire off a request to check our displayname, followed by a
- // join request
- httpBackend.when('GET', '/profile/'+encodeURIComponent(USER_ID))
- .respond(200, {displayname: 'boris'});
- httpBackend.when('POST', '/join/'+encodeURIComponent(ROOM_ALIAS))
+ httpBackend.when('POST', '/join/'+encodeURIComponent(ROOM_ID))
.respond(200, {room_id: ROOM_ID});
- return httpBackend.flush();
}).then(() => {
// wait for the join request to be made
return q.delay(1);
}).then(() => {
- // flush it through
- return httpBackend.flush();
+ // and again, because the state update has to go to the store and
+ // then one dispatch within the store, then to the view
+ // XXX: This is *super flaky*: a better way would be to declare
+ // that we expect a certain state transition to happen, then wait
+ // for that transition to occur.
+ return q.delay(1);
}).then(() => {
- httpBackend.verifyNoOutstandingExpectation();
-
// the roomview should now be loading
expect(roomView.state.room).toBe(null);
expect(roomView.state.joining).toBe(true);
@@ -178,6 +179,16 @@ describe('joining a room', function () {
ReactTestUtils.findRenderedDOMComponentWithClass(
roomView, "mx_Spinner");
+ // flush it through
+ return httpBackend.flush('/join/'+encodeURIComponent(ROOM_ID));
+ }).then(() => {
+ httpBackend.verifyNoOutstandingExpectation();
+
+ return q.delay(1);
+ }).then(() => {
+ // We've joined, expect this to false
+ expect(roomView.state.joining).toBe(false);
+
// now send the room down the /sync pipe
httpBackend.when('GET', '/sync').
respond(200, {
@@ -197,7 +208,6 @@ describe('joining a room', function () {
}).then(() => {
// now the room should have loaded
expect(roomView.state.room).toExist();
- expect(roomView.state.joining).toBe(false);
}).done(done, done);
});
});
diff --git a/test/app-tests/loading.js b/test/app-tests/loading.js
index 86fad11866..b6e4324f27 100644
--- a/test/app-tests/loading.js
+++ b/test/app-tests/loading.js
@@ -122,7 +122,7 @@ describe('loading:', function () {
function routeUrl(location, matrixChat) {
console.log(Date.now() + ` routing URL '${location}'`);
const s = getScreenFromLocation(location);
- console.log("Showing screen "+ s);
+ console.log("Showing screen ", s);
matrixChat.showScreen(s.screen, s.params);
}
@@ -196,7 +196,7 @@ describe('loading:', function () {
// Wait for another trip around the event loop for the UI to update
return q.delay(1);
}).then(() => {
- // we expect a single component
+ // we expect a single component following session load
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.login.Login'));
expect(windowLocation.hash).toEqual("");
@@ -273,7 +273,7 @@ describe('loading:', function () {
localStorage.setItem("mx_user_id", "@me:localhost");
});
- it('shows a directory by default if we have no joined rooms', function(done) {
+ it('shows a home page by default if we have no joined rooms', function(done) {
httpBackend.when('GET', '/pushrules').respond(200, {});
httpBackend.when('POST', '/filter').respond(200, { filter_id: 'fid' });
@@ -283,11 +283,11 @@ describe('loading:', function () {
// we got a sync spinner - let the sync complete
return expectAndAwaitSync();
}).then(() => {
- // once the sync completes, we should have a directory
+ // once the sync completes, we should have a home page
httpBackend.verifyNoOutstandingExpectation();
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.RoomDirectory'));
- expect(windowLocation.hash).toEqual("#/directory");
+ matrixChat, sdk.getComponent('structures.HomePage'));
+ expect(windowLocation.hash).toEqual("#/home");
}).done(done, done);
});
@@ -314,7 +314,7 @@ describe('loading:', function () {
});
describe('Guest auto-registration:', function() {
- it('shows a directory by default', function (done) {
+ it('shows a home page by default', function (done) {
loadApp();
q.delay(1).then(() => {
@@ -336,11 +336,11 @@ describe('loading:', function () {
// we got a sync spinner - let the sync complete
return expectAndAwaitSync();
}).then(() => {
- // once the sync completes, we should have a directory
+ // once the sync completes, we should have a home page
httpBackend.verifyNoOutstandingExpectation();
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.RoomDirectory'));
- expect(windowLocation.hash).toEqual("#/directory");
+ matrixChat, sdk.getComponent('structures.HomePage'));
+ expect(windowLocation.hash).toEqual("#/home");
}).done(done, done);
});
@@ -371,11 +371,11 @@ describe('loading:', function () {
}).then((req) => {
expect(req.path).toMatch(new RegExp("^https://homeserver/"));
- // once the sync completes, we should have a directory
+ // once the sync completes, we should have a home page
httpBackend.verifyNoOutstandingExpectation();
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.RoomDirectory'));
- expect(windowLocation.hash).toEqual("#/directory");
+ matrixChat, sdk.getComponent('structures.HomePage'));
+ expect(windowLocation.hash).toEqual("#/home");
expect(MatrixClientPeg.get().baseUrl).toEqual("https://homeserver");
expect(MatrixClientPeg.get().idBaseUrl).toEqual("https://idserver");
}).done(done, done);