diff --git a/.travis.yml b/.travis.yml
index c68279a269..e020ba7d15 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,9 +9,14 @@ node_js:
# - 7.x is the current 'current' version (until October 2017)
#
# see: https://github.com/nodejs/LTS/
- - 6.0
+ #
+ # anything before 6.3 ships with npm 3.9 or earlier, which had problems
+ # with symlinks in node_modules (see
+ # https://github.com/npm/npm/releases/tag/v3.10.0 'FIXES AND REFACTORING').
+ - 6.3
- 6
- 7
install:
- - scripts/fetch-develop.deps.sh
- - npm install
+ # clone the deps with depth 1: we know we will only ever need that one
+ # commit.
+ - scripts/fetch-develop.deps.sh --depth 1 && npm install
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2165700527..41b0970134 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,130 @@
+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)
+
+ * Update from Weblate.
+ [\#4152](https://github.com/vector-im/riot-web/pull/4152)
+
+Changes in [0.10.0-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.10.0-rc.2) (2017-06-02)
+======================================================================================================
+[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.10.0-rc.1...v0.10.0-rc.2)
+
+ * Update from Weblate.
+ [\#4150](https://github.com/vector-im/riot-web/pull/4150)
+ * styling for webrtc settings
+ [\#4019](https://github.com/vector-im/riot-web/pull/4019)
+ * Update from Weblate.
+ [\#4140](https://github.com/vector-im/riot-web/pull/4140)
+ * add styles for compact layout
+ [\#4132](https://github.com/vector-im/riot-web/pull/4132)
+ * Various tweaks to fetch-develop-deps
+ [\#4147](https://github.com/vector-im/riot-web/pull/4147)
+ * Don't try to build with node 6.0
+ [\#4145](https://github.com/vector-im/riot-web/pull/4145)
+ * Support 12hr time on DateSeparator
+ [\#4143](https://github.com/vector-im/riot-web/pull/4143)
+ * Update from Weblate.
+ [\#4137](https://github.com/vector-im/riot-web/pull/4137)
+ * Update from Weblate.
+ [\#4105](https://github.com/vector-im/riot-web/pull/4105)
+ * Update from Weblate.
+ [\#4094](https://github.com/vector-im/riot-web/pull/4094)
+ * Update from Weblate.
+ [\#4091](https://github.com/vector-im/riot-web/pull/4091)
+ * Update from Weblate.
+ [\#4089](https://github.com/vector-im/riot-web/pull/4089)
+ * Update from Weblate.
+ [\#4083](https://github.com/vector-im/riot-web/pull/4083)
+
+Changes in [0.10.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.10.0-rc.1) (2017-06-01)
+======================================================================================================
+[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.10...v0.10.0-rc.1)
+
+ * basic electron profile support
+ [\#4030](https://github.com/vector-im/riot-web/pull/4030)
+ * Finish translations for vector-im/riot-web
+ [\#4122](https://github.com/vector-im/riot-web/pull/4122)
+ * Translate src/vector
+ [\#4119](https://github.com/vector-im/riot-web/pull/4119)
+ * electron flashFrame was way too annoying
+ [\#4128](https://github.com/vector-im/riot-web/pull/4128)
+ * auto-launch support [Electron]
+ [\#4012](https://github.com/vector-im/riot-web/pull/4012)
+ * Show 12hr time on hover too
+ [\#4092](https://github.com/vector-im/riot-web/pull/4092)
+ * Translate src/notifications
+ [\#4087](https://github.com/vector-im/riot-web/pull/4087)
+ * Translate src/components/structures
+ [\#4084](https://github.com/vector-im/riot-web/pull/4084)
+ * Smaller font size on timestamp to better fit in the available space
+ [\#4085](https://github.com/vector-im/riot-web/pull/4085)
+ * Make travis run the build with several versions of node
+ [\#4079](https://github.com/vector-im/riot-web/pull/4079)
+ * Piwik Analytics
+ [\#4056](https://github.com/vector-im/riot-web/pull/4056)
+ * Update from Weblate.
+ [\#4077](https://github.com/vector-im/riot-web/pull/4077)
+ * managed to eat the eventStatus check, can't redact a local-echo etc
+ [\#4078](https://github.com/vector-im/riot-web/pull/4078)
+ * show redact in context menu only if has PL to/sent message
+ [\#3925](https://github.com/vector-im/riot-web/pull/3925)
+ * Update from Weblate.
+ [\#4064](https://github.com/vector-im/riot-web/pull/4064)
+ * Change redact -> remove to improve clarity
+ [\#3722](https://github.com/vector-im/riot-web/pull/3722)
+ * Update from Weblate.
+ [\#4058](https://github.com/vector-im/riot-web/pull/4058)
+ * Message Forwarding
+ [\#3688](https://github.com/vector-im/riot-web/pull/3688)
+ * Update from Weblate.
+ [\#4057](https://github.com/vector-im/riot-web/pull/4057)
+ * Fixed an input field's background color in dark theme
+ [\#4053](https://github.com/vector-im/riot-web/pull/4053)
+ * Update from Weblate.
+ [\#4051](https://github.com/vector-im/riot-web/pull/4051)
+ * Update from Weblate.
+ [\#4049](https://github.com/vector-im/riot-web/pull/4049)
+ * Update from Weblate.
+ [\#4048](https://github.com/vector-im/riot-web/pull/4048)
+ * Update from Weblate.
+ [\#4040](https://github.com/vector-im/riot-web/pull/4040)
+ * Update translating.md: Minor suggestions
+ [\#4041](https://github.com/vector-im/riot-web/pull/4041)
+ * tidy electron files, they weren't pwetty
+ [\#3993](https://github.com/vector-im/riot-web/pull/3993)
+ * Prevent Power Save when in call (Electron)
+ [\#3992](https://github.com/vector-im/riot-web/pull/3992)
+ * Translations!
+ [\#4035](https://github.com/vector-im/riot-web/pull/4035)
+ * Kieran gould/12hourtimestamp
+ [\#3961](https://github.com/vector-im/riot-web/pull/3961)
+ * Don't include src in the test resolve root
+ [\#4033](https://github.com/vector-im/riot-web/pull/4033)
+ * add moar context menus [Electron]
+ [\#4021](https://github.com/vector-im/riot-web/pull/4021)
+ * Add `Chat` to Linux app categories
+ [\#4022](https://github.com/vector-im/riot-web/pull/4022)
+ * add menu category for linux build of app
+ [\#3975](https://github.com/vector-im/riot-web/pull/3975)
+ * Electron Tray Improvements
+ [\#3909](https://github.com/vector-im/riot-web/pull/3909)
+ * More riot-web test deflakification
+ [\#3966](https://github.com/vector-im/riot-web/pull/3966)
+ * Script to fetch corresponding branches of dependent projects
+ [\#3945](https://github.com/vector-im/riot-web/pull/3945)
+ * Add type="text/css" to SVG logos
+ [\#3964](https://github.com/vector-im/riot-web/pull/3964)
+ * Fix some setState-after-unmount in roomdirectory
+ [\#3958](https://github.com/vector-im/riot-web/pull/3958)
+ * Attempt to deflakify joining test
+ [\#3956](https://github.com/vector-im/riot-web/pull/3956)
+
Changes in [0.9.10](https://github.com/vector-im/riot-web/releases/tag/v0.9.10) (2017-05-22)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.10-rc.1...v0.9.10)
diff --git a/README.md b/README.md
index be3f3a8b4b..94e2a9cc9c 100644
--- a/README.md
+++ b/README.md
@@ -55,8 +55,8 @@ Building From Source
Riot is a modular webapp built with modern ES6 and requires a npm build system
to build.
-1. Install or update `node.js` so that your `node` is at least v6.0.0 (and `npm`
- is at least v3.8.6).
+1. Install or update `node.js` so that your `node` is at least v6.3.0 (and `npm`
+ is at least v3.10.x).
1. Clone the repo: `git clone https://github.com/vector-im/riot-web.git`.
1. Switch to the riot-web directory: `cd riot-web`.
1. If you're using the `develop` branch, install the develop versions of the
@@ -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/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 df9c3bd261..820b498891 100644
--- a/electron_app/package.json
+++ b/electron_app/package.json
@@ -2,10 +2,13 @@
"name": "riot-web",
"productName": "Riot",
"main": "src/electron-main.js",
- "version": "0.9.10",
+ "version": "0.10.1",
"description": "A feature-rich client for Matrix.org",
"author": "Vector Creations Ltd.",
"dependencies": {
- "electron-window-state": "^4.1.0"
+ "auto-launch": "^5.0.1",
+ "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 ca8c3a1be6..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.
@@ -21,7 +22,9 @@ limitations under the License.
const checkSquirrelHooks = require('./squirrelhooks');
if (checkSquirrelHooks()) return;
+const argv = require('minimist')(process.argv);
const electron = require('electron');
+const AutoLaunch = require('auto-launch');
const tray = require('./tray');
const vectorMenu = require('./vectormenu');
@@ -29,6 +32,10 @@ const webContentsHandler = require('./webcontents-handler');
const windowStateKeeper = require('electron-window-state');
+if (argv.profile) {
+ electron.app.setPath('userData', `${electron.app.getPath('userData')}-${argv.profile}`);
+}
+
let vectorConfig = {};
try {
vectorConfig = require('../../webapp/config.json');
@@ -45,47 +52,6 @@ const INITIAL_UPDATE_DELAY_MS = 30 * 1000;
let mainWindow = null;
let appQuitting = false;
-function safeOpenURL(target) {
- // openExternal passes the target to open/start/xdg-open,
- // so put fairly stringent limits on what can be opened
- // (for instance, open /bin/sh does indeed open a terminal
- // with a shell, albeit with no arguments)
- const parsedUrl = url.parse(target);
- if (PERMITTED_URL_SCHEMES.indexOf(parsedUrl.protocol) > -1) {
- // explicitly use the URL re-assembled by the url library,
- // so we know the url parser has understood all the parts
- // of the input string
- const newTarget = url.format(parsedUrl);
- electron.shell.openExternal(newTarget);
- }
-}
-
-function onWindowOrNavigate(ev, target) {
- // always prevent the default: if something goes wrong,
- // we don't want to end up opening it in the electron
- // app, as we could end up opening any sort of random
- // url in a window that has node scripting access.
- ev.preventDefault();
- safeOpenURL(target);
-}
-
-function onLinkContextMenu(ev, params) {
- const popupMenu = new electron.Menu();
-
- popupMenu.append(new electron.MenuItem({
- label: params.linkURL,
- click() { safeOpenURL(params.linkURL); },
- }));
-
- popupMenu.append(new electron.MenuItem({
- label: 'Copy Link Address',
- click() { electron.clipboard.writeText(params.linkURL); },
- }));
-
- popupMenu.popup();
- ev.preventDefault();
-}
-
function installUpdate() {
// for some reason, quitAndInstall does not fire the
// before-quit event, so we need to set the flag here.
@@ -159,19 +125,19 @@ electron.ipcMain.on('install_update', installUpdate);
let focusHandlerAttached = false;
electron.ipcMain.on('setBadgeCount', function(ev, count) {
electron.app.setBadgeCount(count);
- if (process.platform === 'win32' && mainWindow && !mainWindow.isFocused()) {
- if (count > 0) {
- if (!focusHandlerAttached) {
- mainWindow.once('focus', () => {
- mainWindow.flashFrame(false);
- focusHandlerAttached = false;
- });
- focusHandlerAttached = true;
- }
- mainWindow.flashFrame(true);
- } else {
+ if (count === 0) {
+ mainWindow.flashFrame(false);
+ }
+});
+
+electron.ipcMain.on('loudNotification', function() {
+ if (process.platform === 'win32' && mainWindow && !mainWindow.isFocused() && !focusHandlerAttached) {
+ mainWindow.flashFrame(true);
+ mainWindow.once('focus', () => {
mainWindow.flashFrame(false);
- }
+ focusHandlerAttached = false;
+ });
+ focusHandlerAttached = true;
}
});
@@ -206,10 +172,65 @@ const shouldQuit = electron.app.makeSingleInstance((commandLine, workingDirector
if (shouldQuit) {
console.log('Other instance detected: exiting');
- electron.app.quit();
+ electron.app.exit();
}
+
+const launcher = new AutoLaunch({
+ name: vectorConfig.brand || 'Riot',
+ isHidden: true,
+ mac: {
+ useLaunchAgent: true,
+ },
+});
+
+const settings = {
+ 'auto-launch': {
+ get: launcher.isEnabled,
+ set: function(bool) {
+ if (bool) {
+ return launcher.enable();
+ } else {
+ return launcher.disable();
+ }
+ },
+ },
+};
+
+electron.ipcMain.on('settings_get', async function(ev) {
+ const data = {};
+
+ try {
+ await Promise.all(Object.keys(settings).map(async function (setting) {
+ data[setting] = await settings[setting].get();
+ }));
+
+ ev.sender.send('settings', data);
+ } catch(e) { console.error(e); }
+});
+
+electron.ipcMain.on('settings_set', function(ev, key, value) {
+ console.log(key, value);
+ if (settings[key] && settings[key].set) {
+ settings[key].set(value);
+ }
+});
+
electron.app.on('ready', () => {
+
+ if (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);
@@ -238,13 +259,17 @@ electron.app.on('ready', () => {
mainWindow.loadURL(`file://${__dirname}/../../webapp/index.html`);
electron.Menu.setApplicationMenu(vectorMenu);
+ // explicitly hide because setApplicationMenu on Linux otherwise shows...
+ // https://github.com/electron/electron/issues/9621
+ mainWindow.hide();
+
// Create trayIcon icon
tray.create(mainWindow, {
icon_path: iconPath,
brand: vectorConfig.brand || 'Riot',
});
- if (!process.argv.includes('--hidden')) {
+ if (!argv.hidden) {
mainWindow.once('ready-to-show', () => {
mainWindow.show();
});
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 29b5beee07..bb3edc4075 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.9.10",
+ "version": "0.10.1",
"description": "A feature-rich client for Matrix.org",
"author": "Vector Creations Ltd.",
"repository": {
@@ -33,7 +33,7 @@
"build:compile": "npm run reskindex && babel --source-maps -d lib src",
"build:bundle": "cross-env NODE_ENV=production webpack -p --progress",
"build:bundle:dev": "webpack --optimize-occurence-order --progress",
- "build:electron": "npm run clean && npm run build && build -wml --ia32 --x64",
+ "build:electron": "npm run clean && npm run build && npm run install:electron && build -wml --ia32 --x64",
"build": "npm run reskindex && npm run build:res && npm run build:bundle",
"build:dev": "npm run reskindex && npm run build:res && npm run build:bundle:dev",
"dist": "scripts/package.sh",
@@ -65,8 +65,8 @@
"gfm.css": "^1.1.1",
"highlight.js": "^9.0.0",
"linkifyjs": "^2.1.3",
- "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop",
- "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop",
+ "matrix-js-sdk": "0.7.10",
+ "matrix-react-sdk": "0.9.1",
"modernizr": "^3.1.0",
"pako": "^1.0.5",
"q": "^1.4.1",
@@ -101,6 +101,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",
@@ -162,7 +163,7 @@
"category": "Network;InstantMessaging;Chat",
"maintainer": "support@riot.im",
"desktop": {
- "StartupWMClass": "riot-web"
+ "StartupWMClass": "riot"
}
},
"win": {
diff --git a/scripts/copy-res.js b/scripts/copy-res.js
index d6835a237f..1c471a0516 100755
--- a/scripts/copy-res.js
+++ b/scripts/copy-res.js
@@ -9,15 +9,18 @@
// This could readily be automated, but it's nice to explicitly
// control when we languages are available.
const INCLUDE_LANGS = [
- //'be' Omitted because no translations in react-sdk
- 'en_EN',
- 'da',
- 'de_DE',
- 'fr',
- 'be',
- 'pt',
- 'pt_BR',
- 'ru',
+ {'value': 'en_EN', 'label': 'English'},
+ {'value': 'en_US', 'label': 'English (US)'},
+ {'value': 'da', 'label': 'Dansk'},
+ {'value': 'nl', 'label': 'Nederlands'},
+ {'value': 'de_DE', 'label': 'Deutsch'},
+ {'value': 'fr', 'label': 'Français'},
+ {'value': 'pt', 'label': 'Português'},
+ {'value': 'pt_BR', 'label': 'Português do Brasil'},
+ {'value': 'ru', 'label': 'Русский'},
+ {'value': 'sv', 'label': 'Svenska'},
+ {'value': 'es', 'label': 'Español'},
+ {'value': 'zh_Hans', 'label': '中文'}
];
// cpx includes globbed parts of the filename in the destination, but excludes
@@ -37,7 +40,7 @@ const COPY_LIST = [
INCLUDE_LANGS.forEach(function(l) {
COPY_LIST.push([
- l, "webapp/i18n/", { lang: 1 },
+ l.value, "webapp/i18n/", { lang: 1 },
]);
});
@@ -159,17 +162,22 @@ function genLangFile(lang, dest) {
function genLangList() {
const languages = {};
INCLUDE_LANGS.forEach(function(lang) {
- const normalizedLanguage = lang.toLowerCase().replace("_", "-");
+ const normalizedLanguage = lang.value.toLowerCase().replace("_", "-");
const languageParts = normalizedLanguage.split('-');
if (languageParts.length == 2 && languageParts[0] == languageParts[1]) {
- languages[languageParts[0]] = lang + '.json';
+ languages[languageParts[0]] = {'fileName': lang.value + '.json', 'label': lang.label};
} else {
- languages[normalizedLanguage] = lang + '.json';
+ languages[normalizedLanguage] = {'fileName': lang.value + '.json', 'label': lang.label};
+ }
+ });
+ fs.writeFile('webapp/i18n/languages.json', JSON.stringify(languages, null, 4), function(err) {
+ if (err) {
+ console.error("Copy Error occured: " + err);
+ throw new Error("Failed to generate languages.json");
}
});
- fs.writeFile('webapp/i18n/languages.json', JSON.stringify(languages, null, 4));
if (verbose) {
- console.log("Generated language list");
+ console.log("Generated languages.json");
}
}
diff --git a/scripts/fetch-develop.deps.sh b/scripts/fetch-develop.deps.sh
index bbbc834152..cc0f221a20 100755
--- a/scripts/fetch-develop.deps.sh
+++ b/scripts/fetch-develop.deps.sh
@@ -6,6 +6,10 @@
# the branch the current checkout is on, use that branch. Otherwise,
# use develop.
+set -e
+
+GIT_CLONE_ARGS=("$@")
+
# Look in the many different CI env vars for which branch we're
# building
if [[ "$TRAVIS" == true ]]; then
@@ -23,41 +27,62 @@ fi
echo "Determined branch to be $curbranch"
+# clone a specific branch of a github repo
+function clone() {
+ org=$1
+ repo=$2
+ branch=$3
+ git clone https://github.com/$org/$repo.git $repo --branch $branch \
+ "${GIT_CLONE_ARGS[@]}"
+}
+
function dodep() {
org=$1
repo=$2
- rm -rf $repo || true
- git clone https://github.com/$org/$repo.git $repo
- pushd $repo
- git checkout $curbranch || git checkout develop
- echo "$repo set to branch "`git rev-parse --abbrev-ref HEAD`
- popd
+ rm -rf $repo
+ clone $org $repo $curbranch || {
+ [ "$curbranch" != 'develop' ] && clone $org $repo develop
+ } || return $?
+
+ (
+ cd $repo
+ echo "$repo set to branch "`git rev-parse --abbrev-ref HEAD`
+ )
+
+ mkdir -p node_modules
+ rm -r "node_modules/$repo" 2>/dev/null || true
+ ln -sv "../$repo" node_modules/
}
+echo -en 'travis_fold:start:matrix-js-sdk\r'
+echo 'Setting up matrix-js-sdk'
+
dodep matrix-org matrix-js-sdk
+(
+ cd node_modules/matrix-js-sdk
+ npm install
+)
+
+echo -en 'travis_fold:end:matrix-js-sdk\r'
+
+echo -en 'travis_fold:start:matrix-react-sdk\r'
+echo 'Setting up matrix-react-sdk'
+
dodep matrix-org matrix-react-sdk
-mkdir -p node_modules
-cd node_modules
+mkdir -p node_modules/matrix-react-sdk/node_modules
+ln -s ../../matrix-js-sdk node_modules/matrix-react-sdk/node_modules/
-rm -r matrix-js-sdk 2> /dev/null
-ln -s ../matrix-js-sdk ./
-pushd matrix-js-sdk
-npm install
-popd
+(
+ cd node_modules/matrix-react-sdk
+ npm install
+)
+
+echo -en 'travis_fold:end:matrix-react-sdk\r'
-rm -r matrix-react-sdk 2> /dev/null
-ln -s ../matrix-react-sdk ./
-pushd matrix-react-sdk
-mkdir -p node_modules
-cd node_modules
-ln -s ../../matrix-js-sdk matrix-js-sdk
-cd ..
-npm install
-popd
# Link the reskindex binary in place: if we used npm link,
# npm would do this for us, but we don't because we'd have
# to define the npm prefix somewhere so it could put the
# intermediate symlinks there. Instead, we do it ourselves.
-mkdir -p .bin
-ln -sf ../matrix-react-sdk/scripts/reskindex.js .bin/reskindex
+mkdir -p node_modules/.bin
+ln -sfv ../matrix-react-sdk/scripts/reskindex.js node_modules/.bin/reskindex
diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js
index 5445fd4fb8..e3f4d14042 100644
--- a/src/components/views/context_menus/MessageContextMenu.js
+++ b/src/components/views/context_menus/MessageContextMenu.js
@@ -182,7 +182,7 @@ module.exports = React.createClass({
if (content.msgtype && content.msgtype !== 'm.bad.encrypted' && content.hasOwnProperty('body')) {
forwardButton = (
- Forward Message
+ { _t('Forward Message') }
);
}
diff --git a/src/components/views/dialogs/BugReportDialog.js b/src/components/views/dialogs/BugReportDialog.js
index 7a65ac587f..0db425e33f 100644
--- a/src/components/views/dialogs/BugReportDialog.js
+++ b/src/components/views/dialogs/BugReportDialog.js
@@ -17,6 +17,7 @@ limitations under the License.
import React from 'react';
import sdk from 'matrix-react-sdk';
import SdkConfig from 'matrix-react-sdk/lib/SdkConfig';
+import { _t } from 'matrix-react-sdk/lib/languageHandler';
export default class BugReportDialog extends React.Component {
constructor(props, context) {
@@ -49,12 +50,12 @@ export default class BugReportDialog extends React.Component {
const userText = this.state.text;
if (!sendLogs && userText.trim().length === 0) {
this.setState({
- err: "Please describe the bug and/or send logs.",
+ err: _t("Please describe the bug and/or send logs."),
});
return;
}
this.setState({ busy: true, progress: null, err: null });
- this._sendProgressCallback("Loading bug report module");
+ this._sendProgressCallback(_t("Loading bug report module"));
require(['../../../vector/submit-rageshake'], (s) => {
s(SdkConfig.get().bug_report_endpoint_url, {
@@ -69,8 +70,9 @@ export default class BugReportDialog extends React.Component {
}, (err) => {
if (!this._unmounted) {
this.setState({
- busy: false, progress: null,
- err: `Failed to send report: ${err.message}`,
+ busy: false,
+ progress: null,
+ err: _t("Failed to send report: ") + `${err.message}`,
});
}
});
@@ -105,7 +107,7 @@ export default class BugReportDialog extends React.Component {
let cancelButton = null;
if (!this.state.busy) {
cancelButton =
- Cancel
+ { _t("Cancel") }
;
}
@@ -122,25 +124,27 @@ export default class BugReportDialog extends React.Component {
return (
- Report a bug
+ { _t("Report a bug") }
-
Please describe the bug. What did you do?
- What did you expect to happen?
- What actually happened?
+
+ { _t("Please describe the bug. What did you do? What did you expect to happen? What actually happened?") }
+
-
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:
+
+ { _t("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:") }
+
-
Send logs
+
+ { _t("Send logs") }
+
{progress}
{error}
@@ -151,7 +155,7 @@ export default class BugReportDialog extends React.Component {
autoFocus={true}
disabled={this.state.busy}
>
- Send
+ { _t("Send") }
{cancelButton}
diff --git a/src/components/views/dialogs/ChangelogDialog.js b/src/components/views/dialogs/ChangelogDialog.js
index d14d8dc2ce..c42833d7c4 100644
--- a/src/components/views/dialogs/ChangelogDialog.js
+++ b/src/components/views/dialogs/ChangelogDialog.js
@@ -17,6 +17,7 @@
import React from 'react';
import sdk from 'matrix-react-sdk';
import request from 'browser-request';
+import { _t } from 'matrix-react-sdk/lib/languageHandler';
const REPOS = ['vector-im/vector-web', 'matrix-org/matrix-react-sdk', 'matrix-org/matrix-js-sdk'];
@@ -70,16 +71,16 @@ export default class ChangelogDialog extends React.Component {
const content = (
- {this.props.version == null || this.props.newVersion == null ?
Unavailable : logs}
+ {this.props.version == null || this.props.newVersion == null ? {_t("Unavailable")} : logs}
);
return (
)
diff --git a/src/components/views/globals/NewVersionBar.js b/src/components/views/globals/NewVersionBar.js
index 3e03be72be..219ef02a9a 100644
--- a/src/components/views/globals/NewVersionBar.js
+++ b/src/components/views/globals/NewVersionBar.js
@@ -20,6 +20,7 @@ import React from 'react';
import sdk from 'matrix-react-sdk';
import Modal from 'matrix-react-sdk/lib/Modal';
import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';
+import { _t } from 'matrix-react-sdk/lib/languageHandler';
/**
* Check a version string is compatible with the Changelog
@@ -40,9 +41,9 @@ export default React.createClass({
displayReleaseNotes: function(releaseNotes) {
const QuestionDialog = sdk.getComponent('dialogs.QuestionDialog');
Modal.createDialog(QuestionDialog, {
- title: "What's New",
+ title: _t("What's New"),
description:
{releaseNotes} ,
- button: "Update",
+ button: _t("Update"),
onFinished: (update) => {
if(update && PlatformPeg.get()) {
PlatformPeg.get().installUpdate();
@@ -75,17 +76,29 @@ export default React.createClass({
// automatically tells you what's changed (provided the versions
// are in the right format)
if (this.props.releaseNotes) {
- action_button =
What's new? ;
+ action_button = (
+
+ { _t("What's new?") }
+
+ );
} else if (checkVersion(this.props.version) && checkVersion(this.props.newVersion)) {
- action_button =
What's new? ;
+ action_button = (
+
+ { _t("What's new?") }
+
+ );
} else if (PlatformPeg.get()) {
- action_button =
Update ;
+ action_button = (
+
+ { _t("Update") }
+
+ );
}
return (
- A new version of Riot is available.
+ {_t("A new version of Riot is available.")}
{action_button}
diff --git a/src/components/views/login/VectorCustomServerDialog.js b/src/components/views/login/VectorCustomServerDialog.js
index d7fe545a0a..80cd68006f 100644
--- a/src/components/views/login/VectorCustomServerDialog.js
+++ b/src/components/views/login/VectorCustomServerDialog.js
@@ -15,6 +15,7 @@ limitations under the License.
*/
var React = require("react");
+var sanitizeHtml = require("sanitize-html");
import { _t } from 'matrix-react-sdk/lib/languageHandler';
module.exports = React.createClass({
@@ -30,7 +31,7 @@ module.exports = React.createClass({
{ _t('Custom Server Options') }
-
+
diff --git a/src/components/views/messages/DateSeparator.js b/src/components/views/messages/DateSeparator.js
index 7acc9bd61e..3f75c3e749 100644
--- a/src/components/views/messages/DateSeparator.js
+++ b/src/components/views/messages/DateSeparator.js
@@ -49,7 +49,7 @@ module.exports = React.createClass({
label = days[date.getDay()];
}
else {
- label = DateUtils.formatFullDate(date);
+ label = DateUtils.formatFullDate(date, this.props.showTwelveHour);
}
return (
diff --git a/src/components/views/rooms/SearchBar.js b/src/components/views/rooms/SearchBar.js
index 1653f269a8..26bf81e428 100644
--- a/src/components/views/rooms/SearchBar.js
+++ b/src/components/views/rooms/SearchBar.js
@@ -21,6 +21,7 @@ var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg');
var sdk = require('matrix-react-sdk');
var classNames = require('classnames');
var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton');
+import { _t } from "matrix-react-sdk/lib/languageHandler";
module.exports = React.createClass({
displayName: 'SearchBar',
@@ -59,10 +60,10 @@ module.exports = React.createClass({
return (
-
-
-
This Room
-
All Rooms
+
+
+
{_t("This Room")}
+
{_t("All Rooms")}
);
diff --git a/src/i18n/strings/be.json b/src/i18n/strings/be.json
index 18b0179ab8..69a6a9233c 100644
--- a/src/i18n/strings/be.json
+++ b/src/i18n/strings/be.json
@@ -10,7 +10,7 @@
"Create new room": "Стварыць новы пакой",
"Couldn't find a matching Matrix room": "Не атрымалася знайсці адпаведны пакой Matrix",
"Custom Server Options": "Карыстальніцкія параметры сервера",
- "delete the alias": "выдаліць псеўданім",
+ "delete the alias.": "выдаліць псеўданім.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Выдаліць псеўданім пакоя %(alias)s і выдаліць %(name)s з каталога?",
"Direct Chat": "Прамы чат",
"Directory": "Каталог",
@@ -44,7 +44,7 @@
"Forget": "Забыць",
" from room": " з пакоя",
"Guests can join": "Госці могуць далучыцца",
- "Guest users can't invite users. Please register to invite": "Госцi не могуць запрашаць карыстальнікаў. Калі ласка, зарэгіструйцеся, каб запрасiць",
+ "Guest users can't invite users. Please register to invite.": "Госцi не могуць запрашаць карыстальнікаў. Калі ласка, зарэгіструйцеся, каб запрасiць.",
"Invite to this room": "Запрасіць у гэты пакой",
"Keywords": "Ключавыя словы",
"Leave": "Пакінуць",
@@ -70,7 +70,7 @@
"Reject": "Адхіліць",
"Remove %(name)s from the directory?": "Выдаліць %(name)s з каталога?",
"Remove": "Выдалiць",
- "remove %(name)s from the directory": "выдаліць %(name)s з каталога",
+ "remove %(name)s from the directory.": "выдаліць %(name)s з каталога.",
"Remove from Directory": "Выдалiць з каталога",
"Resend": "Паўторна",
"Riot does not know how to join a room on this network": "Riot не ведае, як увайсці ў пакой у гэтай сетке",
@@ -83,6 +83,6 @@
"The Home Server may be too old to support third party networks": "Хатні сервер можа быць занадта стары для падтрымкі іншых сетак",
"There are advanced notifications which are not shown here": "Ёсць пашыраныя апавяшчэння, якія не паказаныя тут",
"The server may be unavailable or overloaded": "Сервер можа быць недаступны ці перагружаны",
- "This room is inaccessible to guests. You may be able to join if you register": "Гэты пакой недаступны для гасцей. Вы можаце далучыцца, калі вы зарэгіструецеся",
+ "This room is inaccessible to guests. You may be able to join if you register.": "Гэты пакой недаступны для гасцей. Вы можаце далучыцца, калі вы зарэгіструецеся.",
" to room": " ў пакоі"
}
diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json
index 780d0bbb41..4cd6c4b008 100644
--- a/src/i18n/strings/da.json
+++ b/src/i18n/strings/da.json
@@ -7,7 +7,7 @@
"Create new room": "Opret nyt rum",
"Couldn't find a matching Matrix room": "Kunne ikke finde et matchende Matrix-rum",
"Custom Server Options": "Brugerdefinerede serverindstillinger",
- "delete the alias": "Slet aliaset",
+ "delete the alias.": "Slet aliaset.",
"Delete the room alias": "Slet room alias",
"Direct Chat": "Personligt Chat",
"Directory": "Rum fortegnelse",
@@ -39,7 +39,7 @@
"from the directory": "fra fortegnelsen",
" from room": " fra rum",
"Guests can join": "Gæster kan deltage",
- "Guest users can't invite users. Please register to invite": "Gæstebrugere kan ikke invitere brugere. Tilmeld dig venligst for at invitere",
+ "Guest users can't invite users. Please register to invite.": "Gæstebrugere kan ikke invitere brugere. Tilmeld dig venligst for at invitere.",
"Invite to this room": "Inviter til dette rum",
"Keywords": "Søgeord",
"Leave": "Forlade",
@@ -70,7 +70,7 @@
"The Home Server may be too old to support third party networks": "Hjemmeserveren kan være for gammel til at understøtte tredjepartsnetværk",
"There are advanced notifications which are not shown here": "Der er avancerede meddelelser, som ikke vises her",
"The server may be unavailable or overloaded": "Serveren kan være utilgængelig eller overbelastet",
- "This room is inaccessible to guests. You may be able to join if you register": "Dette rum er utilgængeligt for gæster. Du kan være i stand til at deltage, hvis du registrerer dig",
+ "This room is inaccessible to guests. You may be able to join if you register.": "Dette rum er utilgængeligt for gæster. Du kan være i stand til at deltage, hvis du registrerer dig.",
" to room": " til rum",
"Unable to fetch notification target list": "Kan ikke hente meddelelsesmålliste",
"Unable to join network": "Kan ikke deltage i netværket",
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 32d0f81510..59483af82d 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1,6 +1,6 @@
{
"Please Register": "Bitte registrieren",
- "Guest users can't invite users. Please register to invite.": "Gäste können keine User einladen. Zum Einladen bitte anmelden.",
+ "Guest users can't invite users. Please register to invite.": "Gäste können keine Nutzer einladen. Bitte registriere dich, um Nutzer einzuladen.",
"Members": "Mitglieder",
"Files": "Dateien",
"Notifications": "Benachrichtigungen",
@@ -15,11 +15,11 @@
"Dismiss": "Ablehnen",
"Failed to get protocol list from Home Server": "Fehler beim Abrufen der Protokoll-Liste vom Home-Server",
"The Home Server may be too old to support third party networks": "Der Home-Server ist eventuell zu alt, um Drittanbieter-Netzwerke zu unterstützen",
- "Directory": "Raum Verzeichnis",
+ "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": "Jeder kann lesen",
+ "World readable": "Alle können mitlesen",
"Guests can join": "Gäste können beitreten",
"You are not receiving desktop notifications": "Du erhältst keine Desktop-Benachrichtigungen",
"Enable them now": "Aktiviere diese jetzt",
@@ -27,24 +27,24 @@
"All notifications are currently disabled for all targets.": "Im Moment sind alle Benachrichtigungen für alle Ziele deaktiviert.",
"An error occurred whilst saving your email notification preferences.": "Beim Speichern deiner E-Mail-Benachrichtigungseinstellungen ist ein Fehler aufgetreten.",
"and remove": "und entfernen",
- "Can't update user notification settings": "Kann Benutzerdefinierte Einstellungen nicht aktualisieren",
+ "Can't update user notification settings": "Benachrichtigungs-Einstellungen des Nutzers konnten nicht aktualisiert werden",
"Couldn't find a matching Matrix room": "Konnte keinen entsprechenden Matrix-Raum finden",
- "delete the alias": "Lösche den Alias",
+ "delete the alias.": "Lösche den Alias.",
"Delete the room alias": "Lösche den Raum Alias",
"Direct Chat": "Privater Chat",
"Drop here to": "Hier ablegen",
"Enable audible notifications in web client": "Audio-Benachrichtigungen im Web-Client aktivieren",
"Enable desktop notifications": "Desktop-Benachrichtigungen aktivieren",
- "Enable email notifications": "Aktiviere E-Mail Benachrichtigungen",
- "Enable notifications for this account": "Aktiviere Benachrichtigungen für diesen Benutzer",
- "Enter keywords separated by a comma:": "Schlagworte kommagetrennt eingeben:",
+ "Enable email notifications": "E-Mail-Benachrichtigungen aktivieren",
+ "Enable notifications for this account": "Benachrichtigungen für dieses Konto aktivieren",
+ "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",
"Failed to": "Konnte nicht",
"Failed to add tag ": "Konnte Tag nicht hinzufügen ",
"Failed to change settings": "Einstellungen konnten nicht geändert werden",
- "Failed to update keywords": "Konnte Suchbegriff nicht aktualisieren",
+ "Failed to update keywords": "Schlüsselwörter konnten nicht aktualisiert werden",
"Failed to get public room list": "Die Liste der öffentlichen Räume konnte nicht geladen werden",
"Failed to join the room": "Fehler beim Betreten des Raumes",
"Failed to remove tag ": "Konnte Tag nicht entfernen ",
@@ -54,13 +54,12 @@
"Forget": "Lösche",
"from the directory": "aus dem Verzeichnis",
" from room": " aus dem Raum",
- "Guest users can't invite users. Please register to invite": "Gastnutzer können keine Nutzer einladen. Bitte registriere dich, um Nutzer einzuladen",
"Keywords": "Schlüsselwörter",
"Leave": "Verlassen",
"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",
@@ -71,7 +70,7 @@
"Room not found": "Raum nicht gefunden",
"There are advanced notifications which are not shown here": "Es existieren erweiterte Benachrichtigungen, welche hier nicht angezeigt werden",
"The server may be unavailable or overloaded": "Der Server ist vermutlich nicht erreichbar oder überlastet",
- "This room is inaccessible to guests. You may be able to join if you register": "Dieser Raum ist nicht verfügbar für Gäste. Vermutlich klappt es wenn du dich anmeldest",
+ "This room is inaccessible to guests. You may be able to join if you register.": "Dieser Raum ist nicht verfügbar für Gäste. Vermutlich klappt es wenn du dich anmeldest.",
"Unable to fetch notification target list": "Liste der Benachrichtigungsempfänger konnte nicht abgerufen werden",
"Unable to join network": "Es ist nicht möglich, dem Netzwerk beizutreten",
"unknown error code": "Unbekannter Fehlercode",
@@ -81,13 +80,13 @@
"On": "An",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du hast sie eventuell auf einem anderen Client als Riot konfiguriert. Sie können in Riot nicht verändert werden, gelten aber trotzdem",
" to room": " an Raum",
- "Drop here %(toAction)s": "Hierher ziehen: %(toAction)s",
+ "Drop here %(toAction)s": "Hierher ziehen: %(toAction)s",
"All messages": "Alle Nachrichten",
"All messages (loud)": "Alle Nachrichten (laut)",
"Cancel Sending": "Senden abbrechen",
"Close": "Schließen",
- "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Soll der Raumalias %(alias)s gelöscht und der %(name)s aus dem Verzeichnis entfernt werden?",
- "Download this file": "Datei Herunterladen",
+ "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Soll der Raum-Alias %(alias)s gelöscht und der %(name)s aus dem Verzeichnis entfernt werden?",
+ "Download this file": "Diese Datei herunterladen",
"Failed to add tag %(tagName)s to room": "Das Hinzufügen des Tags %(tagName)s für den Raum ist fehlgeschlagen",
"Failed to forget room %(errCode)s": "Das Entfernen des Raums %(errCode)s aus deiner Liste ist fehlgeschlagen",
"Failed to remove tag %(tagName)s from room": "Das Entfernen des Tags %(tagName)s für den Raum ist fehlgeschlagen",
@@ -98,7 +97,7 @@
"Quote": "Zitat",
"Redact": "Redaktionell entfernen",
"Remove %(name)s from the directory?": "Soll der Raum %(name)s aus dem Verzeichnis entfernt werden?",
- "remove %(name)s from the directory": "entferne %(name)s aus dem Verzeichnis",
+ "remove %(name)s from the directory.": "entferne %(name)s aus dem Verzeichnis.",
"Resend": "Erneut senden",
"Source URL": "Quell-URL",
"Unable to look up room ID from server": "Es ist nicht möglich, die Raum-ID auf dem Server nachzuschlagen",
@@ -123,9 +122,51 @@
"Messages containing my display name": "Nachrichten, die meinen Anzeigenamen enthalten",
"Messages containing my user name": "Nachrichten, die meinen Nutzernamen enthalten",
"Messages in group chats": "Nachrichten in 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."
+ "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 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 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",
+ "Collapse panel": "Panel einklappen",
+ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s auf %(osName)s",
+ "A new version of Riot is available.": "Eine neue Version von Riot ist verfügbar.",
+ "All Rooms": "Alle Räume",
+ "Cancel": "Abbrechen",
+ "Changelog": "Änderungshistorie",
+ "Collecting app version information": "App-Versionsinformationen werden abgerufen",
+ "Collecting logs": "Protokolle werden abgerufen",
+ "Describe your problem here.": "Beschreibe dein Problem hier.",
+ "Failed to send report: ": "Senden des Reports fehlgeschlagen: ",
+ "Forward Message": "Leite Nachricht weiter",
+ "Hide panel": "Verberge Feld",
+ "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:": "Um Probleme zu diagnostizieren werden mit diesem Fehlerbericht Protokolle von diesem Client gesendet. Wenn du nur obigen text senden willst, deselektiere folgendes:",
+ "Loading bug report module": "Lade Fehlerbericht-Modul",
+ "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Bitte beschreibe (vorzugsweise auf Englisch) den Fehler. Was tatst du? Was wolltest du, dass es passiert? Was ist passiert?",
+ "Please describe the bug and/or send logs.": "Bitte beschreibe den Fehler und/oder sende Protokolle.",
+ "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": "Suchen",
+ "Search…": "Suchen…",
+ "Send": "Sende",
+ "Send logs": "Sende Protokolle",
+ "This Room": "Dieser Raum",
+ "Unavailable": "Nicht verfügbar",
+ "Unknown device": "Unbekanntes Gerät",
+ "Update": "Aktualisiere",
+ "Uploading report": "Lade Bericht hoch",
+ "What's New": "Was ist neu",
+ "What's new?": "Was ist neu?",
+ "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"
}
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 cc497eaf22..b57dbb65be 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -1,22 +1,30 @@
{
+ "%(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 whilst 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 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",
@@ -41,6 +49,7 @@
"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": "Favourite",
@@ -48,14 +57,18 @@
"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",
+ "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 untick:",
"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",
"Mentions only": "Mentions only",
@@ -78,6 +91,8 @@
"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",
@@ -86,14 +101,21 @@
"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 %(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.",
@@ -101,22 +123,31 @@
"The Home Server may be too old to support third party networks": "The Home Server may be too old to support third party networks",
"There are advanced notifications which are not shown here": "There are advanced notifications which are not shown here",
"The server may be unavailable or overloaded": "The server may be unavailable or overloaded",
- "This room is inaccessible to guests. You may be able to join if you register": "This room is inaccessible to guests. You may be able to join if you register",
+ "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",
@@ -127,6 +158,8 @@
"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!",
"Welcome to Riot.im": "Welcome to Riot.im",
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 616d628dae..9fd5dd5470 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -11,12 +11,12 @@
"Couldn't find a matching Matrix room": "No se encontró una sala Matrix que coincidiera",
"Custom Server Options": "Opciones de Servidor Personalizado",
"customServer_text": "Puedes utilizar las opciones de servidor personalizadas para iniciar sesión en otros servidores Matrix especificando una URL de Home server distinta. Esto te permite usar Riot con una cuenta Matrix existente en un Home server distinto. También puedes configurar un servidor de identidad personalizado, pero no podrás invitar usuarios por dirección de email, ni ser invitado por email por ti mismo.",
- "delete the alias": "borrar el alias",
+ "delete the alias.": "borrar el alias.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "¿Borrar la sala alias %(alias)s y retirar %(name)s del directorio?",
"Direct Chat": "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",
@@ -43,7 +43,7 @@
"Forget": "Olvidar",
" from room": " de la sala",
"Guests can join": "Los invitados se pueden unir",
- "Guest users can't invite users. Please register to invite": "Los usuarios invitados no pueden invitar usuarios. Por favor, regístrate para poder invitar",
+ "Guest users can't invite users. Please register to invite.": "Los usuarios invitados no pueden invitar usuarios. Por favor, regístrate para poder invitar.",
"Invite to this room": "Invitar a esta sala",
"Keywords": "Palabras clave",
"Leave": "Salir",
@@ -73,7 +73,7 @@
"Reject": "Rechazar",
"Remove %(name)s from the directory?": "¿Retirar %(name)s del directorio?",
"Remove": "Eliminar",
- "remove %(name)s from the directory": "retirar %(name)s del directorio",
+ "remove %(name)s from the directory.": "retirar %(name)s del directorio.",
"Remove from Directory": "Retirar del Directorio",
"Resend": "Reenviar",
"Riot does not know how to join a room on this network": "Riot no sabe cómo unirse a una sala en esta red",
@@ -86,7 +86,7 @@
"The Home Server may be too old to support third party networks": "El Home Server puede ser demasiado antiguo para soportar redes de terceros",
"There are advanced notifications which are not shown here": "Hay notificaciones avanzadas que no se muestran aquí",
"The server may be unavailable or overloaded": "El servidor puede estar no disponible o sobrecargado",
- "This room is inaccessible to guests. You may be able to join if you register": "Esta sala es inaccesible para los invitados. Puedes unirse si te registras",
+ "This room is inaccessible to guests. You may be able to join if you register.": "Esta sala es inaccesible para los invitados. Puedes unirse si te registras.",
" to room": " a la sala",
"Unable to fetch notification target list": "No se puede obtener la lista de objetivos de notificación",
"Unable to join network": "No se puede unir a la red",
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 08d578a55c..47fb52532c 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -3,36 +3,36 @@
"All messages": "Tous les messages",
"All messages (loud)": "Tous les messages (fort)",
"All notifications are currently disabled for all targets.": "Toutes les notifications sont désactivées pour tous les appareils.",
- "An error occurred whilst saving your email notification preferences.": "Une erreur est survenue lors de la sauvegarde de vos préférences de notifications mail.",
+ "An error occurred whilst saving your email notification preferences.": "Une erreur est survenue lors de la sauvegarde de vos préférences de notifications par e-mail.",
"Cancel Sending": "Annuler l'envoi",
"Can't update user notification settings": "Impossible de mettre à jour les notifications utilisateur",
"Close": "Fermer",
"Create new room": "Créer un nouveau salon",
"Couldn't find a matching Matrix room": "Impossible de trouver un salon Matrix",
- "Custom Server Options": "Options de Serveur Personnalisé",
- "delete the alias": "Supprimer l'alias",
+ "Custom Server Options": "Options de serveur personnalisées",
+ "delete the alias.": "Supprimer l'alias.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Supprimer l'alias %(alias)s du salon et supprimer %(name)s du répertoire ?",
"Direct Chat": "Conversation Directe",
"Directory": "Répertoire",
- "Dismiss": "Rejeter",
+ "Dismiss": "Ignorer",
"Download this file": "Télécharger ce fichier",
- "Drop here %(toAction)s": "Déposer ici pour %(toAction)s",
+ "Drop here %(toAction)s": "Déposer ici %(toAction)s",
"Enable audible notifications in web client": "Activer les notifications sonores pour le client web",
"Enable desktop notifications": "Activer les notifications de bureau",
"Enable email notifications": "Activer les notifications par e-mail",
"Enable notifications for this account": "Activer les notifications pour ce compte",
"Enable them now": "Les activer maintenant",
- "Enter keywords separated by a comma:": "Entrez les mots clés séparés par une virgule",
+ "Enter keywords separated by a comma:": "Entrez les mots clés séparés par une virgule :",
"Error": "Erreur",
"Error saving email notification preferences": "Erreur lors de la sauvegarde des notifications par email",
"#example": "#exemple",
- "Failed to": "Echec pour",
- "Failed to add tag %(tagName)s to room": "Echec lors de l'ajout du tag %(tagName)s pour le salon",
- "Failed to change settings": "Changement de configuration échouée",
- "Failed to forget room %(errCode)s": "Echec lors de l'oublie du salon %(errCode)s",
- "Failed to update keywords": "Échec dans la mise à jour des mots clés",
- "Failed to get protocol list from Home Server": "Echec lors de la récupération depuis le serveur maison",
- "Failed to get public room list": "Echec lors de la récupération de la liste des salons publics",
+ "Failed to": "Échec pour",
+ "Failed to add tag %(tagName)s to room": "Échec lors de l'ajout de l’étiquette %(tagName)s au salon",
+ "Failed to change settings": "Échec de la mise à jour des paramètres",
+ "Failed to forget room %(errCode)s": "Échec lors de l'oubli du salon %(errCode)s",
+ "Failed to update keywords": "Échec dans la mise à jour des mots-clés",
+ "Failed to get protocol list from Home Server": "Échec lors de la récupération de la liste sur le serveur",
+ "Failed to get public room list": "Échec lors de la récupération de la liste des salons publics",
"Failed to join the room": "Échec de l'adhésion au salon",
"Failed to remove tag %(tagName)s from room": "Échec dans la suppression de l’étiquette %(tagName)s du salon",
"Failed to set direct chat tag": "Échec dans l'attribution d'une étiquette dans le chat direct",
@@ -70,7 +70,7 @@
"Filter room names": "Filtrer les salons par nom",
"Forget": "Oublier",
" from room": " du salon",
- "Guest users can't invite users. Please register to invite": "Les visiteurs ne peuvent démarrer une discussion. Merci de vous enregistrer pour pouvoir démarrer une discussion",
+ "Guest users can't invite users. Please register to invite.": "Les visiteurs ne peuvent démarrer une discussion. Merci de vous enregistrer pour pouvoir démarrer une discussion.",
"Invite to this room": "Inviter dans ce salon",
"Keywords": "Mots-clés",
"Leave": "Quitter",
@@ -94,7 +94,7 @@
"Off": "Désactivé",
"On": "Activé",
"Permalink": "Permalien",
- "remove %(name)s from the directory": "supprimer %(name)s du répertoire",
+ "remove %(name)s from the directory.": "supprimer %(name)s du répertoire.",
"Remove from Directory": "Supprimer du répertoire",
"Riot does not know how to join a room on this network": "Riot ne peut pas joindre un salon sur ce réseau",
"Room directory": "Répertoire des salons",
@@ -104,7 +104,7 @@
"The Home Server may be too old to support third party networks": "Le Home Server semble trop ancien pour supporter des réseaux tiers",
"There are advanced notifications which are not shown here": "Il existe une configuration avancée des notifications qui ne peut être affichée ici",
"The server may be unavailable or overloaded": "Le serveur est indisponible ou surchargé",
- "This room is inaccessible to guests. You may be able to join if you register": "Ce salon n'est pas ouvert aux visiteurs. Vous pourrez peut-être le rejoindre si vous vous enregistrez",
+ "This room is inaccessible to guests. You may be able to join if you register.": "Ce salon n'est pas ouvert aux visiteurs. Vous pourrez peut-être le rejoindre si vous vous enregistrez.",
"Unable to fetch notification target list": "Impossible de récupérer la liste des appareils recevant les notifications",
"Unable to join network": "Impossible de rejoindre le réseau",
"Unable to look up room ID from server": "Impossible de récupérer l'ID du salon sur le serveur",
@@ -117,7 +117,49 @@
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Vous les avez probablement configurées dans un autre client que Riot. Vous ne pouvez pas les configurer dans Riot mais elles s'appliquent quand même",
"Guests can join": "Ouvert aux visiteurs",
" to room": " au salon",
- "Advanced notification settings": "Paramètres de notifications avancés",
+ "Advanced notification settings": "Paramètres de notification avancés",
"customServer_text": "Vous pouvez utiliser l'option de serveur personnalisé pour vous connectez à d'autres serveurs Matrix, en spécifiant une adresse de homerserver différente. Cela permet d'utiliser Riot avec un compte existant sur un homeserverdifférent. Vous pouvez aussi indiquer un serveur d'identité personnel mais vous ne pourrez plus inviter des utilisateurs par email, ou être invité par email.",
- "Notifications on the following keywords follow rules which can’t be displayed here:": "Les notifications pour les mots clés suivant répondent à des critères qui ne peuvent pas être affichés ici :"
+ "Notifications on the following keywords follow rules which can’t be displayed here:": "Les notifications pour les mots-clés suivant répondent à des critères qui ne peuvent pas être affichés ici :",
+ "Collapse panel": "Cacher le panneau",
+ "Expand panel": "Dévoiler le panneau",
+ "I understand the risks and wish to continue": "Je comprends les risques et souhaite continuer",
+ "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot utilise de nombreuses fonctionnalités avancées du navigateur, certaines ne sont pas disponibles ou expérimentales dans votre navigateur actuel.",
+ "Sorry, your browser is not able to run Riot.": "Désolé, Riot n'est pas supporté par votre navigateur.",
+ "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!": "Depuis votre navigateur actuel, le visuel et le ressenti de l'application pourraient être complètement incorrects, et certaines fonctionnalités pourraient ne pas être supportées. Vous pouvez continuer malgré tout, mais vous n'aurez pas de support si vous rencontrez des problèmes !",
+ "Please install Chrome or Firefox for the best experience.": "Veuillez installer Chrome ou Firefox pour une expérience optimale.",
+ "Safari and Opera work too.": "Safari et Opera fonctionnent aussi.",
+ "Messages containing keywords ": "Messages contenant des mots-clés ",
+ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s dans %(browserName)s sous %(osName)s",
+ "A new version of Riot is available.": "Une nouvelle version de Riot est disponible.",
+ "All Rooms": "Tous les salons",
+ "Cancel": "Annuler",
+ "Changelog": "Journal des modif.",
+ "Collecting app version information": "Récupération des info de version de l’application",
+ "Collecting logs": "Récupération des traces",
+ "Describe your problem here.": "Décrivez votre problème ici.",
+ "Failed to send report: ": "Échec de l’envoi du rapport : ",
+ "Forward Message": "Transférer le message",
+ "Hide panel": "Cacher le panneau",
+ "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:": "Afin de diagnostiquer le problème, les traces de ce client vont être envoyées avec ce rapport d’erreur. Si vous préférez seulement envoyer le texte ci-dessus, décochez la case :",
+ "Loading bug report module": "Chargement du module de rapport d’erreur",
+ "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Veuillez décrire le problème. Qu’avez-vous fait ? Quel comportement vous attendiez vous à voir ? Que s’est-il effectivement passé ?",
+ "Please describe the bug and/or send logs.": "Veuillez décrire le problème et/ou envoyer les traces.",
+ "Report a bug": "Reporter un problème",
+ "Riot Desktop on %(platformName)s": "Version bureau de Riot sur %(platformName)s",
+ "Riot is not supported on mobile web. Install the app?": "Riot Web n’est pas supporté sur mobile. Installer l’application ?",
+ "Search": "Rechercher",
+ "Search…": "Rechercher…",
+ "Send": "Envoyer",
+ "Send logs": "Envoyer les traces",
+ "This Room": "Ce salon",
+ "Unavailable": "Indisponible",
+ "Unknown device": "Appareil inconnu",
+ "Update": "Mettre à jour",
+ "Uploading report": "Téléchargement du rapport",
+ "What's New": "Nouveautés",
+ "What's new?": "Nouveautés ?",
+ "Waiting for response from server": "En attente d’une réponse du serveur",
+ "You are Rioting as a guest. Register or sign in to access more rooms and features!": "Vous utilisez Riot en tant que visiteur. Enregistrez vous ou identifiez vous pour accéder à plus de salons et de fonctionnalités !",
+ "You need to be using HTTPS to place a screen-sharing call.": "Vous devez utiliser HTTPS pour effectuer un appel en partage d’écran.",
+ "OK": "OK"
}
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index 09fa3df9e0..34e9904af9 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -12,7 +12,7 @@
"Create new room": "Új szoba készítés",
"Couldn't find a matching Matrix room": "Nem található a keresett Matrix szoba",
"Custom Server Options": "Egyedi szerver beállítások",
- "delete the alias": "becenév törlése",
+ "delete the alias.": "becenév törlése.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Törlöd a(z) %(alias)s szobát és kiveszed a könyvtárból ezt: %(name)s?",
"Direct Chat": "Közvetlen csevegés",
"Directory": "Könyvtár",
@@ -46,7 +46,7 @@
"Forget": "Elfelejt",
" from room": " szobából",
"Guests can join": "Vendégek csatlakozhatnak",
- "Guest users can't invite users. Please register to invite": "Vendég felhasználó nem küldhet meghívót. Kérlek regisztrálj meghívó küldéshez",
+ "Guest users can't invite users. Please register to invite.": "Vendég felhasználó nem küldhet meghívót. Kérlek regisztrálj meghívó küldéshez.",
"Invite to this room": "Meghívás a szobába",
"Keywords": "Kulcsszavak",
"Leave": "Elhagy",
@@ -64,5 +64,68 @@
"Noisy": "Hangos",
"Notification targets": "Értesítések célpontja",
"Notifications": "Értesítések",
- "Notify for all other messages/rooms": "Értesítés minden más üzenethez/szobához"
+ "Notify for all other messages/rooms": "Értesítés minden más üzenethez/szobához",
+ "Safari and Opera work too.": "Safari val és Opera val is működik.",
+ "Collapse panel": "Panel bezárása",
+ "customServer_text": "Egyedi Matrix szervert használhatsz a Saját szerver URL beállításával. Ezzel meglévő Matrix fiókot használhatsz Riot klienssel és egyedi szerverrel. Beállíthatsz egyedi \"identity\" szervert de akkor nem tudsz e-maillel meghívni felhasználót és téged sem tudnak meghívni e-maillel.",
+ "Expand panel": "Panel kinyitása",
+ "I understand the risks and wish to continue": "Megértettem a kockázatot és folytatom",
+ "Notifications on the following keywords follow rules which can’t be displayed here:": "A kulcsszavakhoz tartozó értesítések olyan szabályokat követnek amiket nem lehet itt megjeleníteni:",
+ "Notify me for anything else": "Értesíts minden egyéb esetben",
+ "Off": "Ki",
+ "On": "Be",
+ "Operation failed": "Művelet sikertelen",
+ "Permalink": "Állandó hivatkozás",
+ "Please install Chrome or Firefox for the best experience.": "A legjobb élmény érdekében telepíts Chrome ot vagy Firefox ot.",
+ "Please Register": "Regisztrálj",
+ "powered by Matrix": "Matrixon alapul",
+ "Quote": "Idézet",
+ "Redact": "Szerkeszt",
+ "Reject": "Elutasít",
+ "Remove %(name)s from the directory?": "Törlöd a %(name)s szobát a listából?",
+ "Remove": "Töröl",
+ "remove %(name)s from the directory.": "%(name)s szoba törlése a listából.",
+ "Remove from Directory": "Törlés a szobák listájából",
+ "Resend": "Újraküld",
+ "Riot does not know how to join a room on this network": "Riot nem tudja, hogy csatlakozzon ehhez a szobához ezen a hálózaton",
+ "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot sok haladó képességét használja a böngészőnek amik közül lehet, hogy nem mind érhető el a most használt böngészőben vagy még csak kísérleti jellegű.",
+ "Room directory": "Szobák listája",
+ "Room not found": "A szoba nem található",
+ "Search for a room": "Szoba keresése",
+ "Settings": "Beállítások",
+ "Source URL": "Forrás URL",
+ "Sorry, your browser is not able to run Riot.": "Elnézést, a böngésződ nem képes futtatni a Riotot.",
+ "Start chat": "Csevegés indítása",
+ "The Home Server may be too old to support third party networks": "A Saját szerver lehet, hogy túl régi ahhoz, hogy más hálózatokhoz tudjon kapcsolódni",
+ "There are advanced notifications which are not shown here": "Vannak haladó értesítések amik itt nincsenek megjelenítve",
+ "The server may be unavailable or overloaded": "A szerver nem érhető el vagy túl van terhelve",
+ "This room is inaccessible to guests. You may be able to join if you register.": "A szoba vendégek számára elérhetetlen. Csak regisztráció után tudsz csatlakozni.",
+ " to room": " szobába",
+ "Unable to fetch notification target list": "Nem sikerült letölteni az értesítési célok listáját",
+ "Unable to join network": "Nem sikerült kapcsolódni a hálózathoz",
+ "Unable to look up room ID from server": "Nem lehet lekérdezni a szoba ID-ját a szervertől",
+ "Unhide Preview": "Előkép felfedése",
+ "unknown error code": "ismeretlen hiba kód",
+ "Unnamed room": "Név nélküli szoba",
+ "Uploaded on %(date)s by %(user)s": "Feltöltés: %(date)s, %(user)s",
+ "View Decrypted Source": "Visszafejtett forrás megjelenítése",
+ "View Source": "Forrás megjelenítése",
+ "When I'm invited to a room": "Amikor meghívtak a szobába",
+ "World readable": "Mindenki olvashatja",
+ "You cannot delete this image. (%(code)s)": "Nem törölheted ezt a képet. (%(code)s)",
+ "You cannot delete this message. (%(code)s)": "Nem törölheted ezt az üzenetet. (%(code)s)",
+ "You are not receiving desktop notifications": "Nem fogadsz asztali értesítéseket",
+ "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Valószínűleg Riottól eltérő klienssel állítottad be. Riotból nem állítható de érvényben van",
+ "Sunday": "Vasárnap",
+ "Monday": "Hétfő",
+ "Tuesday": "Kedd",
+ "Wednesday": "Szerda",
+ "Thursday": "Csütörtök",
+ "Friday": "Péntek",
+ "Saturday": "Szombat",
+ "Today": "Ma",
+ "Yesterday": "Tegnap",
+ "Welcome page": "Üdvözlő oldal",
+ "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "A jelenlegi bőngésződdel teljesen hibás lehet az alkalmazás kinézete és bizonyos funkciók, ha nem az összes, nem fog működni. Ha mindenképpen ki akarod próbálni, folytathatod de egyedül vagy minden felbukkanó problémával!",
+ "Messages containing keywords ": "Az üzenet kulcsszavakat tartalmaz"
}
diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json
index ed503025b3..813abc6efb 100644
--- a/src/i18n/strings/nb_NO.json
+++ b/src/i18n/strings/nb_NO.json
@@ -9,5 +9,117 @@
"Can't update user notification settings": "Kan ikke oppdatere brukervarsel innstillinger",
"Close": "Lukk",
"Create new room": "Opprett nytt rom",
- "Couldn't find a matching Matrix room": "Kunne ikke finne et samsvarende Matrix rom"
+ "Couldn't find a matching Matrix room": "Kunne ikke finne et samsvarende Matrix rom",
+ "Safari and Opera work too.": "Safari og Opera fungerer også.",
+ "Call invitation": "Anropsinvitasjon",
+ "Collapse panel": "Skjul panel",
+ "Custom Server Options": "Tilpassede serveralternativer",
+ "customServer_text": "Du kan benytte de egendefinerte serveralternativene til å logge deg på andre Matrix-servere ved å spesifisere en annen Hjemmeserver-URL. Dette lar deg benytte Riot med en eksisterende Matrix konto på en annen hjemmeserver. Du kan også angi en egendefinert identitetsserver, men du vil ikke kunne invitere brukere via e-post, eller bli invitert via e-post selv.",
+ "delete the alias.": "Slett aliaset.",
+ "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Slett rom alias %(alias)s og fjern %(name)s fra katalogen?",
+ "Direct Chat": "Direkte Chat",
+ "Directory": "Katalog",
+ "Download this file": "Last ned filen",
+ "Drop here %(toAction)s": "Dra hit %(toAction)s",
+ "Enable audible notifications in web client": "Aktiver lyd-varsel i webklient",
+ "Enable desktop notifications": "Aktiver skrivebordsvarsler",
+ "Enable email notifications": "Aktiver e-postvarsler",
+ "Enable notifications for this account": "Aktiver varsler for denne konto",
+ "Enable them now": "Aktiver dem nå",
+ "Enter keywords separated by a comma:": "Angi nøkkelord adskilt med komma:",
+ "Error": "Feil",
+ "Error saving email notification preferences": "Feil ved lagring av e-postvarselinnstillinger",
+ "#example": "#eksempel",
+ "Expand panel": "Utvid panel",
+ "Failed to": "Feilet å",
+ "Failed to add tag %(tagName)s to room": "Kunne ikke legge til tagg %(tagName)s til rom",
+ "Failed to change settings": "Kunne ikke endre innstillingene",
+ "Failed to forget room %(errCode)s": "Kunne ikke glemme rommet %(errCode)s",
+ "Failed to update keywords": "Kunne ikke oppdatere nøkkelord",
+ "Failed to get protocol list from Home Server": "Kunne ikke hente protokolliste fra Hjemme-Server",
+ "Failed to get public room list": "Kunne ikke hente offentlig romliste",
+ "Failed to join the room": "Kunne ikke bli med på rommet",
+ "Failed to remove tag %(tagName)s from room": "Kunne ikke fjerne tagg %(tagName)s fra rommet",
+ "Failed to set direct chat tag": "Kunne ikke angi direkte chat-tagg",
+ "Failed to set Direct Message status of room": "Kunne ikke angi status for direkte melding i rommet",
+ "Favourite": "Favoritt",
+ "Fetching third party location failed": "Kunne ikke hente tredjeparts lokalisering",
+ "Files": "Filer",
+ "Filter room names": "Filtrer romnavn",
+ "Forget": "Glem",
+ " from room": " fra rommet",
+ "Guests can join": "Gjester kan bli med",
+ "Guest users can't invite users. Please register to invite.": "Gjester kan ikke invitere brukere. Vennligst registrer deg for å invitere.",
+ "I understand the risks and wish to continue": "Jeg forstår risikoen og ønsker å fortsette",
+ "Invite to this room": "Inviter til dette rommet",
+ "Keywords": "Nøkkelord",
+ "Leave": "Forlat",
+ "Low Priority": "Lav Prioritet",
+ "Members": "Medlemmer",
+ "Messages containing my display name": "Meldinger som inneholder mitt visningsnavn",
+ "Messages containing my user name": "Meldinger som inneholder mitt brukernavn",
+ "Messages in group chats": "Meldinger i gruppesamtaler",
+ "Messages in one-to-one chats": "Meldinger i en-til-en samtaler",
+ "Messages sent by bot": "Meldinger sendt av bot",
+ "more": "mer",
+ "No rooms to show": "Ingen rom å vise",
+ "Noisy": "Bråkete",
+ "Notification targets": "Mål for varsel",
+ "Notifications": "Varsler",
+ "Notifications on the following keywords follow rules which can’t be displayed here:": "Varsler på de følgende nøkkelordene følger regler som ikke kan vises her:",
+ "Notify for all other messages/rooms": "Varsler om alle andre meldinger/rom",
+ "Notify me for anything else": "Varsle meg om alt annet",
+ "Off": "Av",
+ "On": "På",
+ "Permalink": "Permanent lenke",
+ "Please install Chrome or Firefox for the best experience.": "Vennligst installer Chrome eller Firefox for den beste opplevelsen.",
+ "Please Register": "Vennligst registrer deg",
+ "powered by Matrix": "benytter seg av Matrix",
+ "Quote": "Sitat",
+ "Redact": "Maskere",
+ "Reject": "Avvis",
+ "Remove %(name)s from the directory?": "Fjern %(name)s fra katalogen?",
+ "Remove": "Fjern",
+ "remove %(name)s from the directory.": "fjern %(name)s fra katalogen.",
+ "Remove from Directory": "Fjern fra katalogen",
+ "Resend": "Send på nytt",
+ "Riot does not know how to join a room on this network": "Riot vet ikke hvordan man kan komme inn på et rom på dette nettverket",
+ "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot benytter mange avanserte nettleserfunksjoner, og noen av disse er ikke tilgjengelige eller er eksperimentelle på din nåværende nettleser.",
+ "Room directory": "Rom katalog",
+ "Room not found": "Rommet ble ikke funnet",
+ "Search for a room": "Søk etter et rom",
+ "Settings": "Innstillinger",
+ "Source URL": "Kilde URL",
+ "Sorry, your browser is not able to run Riot.": "Beklager, din nettleser er ikke i stand til å kjøre Riot.",
+ "Start chat": "Start chat",
+ "The Home Server may be too old to support third party networks": "Hjemme-serveren kan være for gammel til å støtte tredjeparts-nettverk",
+ "There are advanced notifications which are not shown here": "Det er avanserte varsler som ikke vises her",
+ "The server may be unavailable or overloaded": "Serveren kan være utilgjengelig eller overbelastet",
+ "This room is inaccessible to guests. You may be able to join if you register.": "Dette rommet er ikke tilgjengelig for gjester. Du kan kanskje komme inn om du registrerer deg.",
+ " to room": " til rom",
+ "Unable to fetch notification target list": "Kunne ikke hente varsel-mål liste",
+ "Unable to join network": "Kunne ikke bli med i nettverket",
+ "Unable to look up room ID from server": "Kunne ikke slå opp rom-ID fra serveren",
+ "Unhide Preview": "Vis forhåndsvisning",
+ "unknown error code": "ukjent feilkode",
+ "Unnamed room": "Rom uten navn",
+ "Uploaded on %(date)s by %(user)s": "Lastet opp den %(date)s av %(user)s",
+ "View Decrypted Source": "Vis dekryptert kilde",
+ "View Source": "Vis kilde",
+ "When I'm invited to a room": "Når jeg blir invitert til et rom",
+ "World readable": "Verden lesbar",
+ "You cannot delete this image. (%(code)s)": "Du kan ikke slette dette bildet. (%(code)s)",
+ "You cannot delete this message. (%(code)s)": "Du kan ikke slette denne meldingen. (%(code)s)",
+ "You are not receiving desktop notifications": "Du mottar ikke skrivebords varsler",
+ "Messages containing keywords ": "Meldinger som inneholder nøkkelord ",
+ "Sunday": "Søndag",
+ "Monday": "Mandag",
+ "Tuesday": "Tirsdag",
+ "Wednesday": "Onsdag",
+ "Thursday": "Torsdag",
+ "Friday": "Fredag",
+ "Saturday": "Lørdag",
+ "Today": "I dag",
+ "Yesterday": "I går",
+ "Welcome page": "Velkomst side"
}
diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json
index 28e0ac3010..3ecffb3e72 100644
--- a/src/i18n/strings/nl.json
+++ b/src/i18n/strings/nl.json
@@ -13,7 +13,7 @@
"Couldn't find a matching Matrix room": "Het is niet gelukt om een bijbehorende Matrix kamer te vinden",
"Custom Server Options": "Aangepaste server instellingen",
"customServer_text": "Je kunt de aangepaste server instellingen gebruiken om in te loggen bij andere Matrix servers door een andere home server URL in te voeren. Dit maakt het mogelijk om Riot te gebruiken met een bestaand Matrix account op een andere home server. Je kunt ook een aangepaste identiteit server instellen, maar het is dan niet mogelijk om gebruikers uit te nodigen met behulp van een email adres of zelf uitgenodigt te worden met een email adres.",
- "delete the alias": "verwijder de alias",
+ "delete the alias.": "verwijder de alias.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Verwijder de alias %(alias)s en verwijder %(name)s uit de map?",
"Direct Chat": "Privé gesprek",
"Directory": "Kamer lijst",
@@ -45,7 +45,7 @@
"Forget": "Vergeten",
" from room": " van kamer",
"Guests can join": "Gasten kunnen toe treden",
- "Guest users can't invite users. Please register to invite": "Gasten kunnen geen gebruikers uitnodigen. Om anderen uit te nodigen zult u moeten registreren",
+ "Guest users can't invite users. Please register to invite.": "Gasten kunnen geen gebruikers uitnodigen. Om anderen uit te nodigen zult u moeten registreren.",
"Invite to this room": "Uitnodigen voor deze kamer",
"Keywords": "Trefwoorden",
"Leave": "Verlaten",
@@ -76,7 +76,7 @@
"Reject": "Afwijzen",
"Remove %(name)s from the directory?": "Verwijder %(name)s uit de kamer lijst?",
"Remove": "Verwijder",
- "remove %(name)s from the directory": "verwijder %(name)s uit de kamer lijst",
+ "remove %(name)s from the directory.": "verwijder %(name)s uit de kamer lijst.",
"Remove from Directory": "Verwijder uit de kamer lijst",
"Resend": "Opnieuw verzenden",
"Riot does not know how to join a room on this network": "Riot weet niet hoe het moet toetreden tot een kamer op dit netwerk",
@@ -89,7 +89,7 @@
"The Home Server may be too old to support third party networks": "De home server is misschien te oud om netwerken van derde partijen te ondersteunen",
"There are advanced notifications which are not shown here": "Er zijn geavanceerde notificaties die hier niet worden laten zien",
"The server may be unavailable or overloaded": "De server is misschien niet beschikbaar of overbeladen",
- "This room is inaccessible to guests. You may be able to join if you register": "Deze kamer is niet toegankelijk voor gasten. Je zou misschien toe kunnen treden als je geregistreerd bent",
+ "This room is inaccessible to guests. You may be able to join if you register.": "Deze kamer is niet toegankelijk voor gasten. Je zou misschien toe kunnen treden als je geregistreerd bent.",
" to room": " naar kamer",
"Unable to fetch notification target list": "Het is mislukt om de lijst van notificatie doelen op te halen",
"Unable to join network": "Het is mislukt om toe te treden tot dit netwerk",
@@ -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 d55488059c..63f8500c9c 100644
--- a/src/i18n/strings/pt.json
+++ b/src/i18n/strings/pt.json
@@ -1,115 +1,166 @@
{
- "Add an email address above to configure email notifications": "Adicione um endereço de email acima para configurar as 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 salvava 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",
"Close": "Fechar",
"Create new room": "Criar nova sala",
"Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix",
- "Custom Server Options": "Opções de customização do servidor",
- "delete the alias": "apagar o apelido da sala",
+ "Custom Server Options": "Opções para Servidor Personalizado",
+ "delete the alias.": "apagar o apelido da sala.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(name)s da lista pública?",
"Direct Chat": "Conversa pessoal",
"Directory": "Diretório",
- "Dismiss": "Encerrar",
- "Download this file": "Baixar este arquivo",
+ "Dismiss": "Descartar",
+ "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": "Falha ao mudar as preferências",
+ "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 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 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 definr a mensagem de status da sala",
+ "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",
- "Mute": "Mudo",
+ "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": "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",
- "powered by Matrix": "distribuído por Matrix",
+ "Please Register": "Por favor registe-se",
+ "powered by Matrix": "rodando a partir do Matrix",
"Quote": "Citar",
"Redact": "Remover",
"Reject": "Rejeitar",
"Remove": "Remover",
"Remove %(name)s from the directory?": "Remover %(name)s da lista pública de salas?",
- "remove %(name)s from the directory": "remover %(name)s da lista pública de salas",
+ "remove %(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",
- " to room": " na sala",
+ "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 possivel 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 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",
- "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os recipientes.",
"#example": "#exemplo",
"Failed to remove tag %(tagName)s from room": "Não foi possível remover a marcação %(tagName)s desta sala",
- "Notifications on the following keywords follow rules which can’t be displayed here": "As notificações sobre as palavras-chave abaixo seguem regras que não podem ser mostradas aqui",
- "Welcome page": "Página de boas vindas"
+ "Welcome page": "Página de boas-vindas",
+ "Advanced notification settings": "Configurações avançadas de notificação",
+ "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 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.",
+ "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.": "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": "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 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?": "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": "A enviar o relatório",
+ "What's New": "Novidades",
+ "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.": "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 7687d4c4c6..0619e52ada 100644
--- a/src/i18n/strings/pt_BR.json
+++ b/src/i18n/strings/pt_BR.json
@@ -9,14 +9,14 @@
"Close": "Fechar",
"Create new room": "Criar nova sala",
"Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix",
- "Custom Server Options": "Opções de personalização do servidor",
- "delete the alias": "apagar o apelido da sala",
+ "Custom Server Options": "Opções para Servidor Personalizado",
+ "delete the alias.": "apagar o apelido da sala.",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(name)s da lista pública?",
"Direct Chat": "Conversa pessoal",
"Directory": "Diretório",
- "Dismiss": "Encerrar",
+ "Dismiss": "Descartar",
"Download this file": "Baixar este arquivo",
- "Drop here %(toAction)s": "Arraste aqui para %(toAction)s",
+ "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",
@@ -42,9 +42,10 @@
"Files": "Arquivos",
"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.": "Usuários convidados não podem convidar outros usuários. Por gentileza se registre para enviar convites.",
"Invite to this room": "Convidar para esta sala",
"Keywords": "Palavras-chave",
"Leave": "Sair",
@@ -70,13 +71,13 @@
"Operation failed": "A operação falhou",
"Permalink": "Link permanente",
"Please Register": "Por favor, cadastre-se",
- "powered by Matrix": "distribuído por Matrix",
+ "powered by Matrix": "rodando a partir do Matrix",
"Quote": "Citar",
"Redact": "Remover",
"Reject": "Rejeitar",
"Remove": "Remover",
"Remove %(name)s from the directory?": "Remover %(name)s da lista pública de salas?",
- "remove %(name)s from the directory": "remover %(name)s da lista pública de salas",
+ "remove %(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",
@@ -89,7 +90,7 @@
"The Home Server may be too old to support third party networks": "O servidor pode ser muito antigo para suportar redes de terceiros",
"There are advanced notifications which are not shown here": "Existem opções avançadas que não são exibidas aqui",
"The server may be unavailable or overloaded": "O servidor pode estar inacessível ou sobrecarregado",
- "This room is inaccessible to guests. You may be able to join if you register": "Esta sala é inacessível para convidados. Você poderá entrar caso se registre",
+ "This room is inaccessible to guests. You may be able to join if you register.": "Esta sala é inacessível para convidados. Você poderá entrar caso se registre.",
" to room": " para sala",
"Unable to fetch notification target list": "Não foi possível obter a lista de alvos de notificação",
"Unable to join network": "Não foi possível conectar na rede",
@@ -119,5 +120,47 @@
"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",
"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."
+ "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.",
+ "Collapse panel": "Colapsar o painel",
+ "Expand panel": "Expandir o painel",
+ "I understand the risks and wish to continue": "Entendo os riscos e desejo 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.",
+ "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!",
+ "%(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",
+ "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.",
+ "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…",
+ "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",
+ "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!",
+ "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."
}
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index f2f2dbdf36..a642334258 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": "Настройки пользовательского сервера",
- "delete the alias": "удалить привязку",
+ "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,19 +27,19 @@
"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": "Гость не может приглашать пользователей. Зарегистрируйтесь для приглошений",
+ "Guest users can't invite users. Please register to invite.": "Гость не может приглашать пользователей. Зарегистрируйтесь для приглошений.",
"Invite to this room": "Пригласить в эту комнату",
"Keywords": "Ключевые слова",
"Leave": "Покинуть",
@@ -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,9 +68,9 @@
"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": "Эта комната недоступна для гостей. Вы можете присоединиться, если зарегистрируетесь",
+ "This room is inaccessible to guests. You may be able to join if you register.": "Эта комната недоступна для гостей. Вы можете присоединиться, если зарегистрируетесь.",
" to room": " к комнате",
"Unable to fetch notification target list": "Не удалось получить список целей уведомления",
"Unable to join network": "Не возможно присоединиться к сети",
@@ -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)",
@@ -112,7 +112,7 @@
"Quote": "Цитата",
"Redact": "Удалить",
"Remove %(name)s from the directory?": "Удалить %(name)s из каталога?",
- "remove %(name)s from the directory": "удалить %(name)s из каталога",
+ "remove %(name)s from the directory.": "удалить %(name)s из каталога.",
"Resend": "Переслать снова",
"Source URL": "Исходный URL",
"Welcome page": "Домашняя страница",
@@ -125,5 +125,47 @@
"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!": "Еали ваш браузер не корректно отображает информацию и все или некоторые фукции отключены, вы можете и дальше этим браузеом пользоваться но но ваши проблемы останутся с вами!"
}
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index 0d03a87806..98ef400600 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -13,7 +13,7 @@
"Couldn't find a matching Matrix room": "Kunde inte hitta ett matchande Matrix-rum",
"Custom Server Options": "Egna serverinställningar",
"customServer_text": "Du kan använda serverinställningarna för att logga in i en annan Matrix-server genom att specifiera en URL till en annan hemserver. 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",
+ "delete the alias.": "radera adressen.",
"Direct Chat": "Direkt chatt",
"Directory": "Katalog",
"Dismiss": "Avvisa",
@@ -24,7 +24,7 @@
"Enable email notifications": "Sätt på epostaviseringar",
"Enable notifications for this account": "Sätt på aviseringar för det här kontot",
"Enable them now": "Sätt på nu",
- "Enter keywords separated by a comma:": "Skriv in nyckelord, separerade med kommatecken",
+ "Enter keywords separated by a comma:": "Skriv in nyckelord, separerade med kommatecken:",
"Error": "Fel",
"Error saving email notification preferences": "Ett fel uppstod då epostaviseringsinställningarna sparades",
"Failed to": "Det gick inte att",
@@ -36,5 +36,126 @@
"Failed to get public room list": "Det gick inte att hämta listan över offentliga rum",
"Failed to join the room": "Det gick inte att ansluta till rummet",
"Failed to remove tag %(tagName)s from room": "Det gick inte att radera taggen %(tagName)s från rummet",
- "Failed to set direct chat tag": "Det gick inte att markera rummet som direkt chatt"
+ "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",
+ "Safari and Opera work too.": "Safari och Opera fungerar också.",
+ "A new version of Riot is available.": "En ny version av Riot är tillgänglig.",
+ "All Rooms": "Alla rum",
+ "Cancel": "Avbryt",
+ "Changelog": "Ändringslogg",
+ "Collapse panel": "Kollapsa panel",
+ "Describe your problem here.": "Beskriv problemet här.",
+ "Expand panel": "Öppna panel",
+ "Failed to send report: ": "Det gick inte att sända rapporten: ",
+ "Failed to set Direct Message status of room": "Det gick inte att sätta Direkt meddelande-status på rummet",
+ "Favourite": "Favorit",
+ "Files": "Filer",
+ "Filter room names": "Filtrera rumsnamn",
+ "Forget": "Glöm bort",
+ "Forward Message": "Vidarebefordra meddelande",
+ " from room": " från rum",
+ "Guests can join": "Gäster kan bli medlem i rummet",
+ "Guest users can't invite users. Please register to invite.": "Gäster kan inte skicka inbjudningar. Registrera dig för att bjuda in andra.",
+ "Hide panel": "Göm panel",
+ "I understand the risks and wish to continue": "Jag förstår riskerna och vill fortsätta",
+ "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:": "För att diagnostisera problem kommer loggar från den här klienten att sändas med rapporten. Om du bara vill sända texten ovan, kryssa av rutan:",
+ "Invite to this room": "Bjud in i rummet",
+ "Keywords": "Nyckelord",
+ "Leave": "Lämna",
+ "Loading bug report module": "Laddar buggrapportsmodul",
+ "Low Priority": "Låg prioritet",
+ "Members": "Medlemmar",
+ "Mentions only": "Endast omnämnande",
+ "Messages containing my display name": "Meddelanden som innehåller mitt namn",
+ "Messages containing keywords ": "Meddelanden som innehåller nyckelord ",
+ "Messages containing my user name": "Meddelanden som innehåller mitt användarnamn",
+ "Messages in group chats": "Meddelanden i gruppchattar",
+ "Messages in one-to-one chats": "Meddelanden i privata chattar",
+ "Messages sent by bot": "Meddelanden från bottar",
+ "more": "mera",
+ "Mute": "Dämpa",
+ "No rooms to show": "Inga fler rum att visa",
+ "Noisy": "Högljudd",
+ "Notification targets": "Aviseringsmål",
+ "Notifications": "Aviseringar",
+ "Notify for all other messages/rooms": "Avisera för alla andra meddelanden/rum",
+ "Notify me for anything else": "Avisera för allt annat",
+ "Off": "Av",
+ "On": "På",
+ "Permalink": "Permalink",
+ "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Beskriv buggen. Vad gjorde du? Vad förväntade du dig att ska hända? Vad hände?",
+ "Please describe the bug and/or send logs.": "Beskriv buggen och/eller sänd loggar.",
+ "Please install Chrome or Firefox for the best experience.": "Installera Chrome eller Firefox för den bästa upplevelsen.",
+ "Please Register": "Registrera dig",
+ "powered by Matrix": "drivs av Matrix",
+ "Quote": "Citera",
+ "Redact": "Dra tillbaka",
+ "Reject": "Avvisa",
+ "Remove %(name)s from the directory?": "Ta bort %(name)s från katalogen?",
+ "Remove": "Ta bort",
+ "remove %(name)s from the directory.": "ta bort %(name)s från katalogen.",
+ "Remove from Directory": "Ta bort från katalogen",
+ "Report a bug": "Rapportera en bugg",
+ "Resend": "Sänd igen",
+ "Riot Desktop on %(platformName)s": "Riot Desktop på %(platformName)s",
+ "Riot does not know how to join a room on this network": "Riot kan inte gå med i ett rum på det här nätverket",
+ "Riot is not supported on mobile web. Install the app?": "Riot stöds inte på mobil-webb. Installera appen?",
+ "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot använder flera avancerade webbläsaregenskaper, av vilka alla inte stöds eller är experimentella i din nuvarande webbläsare.",
+ "Room directory": "Rumskatalog",
+ "Room not found": "Rummet hittades inte",
+ "Search": "Sök",
+ "Search…": "Sök…",
+ "Search for a room": "Sök efter rum",
+ "Send": "Sänd",
+ "Send logs": "Sänd loggar",
+ "Settings": "Inställningar",
+ "Source URL": "Käll-URL",
+ "Sorry, your browser is not able to run Riot.": "Beklagar, din webbläsare kan inte köra Riot.",
+ "Start chat": "Starta chatt",
+ "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 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..5096a5b18a
--- /dev/null
+++ b/src/i18n/strings/th.json
@@ -0,0 +1,164 @@
+{
+ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s ผ่านทาง %(browserName)s บน %(osName)s",
+ "All messages": "ทุกข้อความ",
+ "Cancel": "ยกเลิก",
+ "Close": "ปิด",
+ "Error": "ข้อผิดพลาด",
+ "#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:": "การแจ้งเตือนจากคีย์เวิร์ดเหล่านี้ เป็นไปตามกฏที่ไม่สามารถแสดงที่นี่ได้:"
+}
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 9e26dfeeb6..d6f0930a77 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1 +1,164 @@
-{}
\ No newline at end of file
+{
+ "Direct Chat": "私聊",
+ "Drop here %(toAction)s": "拖拽到這里 %(toAction)s",
+ "Error": "錯誤",
+ "Failed to forget room %(errCode)s": "無法忘記聊天室 %(errCode)s",
+ "Failed to join the room": "無法加入此聊天室",
+ "Favourite": "收藏",
+ "Search": "搜索",
+ "Settings": "設置",
+ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s 透過 %(browserName)s 在 %(osName)s",
+ "Safari and Opera work too.": "Safari 與 Opera 也能使用。",
+ "Advanced notification settings": "進階通知設定",
+ "All messages": "所有訊息",
+ "All messages (loud)": "所有訊息 (loud)",
+ "All Rooms": "所有的聊天室",
+ "Call invitation": "通話邀請",
+ "Cancel": "取消",
+ "Cancel Sending": "取消傳送",
+ "Can't update user notification settings": "無法更新用戶的通知設定",
+ "Changelog": "變更記錄",
+ "Close": "關閉",
+ "Collapse panel": "閤上面版",
+ "Collecting logs": "收集記錄",
+ "Create new room": "開設新聊天室",
+ "Couldn't find a matching Matrix room": "不能找到符合 Matrix 的聊天室",
+ "Custom Server Options": "自定伺服器選項",
+ "delete the alias.": "刪除別名",
+ "Describe your problem here.": "在此描述你的問題",
+ "Directory": "目錄",
+ "Dismiss": "無視",
+ "Download this file": "下載這個檔案",
+ "Enable desktop notifications": "啟用桌面通知",
+ "Enable email notifications": "啟用電郵通知",
+ "Enable notifications for this account": "本帳號啟用通知",
+ "Enable them now": "現在啟用它們",
+ "#example": "#例子",
+ "Expand panel": "擴充面版",
+ "Failed to": "失敗於",
+ "Failed to change settings": "變更設定失敗",
+ "Failed to update keywords": "無法更新關鍵字",
+ "Members": "成員",
+ "Mentions only": "只有提到",
+ "Messages containing my display name": "訊息中有包含我的顯示名稱",
+ "Messages containing keywords ": "訊息包含 關鍵字 ",
+ "Messages containing my user name": "訊息中有我的用戶名",
+ "Messages in group chats": "在群組聊天中的訊息",
+ "Messages in one-to-one chats": "在一對一聊天中的訊息",
+ "Messages sent by bot": "由機器人送出的訊息",
+ "more": "更多",
+ "Mute": "靜音",
+ "No rooms to show": "無聊天室可顯示",
+ "Noisy": "吵鬧",
+ "Notifications": "通知",
+ "Off": "關閉",
+ "On": "開啟",
+ "Operation failed": "操作失敗",
+ "powered by Matrix": "由Matrix架設",
+ "Quote": "引述",
+ "Remove": "移除",
+ "Resend": "重新送出",
+ "Room directory": "聊天室目錄",
+ "Room not found": "未找到聊天室",
+ "Search…": "搜尋...",
+ "Search for a room": "搜尋聊天室",
+ "Send": "送出",
+ "Send logs": "送出記錄",
+ "Source URL": "來源網址",
+ "Start chat": "開始聊天",
+ "This Room": "這個聊天室",
+ "This room is inaccessible to guests. You may be able to join if you register.": "這個聊天室不對訪客開放,要加入須先註冊。",
+ " to room": "到聊天室",
+ "Unable to join network": "無法加入網路",
+ "Unable to look up room ID from server": "無法從伺服器找到聊天室 ID",
+ "Unavailable": "無法取得",
+ "Unhide Preview": "不隱藏預覽",
+ "Unknown device": "不知名的設備",
+ "unknown error code": "未知的錯誤代碼",
+ "Unnamed room": "無名的聊天室",
+ "Update": "更新",
+ "Uploaded on %(date)s by %(user)s": "由 %(user)s 在 %(date)s 更新",
+ "Uploading report": "上傳報告",
+ "View Decrypted Source": "檢示解密的來源",
+ "View Source": "檢示來源",
+ "What's New": "新鮮事",
+ "What's new?": "有什麼新聞?",
+ "Waiting for response from server": "等候來自伺服器的回應",
+ "When I'm invited to a room": "當我被邀請加入聊天室",
+ "You cannot delete this message. (%(code)s)": "你不能刪除這個訊息 (%(code)s)",
+ "Sunday": "星期日",
+ "Monday": "星期一",
+ "Tuesday": "星期二",
+ "Wednesday": "星期三",
+ "Thursday": "星期四",
+ "Friday": "星期五",
+ "Saturday": "星期六",
+ "Today": "今天",
+ "Yesterday": "昨天",
+ "OK": "OK",
+ "You need to be using HTTPS to place a screen-sharing call.": "你需要使用 HTTPS 來置放畫面分享的通話。",
+ "Welcome page": "歡迎頁",
+ "A new version of Riot is available.": " Riot 發佈了新版本",
+ "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.": "在儲存你的電郵通知偏好時發生錯誤",
+ "Collecting app version information": "收集應用程式版本資訊",
+ "Delete the room alias %(alias)s and remove %(name)s from the directory?": "刪除聊天室別名 %(alias)s並從目錄移除 %(name)s",
+ "Enable audible notifications in web client": "在網頁客戶端設定聲音通知",
+ "Enter keywords separated by a comma:": "輸入關鍵字以逼號,區隔",
+ "Error saving email notification preferences": "儲存電郵通知偏好時出錯",
+ "Failed to add tag %(tagName)s to room": "無法為聊天室新增標籤 %(tagName)s",
+ "Failed to get protocol list from Home Server": "無法從主機伺服器取得協議清單",
+ "Failed to get public room list": "無法取得公開的聊天室清單",
+ "Failed to remove tag %(tagName)s from room": "移除聊天室的標籤 %(tagName)s 失敗",
+ "Failed to send report: ": "無法傳送報告:",
+ "Failed to set direct chat tag": "無法設定直接聊天標籤",
+ "Failed to set Direct Message status of room": "無法設定聊天室的私訊狀態",
+ "Fetching third party location failed": "抓取第三方位置失敗",
+ "Files": "檔案",
+ "Filter room names": "過濾聊天室名稱",
+ "Forget": "忘記",
+ "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": "離開",
+ "Loading bug report module": "載入程式臭蟲報告模組",
+ "Low Priority": "低度優先",
+ "Notify for all other messages/rooms": "通知所有其它的訊息/聊天室",
+ "Notify me for anything else": "所有消息都通知我",
+ "Permalink": "永久鏈接",
+ "Please install Chrome or Firefox for the best experience.": "諘安裝 Chrome 或 Firefox 來取得最佳體驗。",
+ "Please Register": "請註冊",
+ "Redact": "纂輯\t",
+ "Reject": "拒絕",
+ "Remove %(name)s from the directory?": "自目錄中移除 %(name)s?",
+ "remove %(name)s from the directory.": "自目錄中移除 %(name)s",
+ "Remove from Directory": "自目錄中移除",
+ "Report a bug": "回報程式臭蟲",
+ "Riot Desktop on %(platformName)s": "Riot 在 %(platformName)s 桌面",
+ "Riot does not know how to join a room on this network": "Riot 不知道如何在此網路中加入聊天室",
+ "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": "無法抓取通知的目標清單",
+ "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 c285ae91ed..4637530b56 100644
--- a/src/skins/vector/css/_components.scss
+++ b/src/skins/vector/css/_components.scss
@@ -35,6 +35,7 @@
@import "./matrix-react-sdk/views/messages/_MImageBody.scss";
@import "./matrix-react-sdk/views/messages/_MNoticeBody.scss";
@import "./matrix-react-sdk/views/messages/_MTextBody.scss";
+@import "./matrix-react-sdk/views/messages/_RoomAvatarEvent.scss";
@import "./matrix-react-sdk/views/messages/_TextualEvent.scss";
@import "./matrix-react-sdk/views/messages/_UnknownBody.scss";
@import "./matrix-react-sdk/views/rooms/_Autocomplete.scss";
diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss
index f6ba2321c8..1ae2a47c86 100644
--- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss
+++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss
@@ -175,3 +175,22 @@ limitations under the License.
margin-top: -2px;
}
+.mx_MatrixChat_useCompactLayout {
+ .mx_RoomStatusBar {
+ min-height: 40px;
+ }
+
+ .mx_RoomStatusBar_indicator {
+ margin-top: 10px;
+ }
+
+ .mx_RoomStatusBar_callBar {
+ height: 40px;
+ line-height: 40px;
+ }
+
+ .mx_RoomStatusBar_typingBar {
+ height: 40px;
+ line-height: 40px;
+ }
+}
diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss
index 3d5fe02963..6fd44d26f5 100644
--- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss
+++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss
@@ -260,4 +260,14 @@ hr.mx_RoomView_myReadMarker {
.mx_RoomView_ongoingConfCallNotification a {
color: $accent-fg-color ! important;
-}
\ No newline at end of file
+}
+
+.mx_MatrixChat_useCompactLayout {
+ .mx_RoomView_MessageList {
+ margin-bottom: 4px;
+ }
+
+ .mx_RoomView_statusAreaBox {
+ min-height: 42px;
+ }
+}
diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss
index f72a6f0858..3075135af2 100644
--- a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss
+++ b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss
@@ -231,7 +231,8 @@ input.mx_UserSettings_phoneNumberField {
display: none;
}
-.mx_UserSettings_advanced_spoiler {
+.mx_UserSettings_advanced_spoiler,
+.mx_UserSettings_link {
cursor: pointer;
color: $accent-color;
word-break: break-all;
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 b81f3979a9..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
@@ -176,8 +176,9 @@ limitations under the License.
.mx_Login_type_dropdown {
display: inline-block;
- min-width: 125px;
+ 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/elements/_AccessibleButton.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_AccessibleButton.scss
index 41dd976960..edf455049b 100644
--- a/src/skins/vector/css/matrix-react-sdk/views/elements/_AccessibleButton.scss
+++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_AccessibleButton.scss
@@ -19,3 +19,6 @@ limitations under the License.
filter: brightness($focus-brightness);
}
+.mx_AccessibleButton {
+ cursor: pointer;
+}
\ No newline at end of file
diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss
index 1969bc2db0..1025052beb 100644
--- a/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss
+++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss
@@ -48,3 +48,13 @@ limitations under the License.
margin-left: 63px;
line-height: 30px;
}
+
+.mx_MatrixChat_useCompactLayout {
+ .mx_MemberEventListSummary_line {
+ line-height: 22px;
+ }
+
+ .mx_MemberEventListSummary_toggle {
+ margin-top: 2px;
+ }
+}
diff --git a/src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss b/src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss
index 1ad195de29..894ce19827 100644
--- a/src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss
+++ b/src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss
@@ -28,4 +28,9 @@ limitations under the License.
font-size: 13px;
font-weight: 300;
color: $primary-fg-color;
+}
+
+.mx_ServerConfig_selector {
+ text-align: center;
+ width: 302px; // for fr i18n
}
\ No newline at end of file
diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_RoomAvatarEvent.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_RoomAvatarEvent.scss
new file mode 100644
index 0000000000..9adce42eef
--- /dev/null
+++ b/src/skins/vector/css/matrix-react-sdk/views/messages/_RoomAvatarEvent.scss
@@ -0,0 +1,26 @@
+/*
+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_RoomAvatarEvent {
+ opacity: 0.5;
+ overflow-y: hidden;
+}
+
+.mx_RoomAvatarEvent_avatar {
+ display: inline;
+ position: relative;
+ top: 5px;
+}
\ No newline at end of file
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 d853f9396f..5542d18d0c 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
@@ -360,3 +360,67 @@ limitations under the License.
}
/* end of overrides */
+
+.mx_MatrixChat_useCompactLayout {
+ .mx_EventTile {
+ padding-top: 4px;
+ }
+
+ .mx_EventTile.mx_EventTile_info {
+ padding-top: 0px;
+ }
+
+ .mx_EventTile .mx_SenderProfile {
+ font-size: 13px;
+ }
+
+ .mx_EventTile.mx_EventTile_emote {
+ padding-top: 8px;
+ .mx_EventTile_avatar {
+ top: 2px;
+ }
+ .mx_EventTile_line {
+ padding-top: 0px;
+ padding-bottom: 1px;
+ }
+ }
+
+ .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation {
+ padding-top: 0;
+ .mx_EventTile_line {
+ padding-top: 0px;
+ padding-bottom: 0px;
+ }
+ }
+
+ .mx_EventTile_line {
+ padding-top: 0px;
+ padding-bottom: 0px;
+ }
+
+ .mx_EventTile_avatar {
+ top: 2px;
+ }
+
+ .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar {
+ top: 5px;
+ }
+
+ .mx_EventTile_e2eIcon {
+ top: 7px;
+ }
+
+ .mx_EventTile_readAvatars {
+ top: 27px;
+ }
+
+ .mx_EventTile_continuation .mx_EventTile_readAvatars,
+ .mx_EventTile_info .mx_EventTile_readAvatars,
+ .mx_EventTile_emote .mx_EventTile_readAvatars {
+ top: 5px;
+ }
+
+ .mx_RoomView_MessageList h2 {
+ margin-top: 6px;
+ }
+}
diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss
index 1d8261d711..4495b142e6 100644
--- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss
+++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss
@@ -60,3 +60,10 @@ limitations under the License.
.mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel {
visibility: visible;
}
+
+.mx_MatrixChat_useCompactLayout {
+ .mx_LinkPreviewWidget {
+ margin-top: 6px;
+ margin-bottom: 6px;
+ }
+}
diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss
index 525cc1f654..85c0e2c762 100644
--- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss
+++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss
@@ -200,3 +200,13 @@ limitations under the License.
padding: 4px 4px 4px 0;
opacity: 0.8;
}
+
+.mx_MatrixChat_useCompactLayout {
+ .mx_MessageComposer_input {
+ min-height: 50px;
+ }
+
+ .mx_MessageComposer_noperm_error {
+ height: 50px;
+ }
+}
diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss
index 7b76eb7f98..1ee56d9532 100644
--- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss
+++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss
@@ -44,3 +44,10 @@ limitations under the License.
padding-top: 3px;
cursor: pointer;
}
+
+.mx_MatrixChat_useCompactLayout {
+ .mx_TopUnreadMessagesBar {
+ padding-top: 4px;
+ padding-bottom: 4px;
+ }
+}
diff --git a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss
index dbe745f799..418358dd65 100644
--- a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss
+++ b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss
@@ -90,3 +90,17 @@ limitations under the License.
.mx_LeftPanel.collapsed .mx_BottomLeftMenu_settings {
float: none;
}
+
+.mx_MatrixChat_useCompactLayout {
+ .mx_LeftPanel .mx_BottomLeftMenu {
+ flex: 0 0 50px;
+ }
+
+ .mx_LeftPanel.collapsed .mx_BottomLeftMenu {
+ flex: 0 0 160px;
+ }
+
+ .mx_LeftPanel .mx_BottomLeftMenu_options {
+ margin-top: 12px;
+ }
+}
diff --git a/src/skins/vector/css/vector-web/structures/_RightPanel.scss b/src/skins/vector/css/vector-web/structures/_RightPanel.scss
index bb60fa1e7e..056e9bd338 100644
--- a/src/skins/vector/css/vector-web/structures/_RightPanel.scss
+++ b/src/skins/vector/css/vector-web/structures/_RightPanel.scss
@@ -118,3 +118,14 @@ limitations under the License.
vertical-align: top;
padding-left: 10px
}
+
+.mx_MatrixChat_useCompactLayout {
+ .mx_RightPanel_footer {
+ flex: 0 0 50px;
+ }
+
+ .mx_RightPanel_footer .mx_RightPanel_invite {
+ line-height: 25px;
+ padding-top: 8px;
+ }
+}
diff --git a/src/vector/index.html b/src/vector/index.html
index 38810f62c1..49c2979ed1 100644
--- a/src/vector/index.html
+++ b/src/vector/index.html
@@ -36,7 +36,7 @@
- Sorry, Riot requires JavaScript to be enabled.
+ Sorry, Riot requires JavaScript to be enabled.
<% for (var i=0; i < htmlWebpackPlugin.files.js.length; i++) {
// Not a particularly graceful way of not putting the indexeddb worker script
// into the main page
diff --git a/src/vector/index.js b/src/vector/index.js
index 432710fbc2..9f16205164 100644
--- a/src/vector/index.js
+++ b/src/vector/index.js
@@ -245,13 +245,13 @@ async function loadApp() {
if (!preventRedirect) {
if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) {
- if (confirm("Riot is not supported on mobile web. Install the app?")) {
+ if (confirm(languageHandler._t("Riot is not supported on mobile web. Install the app?"))) {
window.location = "https://itunes.apple.com/us/app/vector.im/id1083446067";
return;
}
}
else if (/Android/.test(navigator.userAgent)) {
- if (confirm("Riot is not supported on mobile web. Install the app?")) {
+ if (confirm(languageHandler._t("Riot is not supported on mobile web. Install the app?"))) {
window.location = "https://play.google.com/store/apps/details?id=im.vector.alpha";
return;
}
@@ -278,7 +278,6 @@ async function loadApp() {
, document.getElementById('matrixchat'));
} else if (validBrowser) {
UpdateChecker.start();
-
const MatrixChat = sdk.getComponent('structures.MatrixChat');
window.matrixChat = ReactDOM.render(
{
return q('granted');
}
diff --git a/src/vector/platform/VectorBasePlatform.js b/src/vector/platform/VectorBasePlatform.js
index 04caecdc2d..76707d1d58 100644
--- a/src/vector/platform/VectorBasePlatform.js
+++ b/src/vector/platform/VectorBasePlatform.js
@@ -18,6 +18,8 @@ limitations under the License.
*/
import BasePlatform from 'matrix-react-sdk/lib/BasePlatform';
+import { _t } from 'matrix-react-sdk/lib/languageHandler';
+
import Favico from 'favico.js';
/**
@@ -36,7 +38,7 @@ export default class VectorBasePlatform extends BasePlatform {
}
getHumanReadableName(): string {
- return 'Vector Base Platform';
+ return 'Vector Base Platform'; // no translation required: only used for analytics
}
_updateFavicon() {
@@ -94,6 +96,6 @@ export default class VectorBasePlatform extends BasePlatform {
* device Vector is running on
*/
getDefaultDeviceDisplayName(): string {
- return "Unknown device";
+ return _t("Unknown device");
}
}
diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js
index 1a3c46fb0b..8397a7f703 100644
--- a/src/vector/platform/WebPlatform.js
+++ b/src/vector/platform/WebPlatform.js
@@ -20,6 +20,7 @@ limitations under the License.
import VectorBasePlatform from './VectorBasePlatform';
import request from 'browser-request';
import dis from 'matrix-react-sdk/lib/dispatcher.js';
+import { _t } from 'matrix-react-sdk/lib/languageHandler';
import q from 'q';
import url from 'url';
@@ -32,7 +33,7 @@ export default class WebPlatform extends VectorBasePlatform {
}
getHumanReadableName(): string {
- return 'Web Platform';
+ return 'Web Platform'; // no translation required: only used for analytics
}
/**
@@ -159,13 +160,15 @@ export default class WebPlatform extends VectorBasePlatform {
const appName = u.format();
const ua = new UAParser();
- return `${appName} via ${ua.getBrowser().name} on ${ua.getOS().name}`;
+ const browserName = ua.getBrowser().name;
+ const osName = ua.getOS().name;
+ return _t('%(appName)s via %(browserName)s on %(osName)s', {appName: appName, browserName: browserName, osName: osName});
}
screenCaptureErrorString(): ?string {
// it won't work at all if you're not on HTTPS so whine whine whine
if (!global.window || global.window.location.protocol !== "https:") {
- return "You need to be using HTTPS to place a screen-sharing call.";
+ return _t("You need to be using HTTPS to place a screen-sharing call.");
}
return null;
}
diff --git a/src/vector/submit-rageshake.js b/src/vector/submit-rageshake.js
index 45b427e899..c6c551c61f 100644
--- a/src/vector/submit-rageshake.js
+++ b/src/vector/submit-rageshake.js
@@ -19,6 +19,7 @@ import q from "q";
import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';
import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';
+import { _t } from 'matrix-react-sdk/lib/languageHandler';
import rageshake from './rageshake'
@@ -53,7 +54,7 @@ export default async function sendBugReport(bugReportEndpoint, opts) {
opts = opts || {};
const progressCallback = opts.progressCallback || (() => {});
- progressCallback("Collecting app version information");
+ progressCallback(_t("Collecting app version information"));
let version = "UNKNOWN";
try {
version = await PlatformPeg.get().getAppVersion();
@@ -81,7 +82,7 @@ export default async function sendBugReport(bugReportEndpoint, opts) {
}
if (opts.sendLogs) {
- progressCallback("Collecting logs");
+ progressCallback(_t("Collecting logs"));
const logs = await rageshake.getLogsForReport();
for (let entry of logs) {
// encode as UTF-8
@@ -94,7 +95,7 @@ export default async function sendBugReport(bugReportEndpoint, opts) {
}
}
- progressCallback("Uploading report");
+ progressCallback(_t("Uploading report"));
await _submitReport(bugReportEndpoint, body, progressCallback);
}
@@ -106,7 +107,7 @@ function _submitReport(endpoint, body, progressCallback) {
req.timeout = 5 * 60 * 1000;
req.onreadystatechange = function() {
if (req.readyState === XMLHttpRequest.LOADING) {
- progressCallback("Waiting for response from server");
+ progressCallback(_t("Waiting for response from server"));
} else if (req.readyState === XMLHttpRequest.DONE) {
on_done();
}
diff --git a/webpack.config.js b/webpack.config.js
index efeab7fe8b..5d4fef72a9 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -10,7 +10,7 @@ module.exports = {
// We ship olm.js as a separate lump of javascript. This makes it get
// loaded via a separate tag in index.html (which loads it
- // into the browser global `Olm`), and define it as an external below.
+ // into the browser global `Olm`, where js-sdk expects to find it).
//
// (we should probably make js-sdk load it asynchronously at some
// point, so that it doesn't block the pageload, but that is a separate
@@ -99,7 +99,6 @@ module.exports = {
},
},
externals: {
- "olm": "Olm",
// Don't try to bundle electron: leave it as a commonjs dependency
// (the 'commonjs' here means it will output a 'require')
"electron": "commonjs electron",