);
@@ -168,13 +89,9 @@ export default class DevicesPanelEntry extends React.Component {
DevicesPanelEntry.propTypes = {
device: React.PropTypes.object.isRequired,
- onDeleted: React.PropTypes.func,
-};
-
-DevicesPanelEntry.contextTypes = {
- authCache: React.PropTypes.object,
+ onDeviceToggled: React.PropTypes.func,
};
DevicesPanelEntry.defaultProps = {
- onDeleted: function() {},
+ onDeviceToggled: function() {},
};
diff --git a/src/components/views/voip/VideoFeed.js b/src/components/views/voip/VideoFeed.js
index 953dbc866f..f955df62d9 100644
--- a/src/components/views/voip/VideoFeed.js
+++ b/src/components/views/voip/VideoFeed.js
@@ -39,7 +39,7 @@ module.exports = React.createClass({
},
onResize: function(e) {
- if(this.props.onResize) {
+ if (this.props.onResize) {
this.props.onResize(e);
}
},
diff --git a/src/components/views/voip/VideoView.js b/src/components/views/voip/VideoView.js
index 8f062d27ae..44e7a47f02 100644
--- a/src/components/views/voip/VideoView.js
+++ b/src/components/views/voip/VideoView.js
@@ -18,10 +18,13 @@ limitations under the License.
import React from 'react';
import ReactDOM from 'react-dom';
+import classNames from 'classnames';
import sdk from '../../../index';
import dis from '../../../dispatcher';
+import SettingsStore from "../../../settings/SettingsStore";
+
module.exports = React.createClass({
displayName: 'VideoView',
@@ -108,14 +111,18 @@ module.exports = React.createClass({
document.mozFullScreenElement ||
document.webkitFullscreenElement);
const maxVideoHeight = fullscreenElement ? null : this.props.maxHeight;
-
+ const localVideoFeedClasses = classNames("mx_VideoView_localVideoFeed",
+ { "mx_VideoView_localVideoFeed_flipped":
+ SettingsStore.getValue('VideoView.flipVideoHorizontally'),
+ },
+ );
return (
-
diff --git a/src/cryptodevices.js b/src/cryptodevices.js
new file mode 100644
index 0000000000..c93e04253f
--- /dev/null
+++ b/src/cryptodevices.js
@@ -0,0 +1,104 @@
+/*
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import Resend from './Resend';
+import sdk from './index';
+import Modal from './Modal';
+import { _t } from './languageHandler';
+
+/**
+ * Gets all crypto devices in a room that are marked neither known
+ * nor verified.
+ *
+ * @param {MatrixClient} matrixClient A MatrixClient
+ * @param {Room} room js-sdk room object representing the room
+ * @return {Promise} A promise which resolves to a map userId->deviceId->{@link
+ * module:crypto~DeviceInfo|DeviceInfo}.
+ */
+export function getUnknownDevicesForRoom(matrixClient, room) {
+ const roomMembers = room.getJoinedMembers().map((m) => {
+ return m.userId;
+ });
+ return matrixClient.downloadKeys(roomMembers, false).then((devices) => {
+ const unknownDevices = {};
+ // This is all devices in this room, so find the unknown ones.
+ Object.keys(devices).forEach((userId) => {
+ Object.keys(devices[userId]).map((deviceId) => {
+ const device = devices[userId][deviceId];
+
+ if (device.isUnverified() && !device.isKnown()) {
+ if (unknownDevices[userId] === undefined) {
+ unknownDevices[userId] = {};
+ }
+ unknownDevices[userId][deviceId] = device;
+ }
+ });
+ });
+ return unknownDevices;
+ });
+}
+
+/**
+ * Show the UnknownDeviceDialog for a given room. The dialog will inform the user
+ * that messages they sent to this room have not been sent due to unknown devices
+ * being present.
+ *
+ * @param {MatrixClient} matrixClient A MatrixClient
+ * @param {Room} room js-sdk room object representing the room
+ */
+export function showUnknownDeviceDialogForMessages(matrixClient, room) {
+ getUnknownDevicesForRoom(matrixClient, room).then((unknownDevices) => {
+ const onSendClicked = () => {
+ Resend.resendUnsentEvents(room);
+ };
+
+ const UnknownDeviceDialog = sdk.getComponent('dialogs.UnknownDeviceDialog');
+ Modal.createTrackedDialog('Unknown Device Dialog', '', UnknownDeviceDialog, {
+ room: room,
+ devices: unknownDevices,
+ sendAnywayLabel: _t("Send anyway"),
+ sendLabel: _t("Send"),
+ onSend: onSendClicked,
+ }, 'mx_Dialog_unknownDevice');
+ });
+}
+
+/**
+ * Show the UnknownDeviceDialog for a given room. The dialog will inform the user
+ * that a call they tried to place or answer in the room couldn't be placed or
+ * answered due to unknown devices being present.
+ *
+ * @param {MatrixClient} matrixClient A MatrixClient
+ * @param {Room} room js-sdk room object representing the room
+ * @param {func} sendAnyway Function called when the 'call anyway' or 'call'
+ * button is pressed. This should attempt to place or answer the call again.
+ * @param {string} sendAnywayLabel Label for the button displayed to retry the call
+ * when unknown devices are still present (eg. "Call Anyway")
+ * @param {string} sendLabel Label for the button displayed to retry the call
+ * after all devices have been verified (eg. "Call")
+ */
+export function showUnknownDeviceDialogForCalls(matrixClient, room, sendAnyway, sendAnywayLabel, sendLabel) {
+ getUnknownDevicesForRoom(matrixClient, room).then((unknownDevices) => {
+ const UnknownDeviceDialog = sdk.getComponent('dialogs.UnknownDeviceDialog');
+ Modal.createTrackedDialog('Unknown Device Dialog', '', UnknownDeviceDialog, {
+ room: room,
+ devices: unknownDevices,
+ sendAnywayLabel: sendAnywayLabel,
+ sendLabel: sendLabel,
+ onSend: sendAnyway,
+ }, 'mx_Dialog_unknownDevice');
+ });
+}
diff --git a/src/dispatcher.js b/src/dispatcher.js
index be74dc856e..48c8dc86e9 100644
--- a/src/dispatcher.js
+++ b/src/dispatcher.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2017 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -20,14 +21,24 @@ const flux = require("flux");
class MatrixDispatcher extends flux.Dispatcher {
/**
- * @param {Object} payload Required. The payload to dispatch.
- * Must contain at least an 'action' key.
+ * @param {Object|function} payload Required. The payload to dispatch.
+ * If an Object, must contain at least an 'action' key.
+ * If a function, must have the signature (dispatch) => {...}.
* @param {boolean=} sync Optional. Pass true to dispatch
* synchronously. This is useful for anything triggering
* an operation that the browser requires user interaction
* for.
*/
dispatch(payload, sync) {
+ // Allow for asynchronous dispatching by accepting payloads that have the
+ // type `function (dispatch) {...}`
+ if (typeof payload === 'function') {
+ payload((action) => {
+ this.dispatch(action, sync);
+ });
+ return;
+ }
+
if (sync) {
super.dispatch(payload);
} else {
diff --git a/src/groups.js b/src/groups.js
index 69871c45e9..860cf71fff 100644
--- a/src/groups.js
+++ b/src/groups.js
@@ -15,6 +15,7 @@ limitations under the License.
*/
import PropTypes from 'prop-types';
+import { _t } from './languageHandler.js';
export const GroupMemberType = PropTypes.shape({
userId: PropTypes.string.isRequired,
@@ -23,6 +24,7 @@ export const GroupMemberType = PropTypes.shape({
});
export const GroupRoomType = PropTypes.shape({
+ displayname: PropTypes.string,
name: PropTypes.string,
roomId: PropTypes.string.isRequired,
canonicalAlias: PropTypes.string,
@@ -34,14 +36,21 @@ export function groupMemberFromApiObject(apiObject) {
userId: apiObject.user_id,
displayname: apiObject.displayname,
avatarUrl: apiObject.avatar_url,
+ isPrivileged: apiObject.is_privileged,
};
}
export function groupRoomFromApiObject(apiObject) {
return {
+ displayname: apiObject.name || apiObject.canonical_alias || _t("Unnamed Room"),
name: apiObject.name,
roomId: apiObject.room_id,
canonicalAlias: apiObject.canonical_alias,
avatarUrl: apiObject.avatar_url,
+ topic: apiObject.topic,
+ numJoinedMembers: apiObject.num_joined_members,
+ worldReadable: apiObject.world_readable,
+ guestCanJoin: apiObject.guest_can_join,
+ isPublic: apiObject.is_public !== false,
};
}
diff --git a/src/i18n/strings/ca.json b/src/i18n/strings/ca.json
index c4244eae92..88a8ced7b9 100644
--- a/src/i18n/strings/ca.json
+++ b/src/i18n/strings/ca.json
@@ -1,29 +1,6 @@
{
"People": "Gent",
"Add a widget": "Afegeix un giny",
- "af": "Afrikaans",
- "ar-ae": "Àrab (Emirats Àrabs Units)",
- "ar-bh": "Àrab (Bahrain)",
- "ar-dz": "Àrab (Algèria)",
- "ar-eg": "Àrab (Egipte)",
- "ar-iq": "Àrab (Iraq)",
- "ar-jo": "Àrab (Jordània)",
- "ar-kw": "Àrab (Kuwait)",
- "ar-lb": "Àrab (Líban)",
- "ar-ly": "Àrab (Líbia)",
- "ar-ma": "Àrab (Marroc)",
- "ar-om": "Àrab (Oman)",
- "ar-qa": "Àrab (Qatar)",
- "ar-sa": "Àrab (Aràbia Saudita)",
- "ca": "Català",
- "cs": "Txec",
- "de-at": "Alemany (Àustria)",
- "de-ch": "Alemany (Suïssa)",
- "de": "Alemany",
- "de-li": "Alemany (Liechtenstein)",
- "el": "Grec",
- "de-lu": "Alemany (Luxemburg)",
- "en-au": "Anglès (Austràlia)",
"Account": "Compte",
"VoIP": "Veu IP",
"No Microphones detected": "No s'ha detectat cap micròfon",
@@ -35,7 +12,6 @@
"Hide removed messages": "Amaga els missatges esborrats",
"Always show message timestamps": "Mostra sempre la marca de temps del missatge",
"Alias (optional)": "Àlies (opcional)",
- "and": "i",
"An email has been sent to": "S'ha enviat un correu electrònic a",
"Cancel": "Cancel·la",
"Close": "Tanca",
@@ -54,12 +30,7 @@
"Notifications": "Notificacions",
"Remove": "Elimina",
"unknown error code": "codi d'error desconegut",
- "Sunday": "Diumenge",
- "Monday": "Dilluns",
- "Tuesday": "Dimarts",
- "Wednesday": "Dimecres",
- "Thursday": "Dijous",
- "Friday": "Divendres",
- "Saturday": "Dissabte",
- "OK": "D'acord"
+ "OK": "D'acord",
+ "a room": "una sala",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "S'ha enviat un missatge de text a +%(msisdn)s. Entreu si us plau el codi de verificació que conté"
}
diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json
index 16726cd61d..c797044693 100644
--- a/src/i18n/strings/cs.json
+++ b/src/i18n/strings/cs.json
@@ -13,7 +13,7 @@
"Rooms": "Místnosti",
"Scroll to unread messages": "Přejít k nepřečteným zprávám",
"Search": "Hledání",
- "Send a message (unencrypted)": "Poslat zprávu (nezašifrovaně)",
+ "Send a message (unencrypted)": "Poslat zprávu (nešifrovanou)",
"Settings": "Nastavení",
"Start Chat": "Začít chat",
"This room": "Tato místnost",
@@ -44,24 +44,17 @@
"Create new room": "Založit novou místnost",
"Room directory": "Adresář místností",
"Start chat": "Začít chat",
- "Options": "Možnosti",
+ "Options": "Volby",
"Register": "Zaregistrovat",
"Cancel": "Storno",
"Error": "Chyba",
"Favourite": "V oblíbených",
- "Mute": "Ztišit",
+ "Mute": "Ztlumit",
"Continue": "Pokračovat",
- "Failed to change password. Is your password correct?": "Nepodařilo se změnit heslo. Je vaše heslo správné?",
- "Operation failed": "Chyba operace",
+ "Failed to change password. Is your password correct?": "Nepodařilo se změnit heslo. Zadáváte své heslo správně?",
+ "Operation failed": "Operace se nezdařila",
"Remove": "Odebrat",
"unknown error code": "neznámý kód chyby",
- "Sunday": "Neděle",
- "Monday": "Pondělí",
- "Tuesday": "Úterý",
- "Wednesday": "Středa",
- "Thursday": "Čtvrtek",
- "Friday": "Pátek",
- "Saturday": "Sobota",
"OK": "OK",
"Failed to forget room %(errCode)s": "Nepodařilo se zapomenout místnost %(errCode)s",
"Dismiss": "Zahodit",
@@ -81,7 +74,6 @@
"Add email address": "Přidat e-mailovou adresu",
"Add phone number": "Přidat telefonní číslo",
"Admin": "Správce",
- "Admin tools": "Nástroje pro správu",
"Allow": "Povolit",
"VoIP": "VoIP",
"No Microphones detected": "Nerozpoznány žádné mikrofony",
@@ -94,7 +86,6 @@
"Hide removed messages": "Skrýt odstraněné zprávy",
"Always show message timestamps": "Vždy zobrazovat časové značky zpráv",
"Authentication": "Ověření",
- "and": "a",
"A new password must be entered.": "Musíte zadat nové heslo.",
"An error has occurred.": "Nastala chyba.",
"Anyone": "Kdokoliv",
@@ -123,8 +114,8 @@
"Changes your display nickname": "Změní vaši zobrazovanou přezdívku",
"Changes colour scheme of current room": "Změní barevné schéma aktuální místnosti",
"Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "V současnosti změna hesla resetuje všechny šifrovací klíče na všech zařízeních, což vám znepřístupní historii zašifrovaných chatů, pokud si nejprve nevyexportujete klíče svých místností a pak je do nich znova nevložíte. Toto bude v budoucnu lépe ošetřeno.",
- "Clear Cache and Reload": "Vymazat vyrovnávací paměť a načíst znovu",
- "Clear Cache": "Vymazat vyrovnávací paměť",
+ "Clear Cache and Reload": "Vymazat mezipaměť a načíst znovu",
+ "Clear Cache": "Vymazat mezipaměť",
"
Click here to join the discussion!": "
Kliknutím zde se přidáte k diskuzi!",
"Command error": "Chyba příkazu",
"Commands": "Příkazy",
@@ -149,7 +140,7 @@
"Decline": "Odmítnout",
"Decrypt %(text)s": "Dešifrovat %(text)s",
"Decryption error": "Chyba dešifrování",
- "Delete": "Vymazat",
+ "Delete": "Smazat",
"Delete widget": "Vymazat widget",
"Default": "Výchozí",
"Device already verified!": "Zařízení již bylo ověřeno!",
@@ -197,22 +188,489 @@
"Failed to delete device": "Nepodařilo se vymazat zařízení",
"Failed to join room": "Vstup do místnosti se nezdařil",
"Failed to kick": "Vykopnutí se nezdařilo",
- "Failed to leave room": "Opuštění místnosti se nezdařilo",
+ "Failed to leave room": "Odejití z místnosti se nezdařilo",
"Failed to mute user": "Ztlumení uživatele se nezdařilo",
"Failed to send email": "Odeslání e-mailu se nezdařilo",
- "Failed to save settings": "Uložení nastavení se nezdařilo",
- "Failed to reject invitation": "Odmítnutí pozvánky se nezdařilo",
- "Failed to reject invite": "Odmítnutí pozvání se nezdařilo",
- "Failed to register as guest:": "Registrace jako host se nezdařila:",
+ "Failed to save settings": "Nepodařilo se uložit nastavení",
+ "Failed to reject invitation": "Nepodařilo se odmítnout pozvání",
+ "Failed to reject invite": "Nepodařilo se odmítnout pozvánku",
"Failed to send request.": "Odeslání žádosti se nezdařilo.",
"Failed to set avatar.": "Nastavení avataru se nezdařilo.",
- "Failed to set display name": "Nastavení zobrazovaného jména se nezdařilo",
- "Failed to set up conference call": "Nastavení konferenčního hovoru se nezdařilo",
+ "Failed to set display name": "Nepodařilo se nastavit zobrazované jméno",
+ "Failed to set up conference call": "Nepodařilo se nastavit konferenční hovor",
"Failed to toggle moderator status": "Změna statusu moderátora se nezdařila",
- "Failed to unban": "Odvolání vykázání se nezdařilo",
+ "Failed to unban": "Přijetí zpět se nezdařilo",
"Failed to upload profile picture!": "Nahrání profilového obrázku se nezdařilo",
"Failure to create room": "Vytvoření místnosti se nezdařilo",
"Forget room": "Zapomenout místnost",
"Forgot your password?": "Zapomněl/a jste své heslo?",
- "For security, this session has been signed out. Please sign in again.": "Z bezpečnostních důvodů bylo toto přihlášení ukončeno. Přihlašte se prosím znovu."
+ "For security, this session has been signed out. Please sign in again.": "Z bezpečnostních důvodů bylo toto přihlášení ukončeno. Přihlašte se prosím znovu.",
+ "%(names)s and one other are typing": "%(names)s a jeden další píší",
+ "%(names)s and %(lastPerson)s are typing": "%(names)s a %(lastPerson)s píší",
+ "and %(count)s others...|other": "a %(count)s další...",
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget upravil/a %(senderName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget odstranil/a %(senderName)s",
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget přidal/a %(senderName)s",
+ "Automatically replace plain text Emoji": "Automaticky nahrazovat textové emodži",
+ "Failed to upload image": "Obrázek se nepodařilo nahrát",
+ "Room creation failed": "Místnost se nepodařilo vytvořit",
+ "%(senderName)s answered the call.": "%(senderName)s přijal/a hovor.",
+ "Click to mute audio": "Kliknutím ztlumíte zvuk",
+ "Failed to verify email address: make sure you clicked the link in the email": "E-mailovou adresu se nepodařilo ověřit. Přesvědčte se, že jste kliknul/a na zaslaný odkaz",
+ "Found a bug?": "Našli jste chybu?",
+ "Guest access is disabled on this Home Server.": "Na tomto domovském serveru je hostům vstup odepřen.",
+ "Guests cannot join this room even if explicitly invited.": "Hosté nemohou vstoupit do této místnosti, i když jsou přímo pozváni.",
+ "Hide read receipts": "Skrýt potvrzení o přečtení",
+ "Homeserver is": "Domovský server je",
+ "Identity Server is": "Server identity je",
+ "I have verified my email address": "Ověřil/a jsem svoji e-mailovou adresu",
+ "Import": "Importovat",
+ "Import E2E room keys": "Importovat E2E klíče místností",
+ "Incoming call from %(name)s": "Příchozí hovor od %(name)s",
+ "Incoming video call from %(name)s": "Příchozí videohovor od %(name)s",
+ "Incoming voice call from %(name)s": "Příchozí hlasový hovor od %(name)s",
+ "Incorrect username and/or password.": "Nesprávné uživatelské jméno nebo heslo.",
+ "Incorrect verification code": "Nesprávný ověřovací kód",
+ "Interface Language": "Jazyk rozhraní",
+ "Invalid alias format": "Neplaný formát aliasu",
+ "Invalid address format": "Neplatný formát adresy",
+ "Invalid Email Address": "Neplatná e-mailová adresa",
+ "%(senderName)s invited %(targetName)s.": "%(senderName)s pozval/a %(targetName)s.",
+ "Invite new room members": "Pozvat do místnosti nové členy",
+ "Invites": "Pozvánky",
+ "Invites user with given id to current room": "Pozve do aktuální místnosti uživatele s daným id",
+ "'%(alias)s' is not a valid format for an address": "'%(alias)s' není platný formát adresy",
+ "'%(alias)s' is not a valid format for an alias": "'%(alias)s' není platný formát aliasu",
+ "Join Room": "Vstoupit do místnosti",
+ "%(targetName)s joined the room.": "%(targetName)s vstoupil/a do místnosti.",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s vykopnul/a %(targetName)s.",
+ "Kick": "Vykopnout",
+ "Kicks user with given id": "Vykopne uživatele s daným id",
+ "Last seen": "Naposledy viděn/a",
+ "Leave room": "Odejít z místnosti",
+ "Level:": "Úroveň:",
+ "Local addresses for this room:": "Místní adresy této místnosti:",
+ "Logged in as:": "Přihlášen/a jako:",
+ "Login as guest": "Přihlášen/a jako host",
+ "matrix-react-sdk version:": "Verze matrix-react-sdk:",
+ "Members only": "Pouze pro členy",
+ "Mobile phone number": "Číslo mobilního telefonu",
+ "Mobile phone number (optional)": "Číslo mobilního telefonu (nepovinné)",
+ "Moderator": "Moderátor",
+ "Name": "Jméno",
+ "New address (e.g. #foo:%(localDomain)s)": "Nová adresa (např. #neco:%(localDomain)s)",
+ "New password": "Nové heslo",
+ "New passwords don't match": "Nová hesla se neshodují",
+ "New passwords must match each other.": "Nová hesla se musí shodovat.",
+ "not set": "nenastaveno",
+ "not specified": "neurčeno",
+ "(not supported by this browser)": "(nepodporováno tímto prohlížečem)",
+ "
": "",
+ "AM": "dop.",
+ "PM": "odp.",
+ "NOT verified": "Neověřeno",
+ "No display name": "Žádné zobrazované jméno",
+ "No more results": "Žádné další výsledky",
+ "No results": "Žádné výsledky",
+ "olm version:": "verze olm:",
+ "Once encryption is enabled for a room it cannot be turned off again (for now)": "Jakmile je jednou šifrování v místnosti zapnuto, nelze už vypnout (prozatím)",
+ "Only people who have been invited": "Pouze lidé, kteří byli pozváni",
+ "Otherwise, click here to send a bug report.": "V opačném případě klikněte zde a pošlete hlášení o chybě.",
+ "Password": "Heslo",
+ "Password:": "Heslo:",
+ "Passwords can't be empty": "Hesla nemohou být prázdná",
+ "Permissions": "Oprávnění",
+ "Phone": "Telefon",
+ "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s změnil/a úroveň moci o %(powerLevelDiffText)s.",
+ "Define the power level of a user": "Stanovte úroveň moci uživatele",
+ "Failed to change power level": "Nepodařilo se změnit úroveň moci",
+ "Power level must be positive integer.": "Úroveň moci musí být kladné celé číslo.",
+ "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (moc %(powerLevelNumber)s)",
+ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Tuto změnu nepůjde vrátit zpět, protože tomuto uživateli nastavujete stejnou úroveň moci, jakou máte vy.",
+ "Alias (optional)": "Alias (nepovinný)",
+ "Room name (optional)": "Název místnosti (nepovinný)",
+ "Report it": "Nahlásit to",
+ "Results from DuckDuckGo": "Výsledky z DuckDuckGo",
+ "Return to app": "Vrátit k aplikaci",
+ "Return to login screen": "Vrátit k přihlašovací obrazovce",
+ "Riot does not have permission to send you notifications - please check your browser settings": "Riot není oprávněn posílat vám upozornění – zkontrolujte prosím nastavení svého prohlížeče",
+ "Riot was not given permission to send notifications - please try again": "Riot nebyl oprávněn k posílání upozornění – zkuste to prosím znovu",
+ "riot-web version:": "verze riot-web:",
+ "Room %(roomId)s not visible": "Místnost %(roomId)s není viditelná",
+ "Room Colour": "Barva místnosti",
+ "Room contains unknown devices": "V místnosti jsou neznámá zařízení",
+ "%(roomName)s does not exist.": "%(roomName)s neexistuje.",
+ "%(roomName)s is not accessible at this time.": "Místnost %(roomName)s není v tuto chvíli dostupná.",
+ "Save": "Uložit",
+ "Scroll to bottom of page": "Přejít na konec stránky",
+ "Send an encrypted message": "Poslat šifrovanou zprávu",
+ "Send anyway": "Přesto poslat",
+ "Sender device information": "Informace o odesilatelově zařízení",
+ "Send Reset Email": "Poslat resetovací e-mail",
+ "sent an image": "poslal/a obrázek",
+ "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s poslal/a obrázek.",
+ "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s poslal/a %(targetDisplayName)s pozvánku ke vstupu do místnosti.",
+ "sent a video": "poslal/a video",
+ "Server error": "Chyba serveru",
+ "Server may be unavailable or overloaded": "Server může být nedostupný nebo přetížený",
+ "Server may be unavailable, overloaded, or search timed out :(": "Server může být nedostupný, přetížený nebo vyhledávání vypršelo :(",
+ "Server may be unavailable, overloaded, or the file too big": "Server může být nedostupný, přetížený nebo soubor je příliš velký",
+ "Server may be unavailable, overloaded, or you hit a bug.": "Server může být nedostupný, přetížený nebo jste narazili na chybu.",
+ "Server unavailable, overloaded, or something else went wrong.": "Server je nedostupný, přetížený nebo se pokazilo něco jiného.",
+ "Session ID": "ID sezení",
+ "%(senderName)s set a profile picture.": "%(senderName)s si nastavil/a profilový obrázek.",
+ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s si změnil/a zobrazované jméno na %(displayName)s.",
+ "Sets the room topic": "Nastavuje téma místnosti",
+ "Show Apps": "Zobrazit aplikace",
+ "Show panel": "Zobrazit panel",
+ "Show timestamps in 12 hour format (e.g. 2:30pm)": "Zobrazovat časové značky v 12hodinovém formátu (např. 2:30 odp.)",
+ "Sign in": "Přihlásit",
+ "Sign out": "Odhlásit",
+ "Some of your messages have not been sent.": "Některé z vašich zpráv nebyly odeslány.",
+ "Someone": "Někdo",
+ "Start a chat": "Začít chat",
+ "Start authentication": "Začít ověření",
+ "Submit": "Odeslat",
+ "Success": "Úspěch",
+ "The main address for this room is": "Hlavní adresa této místnosti je",
+ "The phone number entered looks invalid": "Zadané telefonní číslo se zdá být neplatné",
+ "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Zadaný podepisovací klíč se shoduje s klíčem obdrženým od uživatele %(userId)s ze zařízení %(deviceId)s. Zařízení je označeno jako ověřené.",
+ "This email address is already in use": "Tato e-mailová adresa je již používaná",
+ "This email address was not found": "Tato e-mailová adresa nebyla nalezena",
+ "%(actionVerb)s this person?": "%(actionVerb)s tuto osobu?",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Soubor '%(fileName)s' překračuje maximální velikost povolenou na tomto domovském serveru",
+ "The file '%(fileName)s' failed to upload": "Soubor '%(fileName)s' se nepodařilo nahrát",
+ "This Home Server does not support login using email address.": "Tento domovský server nepodporuje přihlašování e-mailovou adresou.",
+ "This room has no local addresses": "Tato místnost nemá žádné místní adresy",
+ "This room is not recognised.": "Tato místnost nebyla rozpoznána.",
+ "These are experimental features that may break in unexpected ways": "Tyto funkce jsou experimentální a mohou se pokazit nečekanými způsoby",
+ "The visibility of existing history will be unchanged": "Viditelnost existující historie nebude změněna",
+ "VoIP is unsupported": "VoIP není podporován",
+ "Warning!": "Pozor!",
+ "Who can access this room?": "Kdo má přístup k této místnosti?",
+ "Who can read history?": "Kdo může číst historii?",
+ "Who would you like to add to this room?": "Koho byste chtěli přidat do této místnosti?",
+ "Who would you like to communicate with?": "S kým byste chtěli komunikovat?",
+ "Would you like to accept or decline this invitation?": "Chtěli byste tuto pozvánku přijmout nebo odmítnout?",
+ "You are not in this room.": "Nejste v této místnosti.",
+ "You do not have permission to do that in this room.": "V této místnosti nemáte na toto právo.",
+ "You're not in any rooms yet! Press to make a room or to browse the directory": "Ještě nejste v žádné místnosti! Zmáčkněte pro vytvoření místnosti nebo pro prohlížení adresáře",
+ "You are trying to access %(roomName)s.": "Snažíte se přistoupit k %(roomName)s.",
+ "You cannot place a call with yourself.": "Nemůžete volat sami sobě.",
+ "You cannot place VoIP calls in this browser.": "V tomto prohlížeči nelze vytáčet VoIP hovory.",
+ "You do not have permission to post to this room": "Na přispívání do této místnosti nemáte právo",
+ "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s vás vykázal/a z místnosti %(roomName)s.",
+ "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s vás vykopnul/a z místnosti %(roomName)s.",
+ "You need to enter a user name.": "Musíte zadat uživatelské jméno.",
+ "Your password has been reset": "Vaše heslo bylo resetováno",
+ "Your home server does not support device management.": "Váš domovský server nepodporuje správu zařízení.",
+ "Online": "Online",
+ "Offline": "Offline",
+ "Updates": "Aktualizace",
+ "Check for update": "Zkontrolovat aktualizace",
+ "Start chatting": "Začít chatovat",
+ "Start Chatting": "Začít chatovat",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Textová zpráva byla odeslána na +%(msisdn)s. Prosím vložte ověřovací kód z dané zprávy",
+ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s přijal/a pozvánku pro %(displayName)s.",
+ "Active call (%(roomName)s)": "Probíhající hovor (%(roomName)s)",
+ "An email has been sent to": "E-mail byl odeslán odeslán na",
+ "%(senderName)s banned %(targetName)s.": "%(senderName)s vykázal/a %(targetName)s.",
+ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nelze se připojit k domovskému serveru přes HTTP, pokud je v adresním řádku HTTPS. Buď použijte HTTPS, nebo povolte nebezpečné scripty.",
+ "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s změnil/a své zobrazované jméno z %(oldDisplayName)s na %(displayName)s.",
+ "Click here to fix": "Klikněte zde pro opravu",
+ "Click to mute video": "Klikněte pro zakázání videa",
+ "click to reveal": "klikněte pro odhalení",
+ "Click to unmute video": "Klikněte pro povolení videa",
+ "Click to unmute audio": "Klikněte pro povolení zvuku",
+ "Devices will not yet be able to decrypt history from before they joined the room": "Zařízení nebudou schopna dešifrovat historii z doby před jejich vstupem do místnosti",
+ "Displays action": "Zobrazí akci",
+ "Do you want to load widget from URL:": "Chcete načíst widget z URL:",
+ "Ed25519 fingerprint": "Ed25519 otisk",
+ "Fill screen": "Vyplnit obrazovku",
+ "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s z %(fromPowerLevel)s na %(toPowerLevel)s",
+ "This doesn't appear to be a valid email address": "Tato e-mailová adresa se zdá být neplatná",
+ "This is a preview of this room. Room interactions have been disabled": "Toto je náhled místnosti. Interakce byly zakázány",
+ "This phone number is already in use": "Toto číslo se již používá",
+ "This room is not accessible by remote Matrix servers": "Tato místnost není přístupná vzdáleným Matrix serverům",
+ "This room's internal ID is": "Vnitřní ID této místnosti je",
+ "To reset your password, enter the email address linked to your account": "K resetování hesla vložte e-mailovou adresu spojenou s vaším účtem",
+ "to restore": "obnovíte",
+ "to tag direct chat": "oštítkujete přímý chat",
+ "To use it, just wait for autocomplete results to load and tab through them.": "Použijte tak, že vyčkáte na načtení našeptávaných výsledků a ty pak projdete tabulátorem.",
+ "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Nemáte práva k zobrazení zprávy v daném časovém úseku.",
+ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Zpráva v daném časovém úseku nenalezena.",
+ "Turn Markdown off": "Vypnout Markdown",
+ "Turn Markdown on": "Zapnout Markdown",
+ "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s zapnul/a end-to-end šifrování (algoritmus %(algorithm)s).",
+ "Unable to add email address": "Nepodařilo se přidat e-mailovou adresu",
+ "Unable to create widget.": "Nepodařilo se vytvořit widget.",
+ "Unable to remove contact information": "Nepodařilo se smazat kontaktní údaje",
+ "Unable to verify email address.": "Nepodařilo se ověřit e-mailovou adresu.",
+ "Unban": "Přijmout zpět",
+ "Unbans user with given id": "Přijme zpět uživatele s daným id",
+ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s přijal/a zpět %(targetName)s.",
+ "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Nepodařilo se prokázat, že adresa, na kterou byla tato pozvánka odeslána, se shoduje s adresou přidruženou k vašemu účtu.",
+ "Unable to capture screen": "Nepodařilo se zachytit obrazovku",
+ "Unable to enable Notifications": "Nepodařilo se povolit upozornění",
+ "Unable to load device list": "Nepodařilo se načíst seznam zařízení",
+ "Undecryptable": "Nerozšifrovatelné",
+ "unencrypted": "nešifrované",
+ "Unencrypted message": "Nešifrovaná zpráva",
+ "unknown caller": "neznámý volající",
+ "unknown device": "neznámé zařízení",
+ "Unknown room %(roomId)s": "Neznámá místnost %(roomId)s",
+ "Unknown (user, device) pair:": "Neznámý pár (uživatel, zařízení):",
+ "Unmute": "Povolit",
+ "Unnamed Room": "Nepojmenovaná místnost",
+ "Unrecognised command:": "Nerozpoznaný příkaz:",
+ "Unrecognised room alias:": "Nerozpoznaný alias místnosti:",
+ "Unverified": "Neověřený",
+ "Uploading %(filename)s and %(count)s others|zero": "Nahrávám %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Nahrávám %(filename)s a %(count)s další",
+ "Uploading %(filename)s and %(count)s others|other": "Nahrávám %(filename)s a %(count)s další",
+ "Upload Failed": "Nahrávání selhalo",
+ "Upload Files": "Nahrát soubory",
+ "Upload file": "Nahrát soubor",
+ "Upload new:": "Nahrát nový:",
+ "Usage": "Použití",
+ "Use compact timeline layout": "Použít kompaktní rozvržení timeline",
+ "Use with caution": "Používejte s opatrností",
+ "User ID": "Uživatelské ID",
+ "User Interface": "Uživatelské rozhraní",
+ "%(user)s is a": "%(user)s je",
+ "User name": "Uživatelské jméno",
+ "Username invalid: %(errMessage)s": "Neplatné uživatelské jméno: %(errMessage)s",
+ "Users": "Uživatelé",
+ "User": "Uživatel",
+ "Verification Pending": "Čeká na ověření",
+ "Verification": "Ověření",
+ "verified": "ověreno",
+ "Verified": "Ověřeno",
+ "Verified key": "Ověřený klíč",
+ "(no answer)": "(žádná odpověď)",
+ "(unknown failure: %(reason)s)": "(neznámá chyba: %(reason)s)",
+ "(warning: cannot be disabled again!)": "(varování: nepůjde znovu zakázat!)",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "VAROVÁNÍ: Zařízení byl již ověřeno, ale klíče se NESHODUJÍ!",
+ "The remote side failed to pick up": "Vzdálené straně se nepodařilo hovor přijmout",
+ "Who would you like to add to this community?": "Koho chcete přidat do této komunity?",
+ "Invite new community members": "Pozvěte nové členy komunity",
+ "Name or matrix ID": "Jméno nebo matrix ID",
+ "Invite to Community": "Pozvat do komunity",
+ "Which rooms would you like to add to this community?": "Které místnosti chcete přidat do této komunity?",
+ "Warning: any room you add to a community will be publicly visible to anyone who knows the community ID": "Varování: místnost, kterou přidáte do této komunity, bude veřejně viditelná každému, kdo zná ID komunity",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Varování: osoba, kterou přidáte do této komunity, bude veřejně viditelná každému, kdo zná ID komunity",
+ "Add rooms to the community": "Přidat místnosti do komunity",
+ "Room name or alias": "Název nebo alias místnosti",
+ "Add to community": "Přidat do komunity",
+ "Failed to invite the following users to %(groupId)s:": "Následující uživatele se nepodařilo přidat do %(groupId)s:",
+ "Invites sent": "Pozvánky odeslány",
+ "Your community invitations have been sent.": "Vaše komunitní pozvánky byly odeslány.",
+ "Failed to invite users to community": "Nepodařilo se pozvat uživatele do komunity",
+ "Failed to invite users to %(groupId)s": "Nepodařilo se pozvat uživatele do %(groupId)s",
+ "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",
+ "Failed to add the following rooms to %(groupId)s:": "Nepodařilo se přidat následující místnosti do %(groupId)s:",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Vaše e-mailová adresa zřejmě nepatří k žádnému Matrix ID na tomto domovském serveru.",
+ "Send Invites": "Odeslat pozvánky",
+ "Failed to invite user": "Nepodařilo se pozvat uživatele",
+ "Failed to invite": "Pozvání se nezdařilo",
+ "Failed to invite the following users to the %(roomName)s room:": "Do místnosti %(roomName)s se nepodařilo pozvat následující uživatele:",
+ "You need to be logged in.": "Musíte být přihlášen/a.",
+ "You are now ignoring %(userId)s": "Nyní ignorujete %(userId)s",
+ "You are no longer ignoring %(userId)s": "Už neignorujete %(userId)s",
+ "Add rooms to this community": "Přidat místnosti do této komunity",
+ "Unpin Message": "Odepnout zprávu",
+ "Ignored user": "Ignorovaný uživatel",
+ "Unignored user": "Odignorovaný uživatel",
+ "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "VAROVÁNÍ: OVĚŘENÍ KLÍČE SELHALO! Podepisovací klíč uživatele %(userId)s a zařízení %(deviceId)s je \"%(fprint)s\", což nesouhlasí s dodaným klíčem \"%(fingerprint)s\". Toto může znamenat, že vaše komunikace je odposlouchávána!",
+ "Reason": "Důvod",
+ "VoIP conference started.": "VoIP konference započata.",
+ "VoIP conference finished.": "VoIP konference ukončena.",
+ "%(targetName)s left the room.": "%(targetName)s opustil/a místnost.",
+ "You are already in a call.": "Již máte probíhající hovor.",
+ "%(senderName)s requested a VoIP conference.": "%(senderName)s požádal/a o VoIP konferenci.",
+ "%(senderName)s removed their profile picture.": "%(senderName)s odstranil/a svůj profilový obrázek.",
+ "%(targetName)s rejected the invitation.": "%(targetName)s odmítl/a pozvání.",
+ "Communities": "Komunity",
+ "Message Pinning": "Připíchnutí zprávy",
+ "Your browser does not support the required cryptography extensions": "Váš prohlížeč nepodporuje požadovaná kryptografická rozšíření",
+ "Do you want to set an email address?": "Chcete nastavit e-mailovou adresu?",
+ "New Password": "Nové heslo",
+ "Device Name": "Název zařízení",
+ "Unignore": "Odignorovat",
+ "Ignore": "Ignorovat",
+ "Admin Tools": "Nástroje pro správce",
+ "bold": "tučně",
+ "italic": "kurzíva",
+ "strike": "přeškrtnutí",
+ "underline": "podtržení",
+ "code": "kód",
+ "quote": "citace",
+ "bullet": "odrážka",
+ "numbullet": "číselný seznam",
+ "No pinned messages.": "Žádné připíchnuté zprávy.",
+ "Pinned Messages": "Připíchnuté zprávy",
+ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s odstranil/a svoje zobrazované jméno (%(oldDisplayName)s).",
+ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s odvolal/a pozvánku pro %(targetName)s.",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s učinil/a budoucí historii místnosti viditelnou všem členům, a to od chvíle jejich pozvání.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s učinil/a budoucí historii místnosti viditelnou všem členům, a to od chvíle jejich vstupu do místnosti.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s učinil/a budoucí historii místnosti viditelnou všem členům.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s učinil/a budoucí historii místnosti viditelnou komukoliv.",
+ "%(senderName)s changed the pinned messages for the room.": "%(senderName)s změnil/a připíchnuté zprávy této místnosti.",
+ "%(names)s and %(count)s others are typing|other": "%(names)s a %(count)s další píší",
+ "Authentication check failed: incorrect password?": "Kontrola ověření selhala: špatné heslo?",
+ "You need to be able to invite users to do that.": "Pro tuto akci musíte mít právo zvát uživatele.",
+ "Delete Widget": "Smazat widget",
+ "Error decrypting image": "Chyba při dešifrování obrázku",
+ "Image '%(Body)s' cannot be displayed.": "Obrázek '%(Body)s' nemůže být zobrazen.",
+ "This image cannot be displayed.": "Tento obrázek nemůže být zobrazen.",
+ "Error decrypting video": "Chyba při dešifrování videa",
+ "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s odstranil/a avatar místnosti.",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s změnil/a avatar místnosti na
",
+ "Copied!": "Zkopírováno!",
+ "Failed to copy": "Nepodařilo se zkopírovat",
+ "Removed or unknown message type": "Zpráva odstraněna nebo neznámého typu",
+ "Message removed by %(userId)s": "Zprávu odstranil/a %(userId)s",
+ "This Home Server would like to make sure you are not a robot": "Tento domovský server by se rád přesvědčil, že nejste robot",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Přes vlastní serverové volby se můžete přihlásit k dalším Matrix serverům tak, že zadáte jinou adresu domovského serveru.",
+ "Identity server URL": "Adresa serveru identity",
+ "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Taktéž můžete zadat vlastní server identity, ale to vám zpravidla znemožní interagovat s uživateli na základě e-mailové adresy.",
+ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Smazáním widgetu jej odstraníte všem uživatelům v této místnosti. Určitě chcete tento widget smazat?",
+ "The maximum permitted number of widgets have already been added to this room.": "V této místnosti již bylo dosaženo limitu pro maximální počet widgetů.",
+ "Drop file here to upload": "Přetažením sem nahrajete",
+ "uploaded a file": "nahrál/a soubor",
+ "Example": "Příklad",
+ "Create Community": "Vytvořit komunitu",
+ "Community Name": "Název komunity",
+ "Community ID": "ID komunity",
+ "example": "příklad",
+ "Create": "Vytvořit",
+ "Advanced options": "Pokročilé volby",
+ "User Options": "Volby uživatele",
+ "Please select the destination room for this message": "Vyberte prosím pro tuto zprávu cílovou místnost",
+ "No devices with registered encryption keys": "Žádná zařízení se zaregistrovanými šifrovacími klíči",
+ "Jump to read receipt": "Přeskočit na potvrzení o přečtení",
+ "Invite": "Pozvat",
+ "Revoke Moderator": "Odebrat moderátorství",
+ "Make Moderator": "Udělit moderátorství",
+ "and %(count)s others...|one": "a někdo další...",
+ "Hangup": "Zavěsit",
+ "Hide Apps": "Skrýt aplikace",
+ "Show Text Formatting Toolbar": "Zobrazit nástroje formátování textu",
+ "Hide Text Formatting Toolbar": "Skrýt nástroje formátování textu",
+ "Jump to message": "Přeskočit na zprávu",
+ "Loading...": "Načítání...",
+ "Loading device info...": "Načítá se info o zařízení...",
+ "You seem to be uploading files, are you sure you want to quit?": "Zřejmě právě nahráváte soubory. Chcete přesto odejít?",
+ "You seem to be in a call, are you sure you want to quit?": "Zřejmě máte probíhající hovor. Chcete přesto odejít?",
+ "Idle": "Nečinný/á",
+ "Unknown": "Neznámý",
+ "Seen by %(userName)s at %(dateTime)s": "Spatřen uživatelem %(userName)s v %(dateTime)s",
+ "Unnamed room": "Nepojmenovaná místnost",
+ "World readable": "Světu čitelné",
+ "Guests can join": "Hosté mohou vstoupit",
+ "No rooms to show": "Žádné místnosti k zobrazení",
+ "(~%(count)s results)|other": "(~%(count)s výsledků)",
+ "(~%(count)s results)|one": "(~%(count)s výsledek)",
+ "Upload avatar": "Nahrát avatar",
+ "Remove avatar": "Odstranit avatar",
+ "Mention": "Zmínka",
+ "Blacklisted": "Na černé listině",
+ "Invited": "Pozvaní",
+ "Markdown is disabled": "Markdown je vypnutý",
+ "Markdown is enabled": "Markdown je zapnutý",
+ "Press to start a chat with someone": "Zmáčkněte a můžete začít chatovat",
+ "This invitation was sent to an email address which is not associated with this account:": "Tato pozvánka byla odeslána na e-mailovou aresu, která není přidružená k tomuto účtu:",
+ "Joins room with given alias": "Vstoupí do místnosti s daným aliasem",
+ "were unbanned": "byli přijati zpět",
+ "was unbanned": "byl/a přijat/a zpět",
+ "was unbanned %(repeats)s times": "byl/a přijat/a zpět %(repeats)skrát",
+ "were unbanned %(repeats)s times": "byli přijati zpět %(repeats)skrát",
+ "Leave Community": "Odejít z komunity",
+ "Leave %(groupName)s?": "Odejít z %(groupName)s?",
+ "Leave": "Odejít",
+ "Unable to leave room": "Nepodařilo se odejít z místnosti",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Skrýt zprávy o vstupu či odejití (pozvánky, vykopnutí a vykázání zůstanou)",
+ "%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers)s vstoupilo a odešlo %(repeats)skrát",
+ "%(oneUser)sjoined and left %(repeats)s times": "%(oneUser)s vstoupil/a a odešel/la %(repeats)skrát",
+ "%(severalUsers)sjoined and left": "%(severalUsers)s vstoupilo a odešlo",
+ "%(oneUser)sjoined and left": "%(oneUser)s vstoupil/a a odešel/la",
+ "Failed to remove user from community": "Nepodařilo se odebrat uživatele z komunity",
+ "Failed to remove room from community": "Nepodařilo se odebrat místnost z komunity",
+ "Failed to remove '%(roomName)s' from %(groupId)s": "'%(roomName)s' se nepodařilo odebrat z %(groupId)s",
+ "Failed to update community": "Nepodařilo se aktualizovat komunitu",
+ "Failed to load %(groupId)s": "Nepodařilo se načíst %(groupId)s",
+ "Search failed": "Vyhledávání selhalo",
+ "Failed to fetch avatar URL": "Nepodařilo se získat adresu avataru",
+ "Error decrypting audio": "Chyba při dešifrování zvuku",
+ "Drop here to tag %(section)s": "Přetažením sem oštítkujete %(section)s",
+ "You have been invited to join this room by %(inviterName)s": "%(inviterName)s vás pozval/a ke vstupu do této místnosti",
+ "Reason: %(reasonText)s": "Důvod: %(reasonText)s",
+ "Rejoin": "Vstoupit znovu",
+ "To change the room's avatar, you must be a": "Abyste mohl/a měnit avatar místnosti, musíte být",
+ "To change the room's name, you must be a": "Abyste mohl/a měnit název místnosti, musíte být",
+ "To change the room's main address, you must be a": "Abyste mohl/a měnit hlavní adresu místnosti, musíte být",
+ "To change the room's history visibility, you must be a": "Abyste mohl/a měnit viditelnost historie místnosti, musíte být",
+ "To change the permissions in the room, you must be a": "Abyste mohl/a měnit oprávnění v místnosti, musíte být",
+ "To change the topic, you must be a": "Abyste mohl/a měnit téma, musíte být",
+ "To modify widgets in the room, you must be a": "Abyste mohl/a měnit widgety v místnosti, musíte být",
+ "Banned by %(displayName)s": "Vykázán/a uživatelem %(displayName)s",
+ "Privacy warning": "Výstraha o utajení",
+ "Never send encrypted messages to unverified devices in this room from this device": "Nikdy z tohoto zařízení neposílat šifrované zprávy neověřeným zařízením v této místnosti",
+ "Privileged Users": "Privilegovaní uživatelé",
+ "No users have specific privileges in this room": "Žádní uživatelé v této místnosti nemají zvláštní privilegia",
+ "Tagged as: ": "Oštítkováno jako: ",
+ "To link to a room it must have an address.": "Aby šlo odkazovat na místnost, musí mít adresu.",
+ "Publish this room to the public in %(domain)s's room directory?": "Zapsat tuto místnost do veřejného adresáře místností na %(domain)s?",
+ "since the point in time of selecting this option": "od chvíle aktivování této volby",
+ "since they were invited": "od chvíle jejich pozvání",
+ "since they joined": "od chvíle jejich vstupu",
+ "The default role for new room members is": "Výchozí role nových členů místnosti je",
+ "To send messages, you must be a": "Abyste mohl/a posílat zprávy, musíte být",
+ "To invite users into the room, you must be a": "Abyste mohl/a zvát uživatele do této místnosti, musíte být",
+ "To configure the room, you must be a": "Abyste mohl/a nastavovat tuto místnost, musíte být",
+ "To kick users, you must be a": "Abyste mohl/a vykopávat uživatele, musíte být",
+ "To ban users, you must be a": "Abyste mohl/a vykazovat uživatele, musíte být",
+ "To remove other users' messages, you must be a": "Abyste mohl/a odstraňovat zprávy ostatních uživatelů, musíte být",
+ "To send events of type , you must be a": "Abyste mohl/a odesílat události typu , musíte být",
+ "You should not yet trust it to secure data": "Zatím byste jeho zabezpečení dat neměl/a důvěřovat",
+ "Remote addresses for this room:": "Vzdálené adresy této místnosti:",
+ "Invalid community ID": "Neplatné ID komunity",
+ "'%(groupId)s' is not a valid community ID": "'%(groupId)s' není platné ID komunity",
+ "Related Communities": "Související komunity",
+ "Related communities for this room:": "Komunity související s touto místností:",
+ "This room has no related communities": "Tato místnost nemá žádné související komunity",
+ "New community ID (e.g. +foo:%(localDomain)s)": "Nové ID komunity (např. +neco:%(localDomain)s)",
+ "%(names)s and %(count)s others are typing|one": "%(names)s a jeden další píší",
+ "%(senderName)s sent an image": "%(senderName)s poslal/a obrázek",
+ "%(senderName)s sent a video": "%(senderName)s poslal/a video",
+ "%(senderName)s uploaded a file": "%(senderName)s nahrál/a soubor",
+ "Disinvite this user?": "Odvolat pozvání tohoto uživatele?",
+ "Kick this user?": "Vykopnout tohoto uživatele?",
+ "Unban this user?": "Přijmout zpět tohoto uživatele?",
+ "Ban this user?": "Vykázat tohoto uživatele?",
+ "Drop here to favourite": "Oblibte přetažením zde",
+ "Drop here to tag direct chat": "Přímý chat oštítkujte přetažením zde",
+ "Drop here to restore": "Obnovte přetažením zde",
+ "Drop here to demote": "Upozaďte přetažením zde",
+ "Community Invites": "Komunitní pozvánky",
+ "You have been kicked from this room by %(userName)s.": "%(userName)s vás vykopl/a z této místnosti.",
+ "You have been banned from this room by %(userName)s.": "%(userName)s vás vykázal/a z této místnosti.",
+ "You are trying to access a room.": "Pokoušíte se o přístup do místnosti.",
+ "Members only (since the point in time of selecting this option)": "Pouze členové (od chvíle vybrání této volby)",
+ "Members only (since they were invited)": "Pouze členové (od chvíle jejich pozvání)",
+ "Members only (since they joined)": "Pouze členové (od chvíle jejich vstupu)",
+ "Disable URL previews by default for participants in this room": "Vypnout účastníkům v této místnosti automatické náhledy webových adres",
+ "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "Automatické zobrazení náhledů webových adres je v této místnosti pro všechny účastníky %(globalDisableUrlPreview)s.",
+ "You have disabled URL previews by default.": "Vypnul/a jste automatické náhledy webových adres.",
+ "You have enabled URL previews by default.": "Zapnul/a jste automatické náhledy webových adres.",
+ "URL Previews": "Náhledy webových adres",
+ "Enable URL previews for this room (affects only you)": "Zapnout náhledy webových adres (pouze vám)",
+ "Disable URL previews for this room (affects only you)": "Vypnout náhledy webových adres (pouze vám)",
+ "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s změnil/a avatar místnosti %(roomName)s",
+ "Add an Integration": "Přidat začlenění",
+ "Message removed": "Zpráva odstraněna",
+ "Robot check is currently unavailable on desktop - please use a web browser": "Ochrana před roboty není aktuálně na desktopu dostupná. Použijte prosím webový prohlížeč",
+ "An email has been sent to %(emailAddress)s": "Na adresu %(emailAddress)s jsme poslali e-mail"
}
diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json
index 166f5ad35d..9f5d3468ca 100644
--- a/src/i18n/strings/da.json
+++ b/src/i18n/strings/da.json
@@ -10,7 +10,6 @@
"New passwords must match each other.": "Nye adgangskoder skal matche hinanden.",
"A new password must be entered.": "Der skal indtastes en ny adgangskode.",
"The email address linked to your account must be entered.": "Den emailadresse, der tilhører til din adgang, skal indtastes.",
- "Failed to send email: ": "Kunne ikke sende e-mail: ",
"unknown device": "ukendt enhed",
"NOT verified": "IKKE verificeret",
"Blacklisted": "blokeret",
@@ -44,46 +43,27 @@
"Login as guest": "Log ind som gæst",
"Return to app": "Tilbage til app",
"Sign in": "Log ind",
- "Create a new account": "Oprette en ny bruger",
"Send an encrypted message": "Send en krypteret meddelelse",
"Send a message (unencrypted)": "Send en meddelelse (ukrypteret)",
"Warning!": "Advarsel!",
- "accept": "acceptere",
- "accepted an invitation": "Godkendt en invitation",
- "accepted the invitation for": "Accepteret invitationen til",
"Account": "Konto",
"Add email address": "Tilføj e-mail-adresse",
"Add phone number": "Tilføj telefonnummer",
"Admin": "Administrator",
"Advanced": "Avanceret",
- "an address": "en adresse",
- "and": "og",
"An email has been sent to": "En e-mail blev sendt til",
- "answered the call.": "svarede på kaldet",
"Anyone who knows the room's link, apart from guests": "Alle der kender link til rummet, bortset fra gæster",
"Anyone who knows the room's link, including guests": "Alle der kender link til rummet, inklusiv gæster",
- "Are you sure you want to leave the room?": "Er du sikker på du vil forlade rummet?",
"Are you sure you want to reject the invitation?": "Er du sikker på du vil afvise invitationen?",
"Are you sure you want to upload the following files?": "Er du sikker på du vil sende de følgende filer?",
- "banned": "bortvist",
"Banned users": "Bortviste brugere",
"Bug Report": "Fejlrapport",
"Bulk Options": "Masseindstillinger",
- "Can't connect to homeserver - please check your connectivity and ensure your": "Kan ikke oprette forbindelse til homeserver - Kontroller din forbindelse og sørg for din ",
"Can't load user settings": "Kan ikke indlæse brugerindstillinger",
- "changed avatar": "Ændret avatar",
- "changed name": "Ændret navn",
- "changed their display name from": "Ændret deres visningsnavn fra",
- "changed their profile picture": "Ændret deres profilbillede",
- "changed the power level of": "Ændret effektniveauet på",
- "changed the room name to": "Ændrede rumnavnet til",
- "changed the topic to": "Ændret emnet til",
"Changes to who can read history will only apply to future messages in this room": "Ændringer til hvem der kan læse historie gælder kun for fremtidige meddelelser i dette rum",
"Clear Cache and Reload": "Ryd cache og genindlæs",
"Clear Cache": "Ryd cache",
- "Click here": "Klik her",
"Click here to fix": "Klik her for at rette",
- "*️⃣ Commands": "kommandoer",
"Confirm your new password": "Bekræft din nye adgangskode",
"Continue": "fortsætte",
"Could not connect to the integration server": "Kunne ikke oprette forbindelse til integrationsserveren",
@@ -92,24 +72,19 @@
"Cryptography": "Kryptografi",
"Deactivate Account": "Deaktiver brugerkonto",
"Deactivate my account": "Deaktiver min brugerkonto",
- "decline": "nedgang",
"Default": "Standard",
- "demote": "degradere",
"Devices will not yet be able to decrypt history from before they joined the room": "Enhederne vil ikke være i stand til at dekryptere historikken fra, før de kom til rummet",
"Disable inline URL previews by default": "Deaktiver forrige weblinks forhåndsvisninger som standard",
"Display name": "Visningsnavn",
- "Email Address": "Email adresse",
"Email, name or matrix ID": "E-mail, navn eller matrix-id",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "Krypterede meddelelser vil ikke være synlige på klienter, der endnu ikke implementerer kryptering",
"Encrypted room": "Krypteret rummet",
"Encryption is enabled in this room": "Kryptering er aktiveret i dette rum",
"Encryption is not enabled in this room": "Kryptering er ikke aktiveret i dette rum",
- "ended the call.": "Afsluttede opkaldet.",
"End-to-end encryption is in beta and may not be reliable": "End-to-end kryptering er i beta og kan ikke være pålidelig",
"Error": "Fejl",
"Export E2E room keys": "Eksporter E2E rum nøgler",
"Failed to change password. Is your password correct?": "Kunne ikke ændre adgangskode. Er din adgangskode korrekt?",
- "Failed to forget room": "Kunne ikke glemme rummet",
"Failed to leave room": "Kunne ikke forlade rum",
"Failed to reject invitation": "Kunne ikke afvise invitationen",
"Failed to send email": "Kunne ikke sende e-mail",
@@ -120,56 +95,10 @@
"Remove": "Fjerne",
"Settings": "Indstillinger",
"unknown error code": "Ukendt fejlkode",
- "en": "Engelsk",
- "pt-br": "Brasiliansk Portugisisk",
- "de": "Tysk",
- "da": "Dansk",
- "ru": "Russisk",
"%(targetName)s accepted an invitation.": "%(targetName)s accepterede en invitation.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepteret invitationen til %(displayName)s.",
"%(names)s and %(lastPerson)s are typing": "%(names)s og %(lastPerson)s er ved at skrive",
"%(names)s and one other are typing": "%(names)s og den anden skriver",
- "%(names)s and %(count)s others are typing": "%(names)s og %(count)s andre skriver",
"%(senderName)s answered the call.": "%(senderName)s besvarede opkaldet.",
- "Add a widget": "Tilføj en widget",
- "ar-ae": "Arabisk (U.A.E.)",
- "ar-bh": "Arabisk (Bahrain)",
- "ar-dz": "Arabisk (Algeriet)",
- "ar-iq": "Arabisk (Irak)",
- "ar-jo": "Arabisk (Jordan)",
- "ar-kw": "Arabisk (Kuwait)",
- "ar-lb": "Arabisk (Libanon)",
- "ar-ly": "Arabisk (Libyen)",
- "ar-om": "Arabisk (Oman)",
- "ar-qa": "Arabisk (Qatar)",
- "ar-ye": "Arabisk (Jemen)",
- "ar-tn": "Arabisk (Tunesien)",
- "de-li": "Tysk (Liechtenstein)",
- "de-lu": "Tysk (Luxembourg)",
- "en-bz": "Engelsk (Belize)",
- "en-gb": "Engelsk (United Kingdom)",
- "en-jm": "Engelsk (Jamaica)",
- "en-tt": "Engelsk (Trinidad)",
- "es-co": "Spansk (Colombia)",
- "es-cr": "Spansk (Costa Rica)",
- "es-do": "Spansk (Dominikanske Republik)",
- "es-gt": "Spansk (Guatemala)",
- "es-pa": "Spansk (Panama)",
- "es-pe": "Spansk (Peru)",
- "es-pr": "Spansk (Puerto Rico)",
- "es-sv": "Spansk (El Salvador)",
- "eu": "Baskisk (Baskien)",
- "fo": "Færøsk",
- "fr-lu": "Fransk (Luxembourg)",
- "gd": "Gælisk (Skotland)",
- "it-ch": "Italiensk (Schweiz)",
- "ko": "Koreansk",
- "mk": "Makedonsk (FYROM)",
- "nl-be": "Nederlandsk (Belgien)",
- "rm": "Rætoromansk",
- "ro-mo": "Rumænsk (Republikken Moldova)",
- "ru-mo": "Russisk (Republikken Moldova)",
- "sv-fi": "Svensk (Finland)",
- "sx": "Sutu",
- "sz": "Samisk (Lappisk)"
+ "Add a widget": "Tilføj en widget"
}
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 661cd4c78f..db12a69657 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -10,7 +10,6 @@
"New passwords must match each other.": "Die neuen Passwörter müssen identisch sein.",
"A new password must be entered.": "Es muss ein neues Passwort eingegeben werden.",
"The email address linked to your account must be entered.": "Es muss die mit dem Benutzerkonto verbundene E-Mail-Adresse eingegeben werden.",
- "Failed to send email: ": "Email konnte nicht versendet werden: ",
"unknown device": "Unbekanntes Gerät",
"NOT verified": "NICHT verifiziert",
"Blacklisted": "Blockiert",
@@ -22,10 +21,10 @@
"User ID": "Benutzer-ID",
"Curve25519 identity key": "Curve25519-Identitäts-Schlüssel",
"Claimed Ed25519 fingerprint key": "Geforderter Ed25519-Fingerprint-Schlüssel",
- "none": "keiner",
+ "none": "nicht vorhanden",
"Algorithm": "Algorithmus",
"unencrypted": "unverschlüsselt",
- "Decryption error": "Entschlüsselungs Fehler",
+ "Decryption error": "Fehler beim Entschlüsseln",
"Session ID": "Sitzungs-ID",
"End-to-end encryption information": "Informationen zur Ende-zu-Ende-Verschlüsselung",
"Event information": "Ereignis-Information",
@@ -45,34 +44,21 @@
"Login as guest": "Als Gast anmelden",
"Return to app": "Zurück zur Anwendung",
"Sign in": "Anmelden",
- "Create a new account": "Erstelle einen neuen Benutzer",
"Send an encrypted message": "Verschlüsselte Nachricht senden",
"Send a message (unencrypted)": "Nachricht senden (unverschlüsselt)",
"Warning!": "Warnung!",
"Error": "Fehler",
- "accept": "akzeptiere",
- "accepted an invitation": "Einladung akzeptieren",
- "accepted the invitation for": "Akzeptierte die Einladung für",
"Add email address": "E-Mail-Adresse hinzufügen",
"Advanced": "Erweitert",
- "and": "und",
"An email has been sent to": "Eine E-Mail wurde gesendet an",
"Anyone who knows the room's link, apart from guests": "Alle, denen der Raum-Link bekannt ist (ausgenommen Gäste)",
"Anyone who knows the room's link, including guests": "Alle, denen der Raum-Link bekannt ist (auch Gäste)",
- "Are you sure you want to leave the room?": "Bist du sicher, dass du den Raum verlassen willst?",
"Are you sure you want to reject the invitation?": "Bist du sicher, dass du die Einladung ablehnen willst?",
"Are you sure you want to upload the following files?": "Bist du sicher, dass du die folgenden Dateien hochladen möchtest?",
- "banned": "gebannt",
"Banned users": "Verbannte Benutzer",
"Bug Report": "Fehlerbericht",
- "changed avatar": "änderte Avatar",
- "changed their display name from": "änderte seinen Anzeigenamen von",
- "changed their profile picture": "änderte sein Profilbild",
- "changed the room name to": "änderte den Raumnamen zu",
- "changed the topic to": "änderte das Thema zu",
"Changes to who can read history will only apply to future messages in this room": "Änderungen, die bestimmen, wer den Chatverlauf lesen kann, gelten nur für zukünftige Nachrichten in diesem Raum",
"Clear Cache and Reload": "Cache leeren und neu laden",
- "Click here": "Hier klicken,",
"Confirm your new password": "Neues Passwort bestätigen",
"Continue": "Fortfahren",
"Create an account": "Benutzerkonto erstellen",
@@ -80,67 +66,45 @@
"Cryptography": "Verschlüsselung",
"Deactivate Account": "Benutzerkonto deaktivieren",
"Deactivate my account": "Mein Benutzerkonto deaktivieren",
- "decline": "Ablehnen",
"Devices will not yet be able to decrypt history from before they joined the room": "Geräte werden nicht in der Lage sein, den bisherigen Chatverlauf vor dem Betreten des Raumes zu entschlüsseln",
"Display name": "Anzeigename",
- "Email Address": "E-Mail-Adresse",
"Email, name or matrix ID": "E-Mail, Name oder Matrix-ID",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "Verschlüsselte Nachrichten werden nicht in Matrix-Clients sichtbar sein, die die Verschlüsselung noch nicht implementiert haben",
"Encrypted room": "Verschlüsselter Raum",
"Encryption is enabled in this room": "Verschlüsselung ist in diesem Raum aktiviert",
"Encryption is not enabled in this room": "Verschlüsselung ist in diesem Raum nicht aktiviert",
- "ended the call.": "beendete den Anruf.",
"End-to-end encryption is in beta and may not be reliable": "Die Ende-zu-Ende-Verschlüsselung befindet sich aktuell im Beta-Stadium und ist eventuell noch nicht hundertprozentig zuverlässig",
"Failed to send email": "Fehler beim Senden der E-Mail",
"Account": "Benutzerkonto",
- "Add phone number": "Telefonnummer hinzufügen",
- "an address": "an Adresse",
+ "Add phone number": "Telefon-Nr. hinzufügen",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Dein Passwort wurde erfolgreich geändert. Du wirst erst Benachrichtigungen auf anderen Geräten empfangen können, wenn du dich dort erneut anmeldest",
- "answered the call.": "beantwortete den Anruf.",
"Can't load user settings": "Benutzereinstellungen können nicht geladen werden",
- "changed name": "änderte Namen",
- "changed the power level of": "änderte Berechtigungslevel von",
"Clear Cache": "Cache leeren",
"Click here to fix": "Zum reparieren hier klicken",
- "*️⃣ Commands": "*️⃣ Befehle",
"Default": "Standard",
- "demote": "Berechtigungslevel herabstufen",
"Export E2E room keys": "E2E-Raum-Schlüssel exportieren",
"Failed to change password. Is your password correct?": "Passwortänderung fehlgeschlagen. Ist dein Passwort richtig?",
- "Failed to forget room": "Vergessen des Raums schlug fehl",
"Failed to leave room": "Verlassen des Raums fehlgeschlagen",
"Failed to reject invitation": "Einladung konnte nicht abgelehnt werden",
"Failed to set avatar.": "Fehler beim Setzen des Profilbilds.",
"Failed to unban": "Aufheben der Verbannung fehlgeschlagen",
"Failed to upload file": "Datei-Upload fehlgeschlagen",
"Favourite": "Favorit",
- "favourite": "Favorit",
"Forget room": "Raum entfernen",
"Forgot your password?": "Passwort vergessen?",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Aus Sicherheitsgründen werden beim Ausloggen alle Ende-zu-Ende-Verschlüsselungs-Schlüssel in diesem Browser gelöscht. Wenn du in späteren Riot-Sitzungen den bisherigen Chatverlauf entschlüsseln möchtest, exportiere bitte deine Schlüssel zur sicheren Aufbewahrung.",
"For security, this session has been signed out. Please sign in again.": "Aus Sicherheitsgründen wurde diese Sitzung beendet. Bitte melde dich erneut an.",
"Found a bug?": "Fehler gefunden?",
"Guests cannot join this room even if explicitly invited.": "Gäste können diesem Raum nicht beitreten, auch wenn sie explizit eingeladen wurden.",
- "had": "hatte",
"Hangup": "Auflegen",
"Homeserver is": "Home-Server:",
"Identity Server is": "Identitätsserver:",
"I have verified my email address": "Ich habe meine E-Mail-Adresse verifiziert",
"Import E2E room keys": "E2E-Raum-Schlüssel importieren",
"Invalid Email Address": "Ungültige E-Mail-Adresse",
- "invited": "eingeladen",
"Invite new room members": "Neue Raum-Mitglieder einladen",
- "is a": "ist ein",
- "is trusted": "wird vertraut",
"Sign in with": "Anmelden mit",
- "joined and left": "hat den Raum betreten und wieder verlassen",
- "joined": "hat den Raum betreten",
- "joined the room": "trat dem Raum bei",
"Leave room": "Raum verlassen",
- "left and rejoined": "ging(en) und trat(en) erneut bei",
- "left": "hat den Raum verlassen",
- "left the room": "verließ den Raum",
- "Logged in as": "Angemeldet als",
"Logout": "Abmelden",
"Manage Integrations": "Integrationen verwalten",
"Members only": "Nur Mitglieder",
@@ -151,46 +115,32 @@
"Never send encrypted messages to unverified devices in this room from this device": "Niemals verschlüsselte Nachrichten an unverifizierte Geräte in diesem Raum von diesem Gerät aus senden",
"New password": "Neues Passwort",
"Notifications": "Benachrichtigungen",
- " (not supported by this browser)": " (von diesem Browser nicht unterstützt)",
"": "",
"No users have specific privileges in this room": "Kein Benutzer hat in diesem Raum besondere Berechtigungen",
- "olm version": "OLM-Version",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Sobald Verschlüsselung für einen Raum aktiviert wird, kann diese (aktuell noch) nicht wieder deaktiviert werden",
"Only people who have been invited": "Nur Personen, die eingeladen wurden",
- "or": "oder",
- "other": "weiteres",
- "others": "andere",
"Password": "Passwort",
"Permissions": "Berechtigungen",
"Phone": "Telefon",
- "placed a": "plazierte einen",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Bitte prüfe deinen E-Mail-Posteingang und klicke auf den in der E-Mail enthaltenen Link. Anschließend auf \"Fortsetzen\" klicken.",
"Privacy warning": "Datenschutzwarnung",
"Privileged Users": "Privilegierte Nutzer",
"Profile": "Profil",
"Refer a friend to Riot:": "Freunde zu Riot einladen:",
- "rejected": "abgelehnt",
"Once you've followed the link it contains, click below": "Nachdem du dem darin enthaltenen Link gefolgt bist, klicke unten",
- "rejected the invitation.": "lehnte die Einladung ab.",
"Reject invitation": "Einladung ablehnen",
"Remove Contact Information?": "Kontakt-Informationen entfernen?",
- "removed their display name": "löschte den eigenen Anzeigenamen",
"Remove": "Entfernen",
- "requested a VoIP conference": "hat eine VoIP-Konferenz angefordert",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ein Zurücksetzen des Passworts hat aktuell zur Folge, dass sämtliche Ende-zu-Ende-Verschlüsselungs-Schlüssel auf allen Geräten zurückgesetzt werden. Um zu verhindern, dass der bereits verschlüsselte Chatverlauf unlesbar wird, sollten die Raum-Schlüssel deshalb zuvor exportiert und anschließend wieder importiert werden. In Zukunft wird diese Vorgehensweise weiter verbessert und vereinfacht werden.",
- "restore": "Zum zurücksetzen",
"Return to login screen": "Zur Anmeldemaske zurückkehren",
"Room Colour": "Raumfarbe",
"Room name (optional)": "Raumname (optional)",
"Scroll to unread messages": "Zu den ungelesenen Nachrichten scrollen",
"Send Invites": "Einladungen senden",
"Send Reset Email": "E-Mail zum Zurücksetzen senden",
- "sent an image": "hat ein Bild gesendet",
- "sent an invitation to": "sandte eine Einladung an",
+ "sent an image": "hat ein Bild übermittelt",
"sent a video": "hat ein Video gesendet",
"Server may be unavailable or overloaded": "Server ist eventuell nicht verfügbar oder überlastet",
- "set a profile picture": "setzte ein Profilbild",
- "set their display name to": "setzte den Anzeigenamen auf",
"Settings": "Einstellungen",
"Signed Out": "Abgemeldet",
"Sign out": "Abmelden",
@@ -201,29 +151,19 @@
"Start a chat": "Chat starten",
"Start Chat": "Chat beginnen",
"Success": "Erfolg",
- "tag direct chat": "Zum kennzeichnen als direkten Chat",
"The default role for new room members is": "Das Standard-Berechtigungslevel für neue Raum-Mitglieder ist",
- "their invitations": "ihre Einladungen",
- "their invitation": "ihre Einladung",
- "These are experimental features that may break in unexpected ways. Use with caution": "Dies sind experimentelle Funktionen die in unerwarteter Weise Fehler verursachen können. Mit Vorsicht benutzen",
"The visibility of existing history will be unchanged": "Die Sichtbarkeit des bereits vorhandenen Chatverlaufs bleibt unverändert",
"This doesn't appear to be a valid email address": "Dies scheint keine gültige E-Mail-Adresse zu sein",
- "this invitation?": "diese Einladung?",
"This is a preview of this room. Room interactions have been disabled": "Dies ist eine Vorschau dieses Raumes. Raum-Interaktionen wurden deaktiviert",
"This room is not accessible by remote Matrix servers": "Remote-Matrix-Server können auf diesen Raum nicht zugreifen",
"This room's internal ID is": "Die interne ID dieses Raumes ist",
- "to join the discussion": "um an der Diskussion teilzunehmen",
"Admin": "Administrator",
- "Server may be unavailable, overloaded, or you hit a bug.": "Server ist nicht verfügbar, überlastet oder du bist auf einen Fehler gestoßen.",
+ "Server may be unavailable, overloaded, or you hit a bug.": "Server ist nicht verfügbar, überlastet oder du bist auf einen Softwarefehler gestoßen.",
"Could not connect to the integration server": "Konnte keine Verbindung zum Integrations-Server herstellen",
"Disable inline URL previews by default": "URL-Vorschau im Chat standardmäßig deaktivieren",
"Labs": "Labor",
"Show panel": "Panel anzeigen",
- "To redact messages": "Zum Nachrichten verbergen",
- "Can't connect to homeserver - please check your connectivity and ensure your": "Die Verbindung mit dem Homeserver ist fehlgeschlagen. Bitte überprüfe deine Verbindung und stelle sicher, dass dein(e) ",
- "tag as": "kennzeichne als",
"To reset your password, enter the email address linked to your account": "Um dein Passwort zurückzusetzen, gib bitte die mit deinem Account verknüpfte E-Mail-Adresse ein",
- "turned on end-to-end encryption (algorithm": "aktivierte Ende-zu-Ende-Verschlüsselung (Algorithmus",
"Unable to add email address": "E-Mail-Adresse konnte nicht hinzugefügt werden",
"Unable to remove contact information": "Die Kontakt-Informationen konnten nicht gelöscht werden",
"Unable to verify email address.": "Die E-Mail-Adresse konnte nicht verifiziert werden.",
@@ -248,20 +188,15 @@
"was invited": "wurde eingeladen",
"was kicked": "wurde gekickt",
"was unbanned": "wurde von der Verbannung aus dem Raum befreit",
- "was": "wurde",
"Who can access this room?": "Wer hat Zugang zu diesem Raum?",
"Who can read history?": "Wer kann den bisherigen Chatverlauf lesen?",
"Who would you like to add to this room?": "Wen möchtest du zu diesem Raum hinzufügen?",
"Who would you like to communicate with?": "Mit wem möchtest du kommunizieren?",
- "Would you like to": "Möchtest du",
"You do not have permission to post to this room": "Du hast keine Berechtigung, in diesem Raum etwas zu senden",
"You have been invited to join this room by %(inviterName)s": "%(inviterName)s hat dich in diesen Raum eingeladen",
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Du wurdest auf allen Geräten abgemeldet und wirst keine Push-Benachrichtigungen mehr erhalten. Um die Benachrichtigungen zu reaktivieren, musst du dich auf jedem Gerät neu anmelden",
- "you must be a": "Berechtigungslevel",
"Your password has been reset": "Dein Passwort wurde zurückgesetzt",
"You should not yet trust it to secure data": "Du solltest aktuell noch nicht darauf vertrauen, dass deine Daten zuverlässig verschlüsselt werden",
- "removed their profile picture": "löschte das eigene Profilbild",
- "times": "mal",
"Bulk Options": "Bulk-Optionen",
"Call Timeout": "Anruf-Timeout",
"Conference call failed.": "Konferenzgespräch fehlgeschlagen.",
@@ -325,18 +260,16 @@
"Make this room private": "Mache diesen Raum privat",
"Share message history with new users": "Bisherigen Chatverlauf mit neuen Nutzern teilen",
"Encrypt room": "Raum verschlüsseln",
- "To send events of type": "Zum Senden von Ereignissen mit Typ",
"%(names)s and %(lastPerson)s are typing": "%(names)s und %(lastPerson)s schreiben",
"%(targetName)s accepted an invitation.": "%(targetName)s hat eine Einladung angenommen.",
- "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s akzeptierte die Einladung für %(displayName)s.",
+ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s hat die Einladung für %(displayName)s akzeptiert.",
"%(names)s and one other are typing": "%(names)s und ein weiteres Raum-Mitglied schreiben",
- "%(names)s and %(count)s others are typing": "%(names)s und %(count)s weitere Raum-Mitglieder schreiben",
"%(senderName)s answered the call.": "%(senderName)s hat den Anruf angenommen.",
"%(senderName)s banned %(targetName)s.": "%(senderName)s hat %(targetName)s dauerhaft aus dem Raum verbannt.",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s hat den Anzeigenamen von \"%(oldDisplayName)s\" auf \"%(displayName)s\" geändert.",
"%(senderName)s changed their profile picture.": "%(senderName)s hat das Profilbild geändert.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s hat das Berechtigungslevel von %(powerLevelDiffText)s geändert.",
- "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s änderte den Raumnamen zu %(roomName)s.",
+ "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s hat den Raumnamen geändert zu %(roomName)s.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s hat das Thema geändert in \"%(topic)s\".",
"/ddg is not a command": "/ddg ist kein Kommando",
"%(senderName)s ended the call.": "%(senderName)s hat den Anruf beendet.",
@@ -350,8 +283,8 @@
"%(targetName)s left the room.": "%(targetName)s hat den Raum verlassen.",
"%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für alle Raum-Mitglieder (ab dem Zeitpunkt, an dem sie eingeladen wurden).",
"%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für alle Raum-Mitglieder (ab dem Zeitpunkt, an dem sie beigetreten sind).",
- "%(senderName)s made future room history visible to all room members.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für Alle Raum-Mitglieder.",
- "%(senderName)s made future room history visible to anyone.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für Jeder.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für alle Raum-Mitglieder.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für Alle.",
"%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für unbekannt (%(visibility)s).",
"Missing room_id in request": "Fehlende room_id in Anfrage",
"Missing user_id in request": "Fehlende user_id in Anfrage",
@@ -365,7 +298,7 @@
"%(senderName)s removed their profile picture.": "%(senderName)s hat das Profilbild gelöscht.",
"%(senderName)s requested a VoIP conference.": "%(senderName)s möchte eine VoIP-Konferenz beginnen.",
"Room %(roomId)s not visible": "Raum %(roomId)s ist nicht sichtbar",
- "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s hat ein Bild gesendet.",
+ "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s hat ein Bild übermittelt.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s hat %(targetDisplayName)s in diesen Raum eingeladen.",
"%(senderName)s set a profile picture.": "%(senderName)s hat ein Profilbild gesetzt.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s hat den Anzeigenamen geändert in %(displayName)s.",
@@ -380,41 +313,17 @@
"You need to be able to invite users to do that.": "Du musst die Berechtigung haben, Nutzer einzuladen, um diese Aktion ausführen zu können.",
"You need to be logged in.": "Du musst angemeldet sein.",
"There are no visible files in this room": "Es gibt keine sichtbaren Dateien in diesem Raum",
- "Error changing language": "Fehler beim Ändern der Sprache",
- "Riot was unable to find the correct Data for the selected Language.": "Riot war nicht in der Lage die korrekten Daten für die ausgewählte Sprache zu finden.",
"Connectivity to the server has been lost.": "Verbindung zum Server wurde unterbrochen.",
"Sent messages will be stored until your connection has returned.": "Gesendete Nachrichten werden gespeichert, bis die Internetverbindung wiederhergestellt wird.",
- "Resend all": "Alle erneut senden",
- "cancel all": "alles abbrechen",
- "now. You can also select individual messages to resend or cancel.": "jetzt. Du kannst auch einzelne Nachrichten zum erneuten Senden oder Abbrechen auswählen.",
"Active call": "Aktiver Anruf",
- "withdrawn": "zurückgezogen",
- "To link to a room it must have": "Um einen Raum zu verlinken, benötigt er",
- "were": "wurden",
- "en": "Englisch",
- "pt-br": "Portugisisch (Brasilien)",
- "de": "Deutsch",
- "da": "Dänisch",
- "ru": "Russisch",
"Drop here %(toAction)s": "Hierher ziehen: %(toAction)s",
"Drop here to tag %(section)s": "Hierher ziehen: %(section)s taggen",
- "to browse the directory": "um das Raum-Verzeichnis zu durchsuchen",
"to demote": "um die Priorität herabzusetzen",
"to favourite": "zum Favorisieren",
- "to make a room or": "um einen Raum zu erstellen, oder",
"to restore": "zum wiederherstellen",
- "to start a chat with someone": "um einen Chat mit jemandem zu starten",
"to tag direct chat": "als Direkt-Chat markieren",
- "You're not in any rooms yet! Press": "Du bist noch keinem Raum beigetreten! Drücke",
"click to reveal": "anzeigen",
"You are trying to access %(roomName)s.": "Du versuchst, auf den Raum \"%(roomName)s\" zuzugreifen.",
- "Monday": "Montag",
- "Tuesday": "Dienstag",
- "Wednesday": "Mittwoch",
- "Thursday": "Donnerstag",
- "Friday": "Freitag",
- "Saturday": "Samstag",
- "Sunday": "Sonntag",
"Failed to forget room %(errCode)s": "Das Entfernen des Raums ist fehlgeschlagen %(errCode)s",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Eine Textnachricht wurde an +%(msisdn)s gesendet. Bitte den darin enthaltenen Verifizierungscode eingeben",
"and %(count)s others...|other": "und %(count)s weitere...",
@@ -422,7 +331,6 @@
"Are you sure?": "Bist du sicher?",
"Attachment": "Anhang",
"Ban": "Verbannen",
- "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Verbindungsaufbau zum Heimserver nicht möglich - bitte Internetverbindung überprüfen und sicherstellen, ob das SSL-Zertifikat des Heimservers vertrauenswürdig ist.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Es kann keine Verbindung zum Heimserver via HTTP aufgebaut werden, wenn die Adresszeile des Browsers eine HTTPS-URL enthält. Entweder HTTPS verwenden oder alternativ unsichere Skripte erlauben.",
"Click to mute audio": "Klicke um den Ton stumm zu stellen",
"Click to mute video": "Klicken, um das Video stummzuschalten",
@@ -436,7 +344,7 @@
"Enter Code": "Code eingeben",
"Failed to ban user": "Verbannen des Benutzers fehlgeschlagen",
"Failed to change power level": "Ändern des Berechtigungslevels fehlgeschlagen",
- "Failed to delete device": "Löschen des Geräts fehlgeschlagen",
+ "Failed to delete device": "Entfernen des Geräts fehlgeschlagen",
"Failed to join room": "Betreten des Raumes ist fehlgeschlagen",
"Failed to kick": "Kicken fehlgeschlagen",
"Failed to mute user": "Stummschalten des Nutzers fehlgeschlagen",
@@ -452,12 +360,11 @@
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' ist kein gültiges Alias-Format",
"Join Room": "Dem Raum beitreten",
"Kick": "Kicken",
- "Level": "Berechtigungslevel",
"Local addresses for this room:": "Lokale Adressen dieses Raumes:",
"Markdown is disabled": "Markdown ist deaktiviert",
"Markdown is enabled": "Markdown ist aktiviert",
"Message not sent due to unknown devices being present": "Nachrichten wurden nicht gesendet, da unbekannte Geräte anwesend sind",
- "New address (e.g. #foo:%(localDomain)s)": "Neue Adresse (z.B. #foo:%(localDomain)s)",
+ "New address (e.g. #foo:%(localDomain)s)": "Neue Adresse (z. B. #foo:%(localDomain)s)",
"not set": "nicht gesetzt",
"not specified": "nicht spezifiziert",
"No devices with registered encryption keys": "Keine Geräte mit registrierten Verschlüsselungs-Schlüsseln",
@@ -473,23 +380,19 @@
"Server unavailable, overloaded, or something else went wrong.": "Server ist nicht verfügbar, überlastet oder ein anderer Fehler ist aufgetreten.",
"Some of your messages have not been sent.": "Einige deiner Nachrichten wurden nicht gesendet.",
"Submit": "Absenden",
- "The main address for this room is: %(canonical_alias_section)s": "Die Hauptadresse für diesen Raum ist: %(canonical_alias_section)s",
"%(actionVerb)s this person?": "Diese Person %(actionVerb)s?",
"This room has no local addresses": "Dieser Raum hat keine lokale Adresse",
- "This room is private or inaccessible to guests. You may be able to join if you register": "Dieser Raum ist privat oder für Gäste nicht zugänglich. Du kannst jedoch eventuell beitreten, wenn du dich registrierst",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Es wurde versucht, einen bestimmten Punkt im Chatverlauf dieses Raumes zu laden. Dir fehlt jedoch die Berechtigung, die betreffende Nachricht zu sehen.",
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Es wurde versucht, einen bestimmten Punkt im Chatverlauf dieses Raumes zu laden, der Punkt konnte jedoch nicht gefunden werden.",
"Turn Markdown off": "Markdown deaktiveren",
"Turn Markdown on": "Markdown aktivieren",
"Unable to load device list": "Geräteliste konnte nicht geladen werden",
"Unknown room %(roomId)s": "Unbekannter Raum %(roomId)s",
- "Usage: /markdown on|off": "Verwendung: /markdown on|off",
"You seem to be in a call, are you sure you want to quit?": "Du scheinst in einem Anruf zu sein. Bist du sicher schließen zu wollen?",
"You seem to be uploading files, are you sure you want to quit?": "Du scheinst Dateien hochzuladen. Bist du sicher schließen zu wollen?",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du wirst diese Änderung nicht rückgängig machen können, da der Nutzer dasselbe Berechtigungslevel wie du selbst erhalten wird.",
"Make Moderator": "Zum Moderator ernennen",
"Room": "Raum",
- "(~%(searchCount)s results)": "(~%(searchCount)s Ergebnisse)",
"Cancel": "Abbrechen",
"bold": "Fett",
"italic": "Kursiv",
@@ -500,14 +403,13 @@
"bullet": "Aufzählung",
"Click to unmute video": "Klicken, um die Video-Stummschaltung zu deaktivieren",
"Click to unmute audio": "Klicken, um den Ton wieder einzuschalten",
- "Failed to load timeline position": "Laden der Position im Zeitstrahl fehlgeschlagen",
+ "Failed to load timeline position": "Laden der Position im Chatverlauf fehlgeschlagen",
"Failed to toggle moderator status": "Umschalten des Moderator-Status fehlgeschlagen",
"Enable encryption": "Verschlüsselung aktivieren",
"The main address for this room is": "Die Hauptadresse für diesen Raum ist",
"Autoplay GIFs and videos": "GIF-Dateien und Videos automatisch abspielen",
"Don't send typing notifications": "Schreibbenachrichtigungen unterdrücken",
"Hide read receipts": "Lesebestätigungen verbergen",
- "Never send encrypted messages to unverified devices in this room": "In diesem Raum keine verschlüsselten Nachrichten an unverifizierte Geräte senden",
"numbullet": "Nummerierung",
"%(items)s and %(remaining)s others": "%(items)s und %(remaining)s weitere",
"%(items)s and one other": "%(items)s und ein(e) weitere(r)",
@@ -527,10 +429,9 @@
"%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)shaben den Raum verlassen und %(repeats)s mal neu betreten",
"%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)shat den Raum %(repeats)s mal verlassen und wieder neu betreten",
"%(severalUsers)sleft and rejoined": "%(severalUsers)shaben den Raum verlassen und wieder neu betreten",
- "%(oneUser)sleft left and rejoined": "%(oneUser)sging und trat erneut bei",
"%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)shaben ihre Einladung %(repeats)s-mal abgelehnt",
"%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)shat die Einladung %(repeats)s mal abgelehnt",
- "%(severalUsers)srejected their invitations": "%(severalUsers)shaben ihre Einladung abgelehnt",
+ "%(severalUsers)srejected their invitations": "%(severalUsers)shaben ihre Einladungen abgelehnt",
"%(oneUser)srejected their invitation": "%(oneUser)shat die Einladung abgelehnt",
"%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)swurden die ursprünglichen Einladungen %(repeats)s mal wieder entzogen",
"%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)swurde die Einladung %(repeats)s mal wieder entzogen",
@@ -549,7 +450,7 @@
"was kicked %(repeats)s times": "wurde %(repeats)s-mal gekickt",
"were kicked": "wurden gekickt",
"%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)shaben ihren Namen %(repeats)s mal geändert",
- "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)shat den Namen %(repeats)s mal geändert",
+ "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)shat den Namen %(repeats)s-mal geändert",
"%(severalUsers)schanged their name": "%(severalUsers)shaben ihre Namen geändert",
"%(oneUser)schanged their name": "%(oneUser)shat den Namen geändert",
"%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)shaben %(repeats)s mal ihr Profilbild geändert",
@@ -594,7 +495,6 @@
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Die exportierte Datei ist mit einer Passphrase geschützt. Du kannst die Passphrase hier eingeben, um die Datei zu entschlüsseln.",
"You must join the room to see its files": "Du musst dem Raum beitreten, um die Raum-Dateien sehen zu können",
"Reject all %(invitedRooms)s invites": "Alle %(invitedRooms)s Einladungen ablehnen",
- "Start new Chat": "Starte neuen Chat",
"Failed to invite": "Einladen fehlgeschlagen",
"Failed to invite user": "Einladen des Nutzers ist fehlgeschlagen",
"Confirm Removal": "Entfernen bestätigen",
@@ -696,8 +596,7 @@
"Camera": "Kamera",
"Device already verified!": "Gerät bereits verifiziert!",
"Export": "Export",
- "Failed to register as guest:": "Die Registrierung als Gast ist fehlgeschlagen:",
- "Guest access is disabled on this Home Server.": "Gastzugang ist auf diesem Heimserver deaktivert.",
+ "Guest access is disabled on this Home Server.": "Der Gastzugang ist auf diesem Heimserver deaktiviert.",
"Import": "Importieren",
"Incorrect username and/or password.": "Inkorrekter Nutzername und/oder Passwort.",
"Results from DuckDuckGo": "Ergebnisse von DuckDuckGo",
@@ -715,7 +614,6 @@
"Password:": "Passwort:",
"Register": "Registrieren",
"Save": "Speichern",
- "Setting a user name will create a fresh account": "Die Eingabe eines Benutzernamens wird ein neues Konto erzeugen",
"Tagged as: ": "Markiert als: ",
"This Home Server does not support login using email address.": "Dieser Heimserver unterstützt den Login mittels E-Mail-Adresse nicht.",
"Unknown (user, device) pair:": "Unbekanntes (Nutzer-/Gerät-)Paar:",
@@ -728,7 +626,7 @@
"WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "WARNUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signatur-Schlüssel für %(userId)s und das Gerät %(deviceId)s ist \"%(fprint)s\", welcher nicht mit dem bereitgestellten Schlüssel \"%(fingerprint)s\" übereinstimmt. Dies kann bedeuten, dass deine Kommunikation abgehört wird!",
"You have disabled URL previews by default.": "Du hast die URL-Vorschau standardmäßig deaktiviert.",
"You have enabled URL previews by default.": "Du hast die URL-Vorschau standardmäßig aktiviert.",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName hat das Raum-Bild geändert zu
",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s hat das Raum-Bild geändert zu
",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s hat das Raum-Bild für %(roomName)s geändert",
"Hide removed messages": "Gelöschte Nachrichten verbergen",
"Start new chat": "Neuen Chat starten",
@@ -738,7 +636,6 @@
"Error: Problem communicating with the given homeserver.": "Fehler: Problem bei der Kommunikation mit dem angegebenen Home-Server.",
"Failed to fetch avatar URL": "Abrufen der Avatar-URL fehlgeschlagen",
"The phone number entered looks invalid": "Die eingegebene Telefonnummer scheint ungültig zu sein",
- "This room is private or inaccessible to guests. You may be able to join if you register.": "Dieser Raum ist privat oder für Gäste nicht betretbar. Du kannst evtl. beitreten wenn du dich registrierst.",
"Uploading %(filename)s and %(count)s others|zero": "%(filename)s wird hochgeladen",
"Uploading %(filename)s and %(count)s others|one": "%(filename)s und %(count)s weitere Dateien werden hochgeladen",
"Uploading %(filename)s and %(count)s others|other": "%(filename)s und %(count)s weitere Dateien werden hochgeladen",
@@ -764,7 +661,6 @@
"Accept": "Akzeptieren",
"Active call (%(roomName)s)": "Aktiver Anruf (%(roomName)s)",
"Admin Tools": "Admin-Werkzeuge",
- "And %(count)s more...": "Und %(count)s weitere...",
"Alias (optional)": "Alias (optional)",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Verbindung zum Heimserver fehlgeschlagen - bitte überprüfe die Internetverbindung und stelle sicher, dass dem SSL-Zertifikat deines Heimservers vertraut wird und dass Anfragen nicht durch eine Browser-Erweiterung blockiert werden.",
"Click here to join the discussion!": "Hier klicken, um an der Diskussion teilzunehmen!",
@@ -794,14 +690,13 @@
"%(roomName)s is not accessible at this time.": "%(roomName)s ist aktuell nicht zugreifbar.",
"Seen by %(userName)s at %(dateTime)s": "Gesehen von %(userName)s um %(dateTime)s",
"Send anyway": "Trotzdem senden",
- "Set": "Setze",
"Start authentication": "Authentifizierung beginnen",
"Show Text Formatting Toolbar": "Text-Formatierungs-Werkzeugleiste anzeigen",
"This invitation was sent to an email address which is not associated with this account:": "Diese Einladung wurde an eine E-Mail-Adresse gesendet, die nicht mit diesem Benutzerkonto verknüpft ist:",
"This room": "In diesem Raum",
"To link to a room it must have an address.": "Um einen Raum zu verlinken, muss er eine Adresse haben.",
"Undecryptable": "Nicht entschlüsselbar",
- "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Kann nicht feststellen, ob die Adresse an die diese Einladung gesendet wurde mit einer übereinstimmt, die zu deinem Konto gehört.",
+ "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Es konnte nicht ermittelt werden, ob die Adresse, an die diese Einladung gesendet wurde, mit einer mit deinem Benutzerkonto verknüpften Adresse übereinstimmt.",
"Unencrypted message": "Nicht verschlüsselbare Nachricht",
"unknown caller": "Unbekannter Anrufer",
"Unnamed Room": "Unbenannter Raum",
@@ -844,12 +739,11 @@
"Changes colour scheme of current room": "Ändere Farbschema des aktuellen Raumes",
"Delete widget": "Widget entfernen",
"Define the power level of a user": "Setze das Berechtigungslevel eines Benutzers",
- "Edit": "Bearbeiten",
+ "Edit": "Editieren",
"Enable automatic language detection for syntax highlighting": "Automatische Spracherkennung für die Syntax-Hervorhebung aktivieren",
"Hide Apps": "Apps verbergen",
- "Hide join/leave messages (invites/kicks/bans unaffected)": "Verberge Beitritt-/Verlassen-Meldungen (außer Einladungen/Kicks/Bans)",
- "Hide avatar and display name changes": "Verberge Avatar- und Anzeigenamen-Änderungen",
- "Matrix Apps": "Matrix-Apps",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Betreten-/Verlassen-Benachrichtigungen verbergen (gilt nicht für Einladungen/Kicks/Bans)",
+ "Hide avatar and display name changes": "Profilbild- und Anzeigenamen-Änderungen verbergen",
"Revoke widget access": "Ziehe Widget-Zugriff zurück",
"Sets the room topic": "Setzt das Raum-Thema",
"Show Apps": "Apps anzeigen",
@@ -859,32 +753,16 @@
"You are not in this room.": "Du bist nicht in diesem Raum.",
"You do not have permission to do that in this room.": "Du hast keine Berechtigung, dies in diesem Raum zu tun.",
"Verifies a user, device, and pubkey tuple": "Verifiziert ein Tupel aus Nutzer, Gerät und öffentlichem Schlüssel",
- "Autocomplete Delay (ms):": "Verzögerung zur Autovervollständigung (ms):",
- "This Home server does not support groups": "Dieser Heimserver unterstützt keine Gruppen",
+ "Autocomplete Delay (ms):": "Verzögerung bei Autovervollständigung (ms):",
"Loading device info...": "Lädt Geräte-Info...",
- "Groups": "Gruppen",
- "Create a new group": "Erstelle eine neue Gruppe",
- "Create Group": "Erstelle Gruppe",
- "Group Name": "Gruppenname",
"Example": "Beispiel",
"Create": "Erstelle",
- "Group ID": "Gruppen-ID",
- "+example:%(domain)s": "+beispiel:%(domain)s",
- "Group IDs must be of the form +localpart:%(domain)s": "Gruppen-IDs müssen von der Form '+lokalteil:%(domain)s' sein",
- "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Es ist aktuell nur möglich, Gruppen auf deinem eigenen Heimserver zu erstellen. Nutze eine Gruppen-ID, die mit %(domain)s endet",
"Room creation failed": "Raum-Erstellung fehlgeschlagen",
- "You are a member of these groups:": "Du bist Mitglied in folgenden Gruppen:",
- "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Erstelle eine Gruppe um deine Community darzustellen! Definiere eine Menge von Räumen und deine eigene angepasste Startseite um deinen Bereich im Matrix-Universum zu markieren.",
- "Join an existing group": "Trete eine existierenden Gruppe bei",
- "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Um einer bereits vorhandenen Gruppe beitreten zu können, muss dir die Gruppen-Kennung bekannt sein. Diese sieht aus wie +example:matrix.org.",
"Featured Rooms:": "Hervorgehobene Räume:",
- "Error whilst fetching joined groups": "Fehler beim Laden beigetretener Gruppen",
"Featured Users:": "Hervorgehobene Nutzer:",
- "Edit Group": "Gruppe bearbeiten",
"Automatically replace plain text Emoji": "Klartext-Emoji automatisch ersetzen",
"Failed to upload image": "Bild-Hochladen fehlgeschlagen",
- "Failed to update group": "Aktualisieren der Gruppe fehlgeschlagen",
- "Hide avatars in user and room mentions": "Verberge Profilbilder in Benutzer- und Raum-Erwähnungen",
+ "Hide avatars in user and room mentions": "Profilbilder in Benutzer- und Raum-Erwähnungen verbergen",
"AM": "a. m.",
"PM": "p. m.",
"The maximum permitted number of widgets have already been added to this room.": "Die maximal erlaubte Anzahl an hinzufügbaren Widgets für diesen Raum wurde erreicht.",
@@ -892,12 +770,236 @@
"Do you want to load widget from URL:": "Möchtest du das Widget von folgender URL laden:",
"Integrations Error": "Integrations-Error",
"NOTE: Apps are not end-to-end encrypted": "BEACHTE: Apps sind nicht Ende-zu-Ende verschlüsselt",
- "%(widgetName)s widget added by %(senderName)s": "Widget \"%(widgetName)s\" von %(senderName)s hinzugefügt",
- "%(widgetName)s widget removed by %(senderName)s": "Widget \"%(widgetName)s\" von %(senderName)s entfernt",
+ "%(widgetName)s widget added by %(senderName)s": "%(senderName)s hat das Widget %(widgetName)s hinzugefügt",
+ "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s hat das Widget %(widgetName)s entfernt",
"Robot check is currently unavailable on desktop - please use a web browser": "In der Desktop-Version kann derzeit nicht geprüft werden, ob ein Benutzer ein Roboter ist. Bitte einen Webbrowser verwenden",
"%(widgetName)s widget modified by %(senderName)s": "Das Widget '%(widgetName)s' wurde von %(senderName)s bearbeitet",
- "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s",
- "%(weekDayName)s, %(monthName)s %(day)s": "%(weekDayName)s, %(day)s %(monthName)s",
"Copied!": "Kopiert!",
- "Failed to copy": "Kopieren fehlgeschlagen"
+ "Failed to copy": "Kopieren fehlgeschlagen",
+ "Ignored Users": "Ignorierte Benutzer",
+ "Ignore": "Ignorieren",
+ "You are now ignoring %(userId)s": "%(userId)s wird jetzt ignoriert",
+ "You are no longer ignoring %(userId)s": "%(userId)s wird nicht mehr ignoriert",
+ "Message removed by %(userId)s": "Nachricht wurde von %(userId)s entfernt",
+ "Name or matrix ID": "Name oder Matrix-ID",
+ "Unable to leave room": "Verlassen des Raumes fehlgeschlagen",
+ "Leave": "Verlassen",
+ "Failed to invite the following users to %(groupId)s:": "Die folgenden Benutzer konnten nicht in die Gruppe %(groupId)s eingeladen werden:",
+ "Leave %(groupName)s?": "%(groupName)s verlassen?",
+ "Add a Room": "Raum hinzufügen",
+ "Add a User": "Benutzer hinzufügen",
+ "Light theme": "Helles Thema",
+ "Dark theme": "Dunkles Thema",
+ "You have entered an invalid address.": "Du hast eine ungültige Adresse eingegeben.",
+ "Matrix ID": "Matrix-ID",
+ "Advanced options": "Erweiterte Optionen",
+ "Block users on other matrix homeservers from joining this room": "Benutzer anderer Matrix-Heimserver das Betreten dieses Raumes verbieten",
+ "This setting cannot be changed later!": "Diese Einstellung kann nachträglich nicht mehr geändert werden!",
+ "Unignore": "Entignorieren",
+ "User Options": "Benutzer-Optionen",
+ "Unignored user": "Benutzer nicht mehr ignoriert",
+ "Ignored user": "Benutzer ignoriert",
+ "Stops ignoring a user, showing their messages going forward": "Beendet das Ignorieren eines Benutzers, nachfolgende Nachrichten werden wieder angezeigt",
+ "Ignores a user, hiding their messages from you": "Ignoriert einen Benutzer und verbirgt dessen Nachrichten",
+ "Disable Emoji suggestions while typing": "Emoji-Vorschläge während des Schreibens deaktivieren",
+ "Banned by %(displayName)s": "Verbannt von %(displayName)s",
+ "To send messages, you must be a": "Notwendiges Berechtigungslevel, um Nachrichten zu senden",
+ "To invite users into the room, you must be a": "Notwendiges Berechtigungslevel, um Benutzer in diesen Raum einladen zu können:",
+ "To configure the room, you must be a": "Notwendiges Berechtigungslevel, um diesen Raum zu konfigurieren:",
+ "To kick users, you must be a": "Notwendiges Berechtigungslevel, um Benutzer zu kicken:",
+ "To ban users, you must be a": "Notwendiges Berechtigungslevel, um Benutzer zu verbannen:",
+ "To remove other users' messages, you must be a": "Notwendiges Berechtigungslevel, um Nachrichten von anderen Benutzern zu löschen",
+ "To send events of type , you must be a": "Notwendiges Berechtigungslevel, um Ereignisse des Typs zu senden",
+ "To change the room's avatar, you must be a": "Notwendiges Berechtigungslevel, um das Raumbild zu ändern",
+ "To change the room's name, you must be a": "Notwendiges Berechtigungslevel, um den Raumnamen zu ändern",
+ "To change the room's main address, you must be a": "Notwendiges Berechtigungslevel, um die Hauptadresse des Raumes zu ändern",
+ "To change the room's history visibility, you must be a": "Notwendiges Berechtigungslevel, um die Sichtbarkeit des bisherigen Chatverlaufs zu ändern",
+ "To change the permissions in the room, you must be a": "Notwendiges Berechtigungslevel, um Berechtigungen in diesem Raum zu ändern",
+ "To change the topic, you must be a": "Notwendiges Berechtigungslevel, um das Thema zu ändern",
+ "To modify widgets in the room, you must be a": "Notwendiges Berechtigungslevel, um Widgets in diesem Raum zu ändern",
+ "Description": "Beschreibung",
+ "Unable to accept invite": "Einladung kann nicht akzeptiert werden",
+ "Failed to invite users to %(groupId)s": "Benutzer konnten nicht in %(groupId)s eingeladen werden",
+ "Unable to reject invite": "Einladung konnte nicht abgelehnt werden",
+ "Who would you like to add to this summary?": "Wen möchtest zu dieser Übersicht hinzufügen?",
+ "Add to summary": "Zur Übersicht hinzufügen",
+ "Failed to add the following users to the summary of %(groupId)s:": "Die folgenden Benutzer konnten nicht zur Übersicht von %(groupId)s hinzugefügt werden:",
+ "Which rooms would you like to add to this summary?": "Welche Räume möchtest du zu dieser Übersicht hinzufügen?",
+ "Room name or alias": "Raum-Name oder Alias",
+ "Failed to add the following rooms to the summary of %(groupId)s:": "Die folgenden Räume konnten nicht zur Übersicht von %(groupId)s hinzugefügt werden:",
+ "Failed to remove the room from the summary of %(groupId)s": "Der Raum konnte nicht aus der Übersicht von %(groupId)s entfernt werden",
+ "The room '%(roomName)s' could not be removed from the summary.": "Der Raum '%(roomName)s' konnte nicht aus der Übersicht entfernt werden.",
+ "Failed to remove a user from the summary of %(groupId)s": "Benutzer konnte nicht aus der Übersicht von %(groupId)s entfernt werden",
+ "The user '%(displayName)s' could not be removed from the summary.": "Der Benutzer '%(displayName)s' konnte nicht aus der Übersicht entfernt werden.",
+ "Unknown": "Unbekannt",
+ "Failed to add the following rooms to %(groupId)s:": "Die folgenden Räume konnten nicht zu %(groupId)s hinzugefügt werden:",
+ "Matrix Room ID": "Matrix-Raum-ID",
+ "email address": "E-Mail-Adresse",
+ "Try using one of the following valid address types: %(validTypesList)s.": "Bitte einen der folgenden gültigen Adresstypen verwenden: %(validTypesList)s.",
+ "Failed to remove '%(roomName)s' from %(groupId)s": "Entfernen von '%(roomName)s' aus %(groupId)s fehlgeschlagen",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Bist du sicher, dass du '%(roomName)s' aus '%(groupId)s' entfernen möchtest?",
+ "Invites sent": "Einladungen gesendet",
+ "Remove avatar": "Profilbild entfernen",
+ "Disable big emoji in chat": "Große Emojis im Chat deaktiveren",
+ "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Sonst ist hier niemand! Möchtest Du Benutzer einladen oder die Warnungen über den leeren Raum deaktivieren?",
+ "Pinned Messages": "Angeheftete Nachrichten",
+ "%(senderName)s changed the pinned messages for the room.": "%(senderName)s hat die angehefteten Nachrichten für diesen Raum geändert.",
+ "Jump to read receipt": "Zur Lesebestätigung springen",
+ "Message Pinning": "Anheften von Nachrichten",
+ "Publish this community on your profile": "Diese Community in deinem Profil veröffentlichen",
+ "Long Description (HTML)": "Lange Beschreibung (HTML)",
+ "Jump to message": "Zur Nachricht springen",
+ "No pinned messages.": "Keine angehefteten Nachrichten vorhanden.",
+ "Loading...": "Lade...",
+ "Unpin Message": "Nachricht nicht mehr anheften",
+ "Unnamed room": "Unbenannter Raum",
+ "World readable": "Lesbar für alle",
+ "Guests can join": "Gäste können beitreten",
+ "No rooms to show": "Keine anzeigbaren Räume",
+ "Community Settings": "Community-Einstellungen",
+ "Community Member Settings": "Community-Mitglieder-Einstellungen",
+ "Who would you like to add to this community?": "Wen möchtest du zu dieser Community hinzufügen?",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warnung: Jede Person, die du einer Community hinzufügst, wird für alle, die die Community-ID kennen, öffentlich sichtbar sein",
+ "Invite new community members": "Neue Community-Mitglieder einladen",
+ "Invite to Community": "In die Community einladen",
+ "Which rooms would you like to add to this community?": "Welche Räume möchtest du zu dieser Community hinzufügen?",
+ "Warning: any room you add to a community will be publicly visible to anyone who knows the community ID": "Warnung: Jeder Raum, den du zu einer Community hinzufügst, wird für alle, die die Community-ID kennen, öffentlich sichtbar sein",
+ "Add rooms to the community": "Räume zur Community hinzufügen",
+ "Add to community": "Zur Community hinzufügen",
+ "Your community invitations have been sent.": "Deine Community-Einladungen wurden gesendet.",
+ "Failed to invite users to community": "Benutzer konnten nicht in die Community eingeladen werden",
+ "Communities": "Communities",
+ "Invalid community ID": "Ungültige Community-ID",
+ "'%(groupId)s' is not a valid community ID": "'%(groupId)s' ist keine gültige Community-ID",
+ "Related Communities": "Verknüpfte Communities",
+ "Related communities for this room:": "Verknüpfte Communities für diesen Raum:",
+ "This room has no related communities": "Dieser Raum hat keine verknüpften Communities",
+ "New community ID (e.g. +foo:%(localDomain)s)": "Neue Community-ID (z. B. +foo:%(localDomain)s)",
+ "Remove from community": "Aus Community entfernen",
+ "Failed to remove user from community": "Entfernen des Benutzers aus der Community fehlgeschlagen",
+ "Filter community members": "Community-Mitglieder filtern",
+ "Filter community rooms": "Community-Räume filtern",
+ "Failed to remove room from community": "Entfernen des Raumes aus der Community fehlgeschlagen",
+ "Removing a room from the community will also remove it from the community page.": "Ein Entfernen eines Raumes aus der Community wird ihn auch von der Community-Seite entfernen.",
+ "Community IDs may only contain alphanumeric characters": "Community-IDs dürfen nur alphanumerische Zeichen enthalten",
+ "Create Community": "Community erstellen",
+ "Community Name": "Community-Name",
+ "Community ID": "Community-ID",
+ "example": "Beispiel",
+ "Add rooms to the community summary": "Fügt Räume zur Community-Übersicht hinzu",
+ "Add users to the community summary": "Fügt Benutzer zur Community-Übersicht hinzu",
+ "Failed to update community": "Aktualisieren der Community fehlgeschlagen",
+ "Leave Community": "Community verlassen",
+ "Add rooms to this community": "Räume zu dieser Community hinzufügen",
+ "%(inviter)s has invited you to join this community": "%(inviter)s hat dich in diese Community eingeladen",
+ "You are a member of this community": "Du bist ein Mitglied dieser Community",
+ "You are an administrator of this community": "Du bist ein Administrator dieser Community",
+ "Community %(groupId)s not found": "Community '%(groupId)s' nicht gefunden",
+ "This Home server does not support communities": "Dieser Heimserver unterstützt keine Communities",
+ "Failed to load %(groupId)s": "'%(groupId)s' konnte nicht geladen werden",
+ "Error whilst fetching joined communities": "Fehler beim Laden beigetretener Communities",
+ "Create a new community": "Neue Community erstellen",
+ "Create a community to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Erzeuge eine Community um deine Community zu repräsentieren! Definiere eine Menge von Räumen und deine eigene angepasste Startseite um dein Revier im Matrix-Universum zu markieren.",
+ "Join an existing community": "Einer bestehenden Community beitreten",
+ "To join an existing community you'll have to know its community identifier; this will look something like +example:matrix.org.": "Um einer bereits bestehenden Community beitreten zu können, musst dir deren Community-ID bekannt sein. Diese sieht z. B. aus wie +example:matrix.org.",
+ "Your Communities": "Deine Communities",
+ "You're not currently a member of any communities.": "Du bist aktuell kein Mitglied einer Community.",
+ "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Erzeuge eine Community um Nutzer und Räume zu gruppieren! Erzeuge eine angepasste Homepage um dein Revier im Matrix-Universum zu markieren.",
+ "Something went wrong whilst creating your community": "Beim Erstellen deiner Community ist ein Fehler aufgetreten",
+ "%(names)s and %(count)s others are typing|other": "%(names)s und %(count)s weitere schreiben",
+ "And %(count)s more...|other": "Und %(count)s weitere...",
+ "Delete Widget": "Widget löschen",
+ "Message removed": "Nachricht entfernt",
+ "Mention": "Erwähnen",
+ "Invite": "Einladen",
+ "Remove this room from the community": "Diesen Raum aus der Community entfernen",
+ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Das Löschen eines Widgets entfernt das Widget für alle Benutzer in diesem Raum. Möchtest du dieses Widget wirklich löschen?",
+ "Mirror local video feed": "Lokalen Video-Feed spiegeln",
+ "Failed to withdraw invitation": "Die Einladung konnte nicht zurückgezogen werden",
+ "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Community-IDs dürfen nur die folgenden Zeichen enthalten: a-z, 0-9, or '=_-./'",
+ "%(senderName)s sent an image": "%(senderName)s hat ein Bild gesendet",
+ "%(senderName)s sent a video": "%(senderName)s hat ein Video gesendet",
+ "%(senderName)s uploaded a file": "%(senderName)s hat eine Datei hochgeladen",
+ "You have been banned from this room by %(userName)s.": "%(userName)s hat dich aus diesem Raum verbannt.",
+ "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s",
+ "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)shaben den Raum %(count)s-mal betreten",
+ "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)shaben den Raum betreten",
+ "%(oneUser)sjoined %(count)s times|other": "%(oneUser)shat den Raum %(count)s-mal betreten",
+ "%(oneUser)sjoined %(count)s times|one": "%(oneUser)shat den Raum betreten",
+ "%(severalUsers)sleft %(count)s times|other": "%(severalUsers)shaben den Raum %(count)s-mal verlassen",
+ "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)shaben den Raum verlassen",
+ "%(oneUser)sleft %(count)s times|other": "%(oneUser)shat den Raum %(count)s-mal verlassen",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)shat den Raum verlassen",
+ "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)shaben %(count)s-mal den Raum betreten und verlassen",
+ "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)shaben den Raum betreten und wieder verlassen",
+ "%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)shat den Raum %(count)s-mal betreten und wieder verlassen",
+ "%(oneUser)sjoined and left %(count)s times|one": "%(oneUser)shat den Raum betreten und wieder verlassen",
+ "%(severalUsers)sleft and rejoined %(count)s times|other": "%(severalUsers)shaben den Raum %(count)s-mal verlassen und wieder betreten",
+ "%(severalUsers)sleft and rejoined %(count)s times|one": "%(severalUsers)shaben den Raum verlassen und wieder betreten",
+ "%(oneUser)sleft and rejoined %(count)s times|other": "%(oneUser)shat den Raum %(count)s-mal verlassen und wieder betreten",
+ "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)shat den Raum verlassen und wieder betreten",
+ "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)shaben ihre Einladungen abgelehnt",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "%(severalUsers)swurde die Einladung %(count)s-mal wieder entzogen",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|one": "%(severalUsers)swurde die Einladung wieder entzogen",
+ "were invited %(count)s times|other": "wurden %(count)s-mal eingeladen",
+ "were invited %(count)s times|one": "wurden eingeladen",
+ "was invited %(count)s times|other": "wurde %(count)s-mal eingeladen",
+ "was invited %(count)s times|one": "wurde eingeladen",
+ "were banned %(count)s times|other": "wurden %(count)s-mal verbannt",
+ "were banned %(count)s times|one": "wurden verbannt",
+ "was banned %(count)s times|other": "wurde %(count)s-mal verbannt",
+ "was banned %(count)s times|one": "wurde verbannt",
+ "were kicked %(count)s times|other": "wurden %(count)s-mal gekickt",
+ "were kicked %(count)s times|one": "wurden gekickt",
+ "was kicked %(count)s times|other": "wurde %(count)s-mal gekickt",
+ "was kicked %(count)s times|one": "wurde gekickt",
+ "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)shaben %(count)s-mal ihren Namen geändert",
+ "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)shaben ihren Namen geändert",
+ "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)shat %(count)s-mal den Namen geändert",
+ "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)shaben das Profilbild %(count)s-mal geändert",
+ "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)shaben das Profilbild geändert",
+ "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)shat das Profilbild %(count)s-mal geändert",
+ "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)shat das Profilbild geändert",
+ "%(names)s and %(count)s others are typing|one": "%(names)s und eine weitere Person schreiben",
+ "Disinvite this user?": "Einladung für diesen Benutzer zurückziehen?",
+ "Kick this user?": "Diesen Benutzer kicken?",
+ "Unban this user?": "Verbannung dieses Benutzers aufheben?",
+ "Ban this user?": "Diesen Benutzer verbannen?",
+ "Drop here to favourite": "Hierher ziehen, um als Favorit zu markieren",
+ "Drop here to tag direct chat": "Hierher ziehen, um als Direkt-Chat zu markieren",
+ "Drop here to restore": "Hierher ziehen zum Wiederherstellen",
+ "Drop here to demote": "Hier loslassen um zurückzustufen",
+ "You have been kicked from this room by %(userName)s.": "Du wurdest von %(userName)s aus diesem Raum gekickt.",
+ "You are trying to access a room.": "Du versuchst, auf einen Raum zuzugreifen.",
+ "Members only (since the point in time of selecting this option)": "Nur Mitglieder (ab dem Zeitpunkt, an dem diese Option ausgewählt wird)",
+ "Members only (since they were invited)": "Nur Mitglieder (ab dem Zeitpunkt, an dem sie eingeladen wurden)",
+ "Members only (since they joined)": "Nur Mitglieder (ab dem Zeitpunkt, an dem sie beigetreten sind)",
+ "An email has been sent to %(emailAddress)s": "Eine E-Mail wurde an %(emailAddress)s gesendet",
+ "A text message has been sent to %(msisdn)s": "Eine Textnachricht wurde an %(msisdn)s gesendet",
+ "Disinvite this user from community?": "Community-Einladung für diesen Benutzer zurückziehen?",
+ "Remove this user from community?": "Diesen Benutzer aus der Community entfernen?",
+ "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)shaben ihre Einladungen %(count)s-mal abgelehnt",
+ "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)shat die Einladung %(count)s-mal abgelehnt",
+ "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)shat die Einladung abgelehnt",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|other": "%(oneUser)swurde die Einladung %(count)s-mal wieder entzogen",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|one": "%(oneUser)swurde die Einladung wieder entzogen",
+ "were unbanned %(count)s times|other": "wurden %(count)s-mal entbannt",
+ "were unbanned %(count)s times|one": "wurden entbannt",
+ "was unbanned %(count)s times|other": "wurde %(count)s-mal entbannt",
+ "was unbanned %(count)s times|one": "wurde entbannt",
+ "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)shat den Namen geändert",
+ "%(items)s and %(count)s others|other": "%(items)s und %(count)s andere",
+ "%(items)s and %(count)s others|one": "%(items)s und ein anderer",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Eine E-Mail wurde an %(emailAddress)s gesendet. Folge dem in der E-Mail enthaltenen Link und klicke dann unten.",
+ "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Die Sichtbarkeit von '%(roomName)s' in %(groupId)s konnte nicht aktualisiert werden.",
+ "Visibility in Room List": "Sichtbarkeit in Raum-Liste",
+ "Visible to everyone": "Für jeden sichtbar",
+ "Only visible to community members": "Nur für Community-Mitglieder sichtbar",
+ "Community Invites": "Community-Einladungen",
+ "Notify the whole room": "Den gesamten Raum benachrichtigen",
+ "Room Notification": "Raum-Benachrichtigung",
+ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Diese Räume werden Community-Mitgliedern auf der Community-Seite angezeigt. Community-Mitglieder können diesen Räumen beitreten, indem sie auf diese klicken.",
+ "Show these rooms to non-members on the community page and room list?": "Sollen diese Räume Nicht-Mitgliedern auf der Community-Seite und Raum-Liste gezeigt werden?",
+ "HTML for your community's page
\n\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n\n You can even use 'img' tags\n
\n": "HTML für deine Community-Seite
\n\n Nutze die lange Beschreibung um neuen Mitgliedern diese Community zu beschreiben\n oder um einige wichtige Informationen oder Links festzuhalten.\n
\n\n Du kannst auch 'img'-Tags (HTML) verwenden\n
\n",
+ "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Deine Community hat noch keine lange Beschreibung oder eine HTML-Seite die Community-Mitgliedern gezeigt wird.
Klicke hier um die Einstellungen zu öffnen und ihr eine zu geben!"
}
diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json
index 99ae411d94..e8362b5181 100644
--- a/src/i18n/strings/el.json
+++ b/src/i18n/strings/el.json
@@ -8,8 +8,6 @@
"Search": "Αναζήτηση",
"Settings": "Ρυθμίσεις",
"unknown error code": "άγνωστος κωδικός σφάλματος",
- "Sunday": "Κυριακή",
- "accept": "αποδοχή",
"%(targetName)s accepted an invitation.": "%(targetName)s δέχτηκε την πρόσκληση.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s δέχτηκες την πρόσκληση για %(displayName)s.",
"Account": "Λογαριασμός",
@@ -27,7 +25,6 @@
"Algorithm": "Αλγόριθμος",
"Hide removed messages": "Απόκρυψη διαγραμμένων μηνυμάτων",
"Authentication": "Πιστοποίηση",
- "and": "και",
"An email has been sent to": "Ένα email στάλθηκε σε",
"A new password must be entered.": "Ο νέος κωδικός πρόσβασης πρέπει να εισαχθεί.",
"%(senderName)s answered the call.": "Ο χρήστης %(senderName)s απάντησε την κλήση.",
@@ -46,14 +43,12 @@
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ένα μήνυμα στάλθηκε στο +%(msisdn)s. Παρακαλώ γράψε τον κωδικό επαλήθευσης που περιέχει",
"Access Token:": "Κωδικός πρόσβασης:",
"Always show message timestamps": "Εμφάνιση πάντα της ένδειξης ώρας στα μηνύματα",
- "an address": "μία διεύθηνση",
"%(items)s and %(remaining)s others": "%(items)s και %(remaining)s ακόμα",
"%(items)s and one other": "%(items)s και ένας ακόμα",
"and %(count)s others...|one": "και ένας ακόμα...",
"and %(count)s others...|other": "και %(count)s άλλοι...",
"%(names)s and %(lastPerson)s are typing": "%(names)s και %(lastPerson)s γράφουν",
"%(names)s and one other are typing": "%(names)s και ένας ακόμα γράφουν",
- "%(names)s and %(count)s others are typing": "%(names)s και %(count)s άλλοι γράφουν",
"Anyone who knows the room's link, including guests": "Οποιοσδήποτε γνωρίζει τον σύνδεσμο του δωματίου, συμπεριλαμβανομένων των επισκεπτών",
"Blacklisted": "Στη μαύρη λίστα",
"Can't load user settings": "Δεν είναι δυνατή η φόρτωση των ρυθμίσεων χρήστη",
@@ -67,7 +62,6 @@
"Bans user with given id": "Αποκλεισμός χρήστη με το συγκεκριμένο αναγνωριστικό",
"%(senderDisplayName)s removed the room name.": "Ο %(senderDisplayName)s διέγραψε το όνομα του δωματίου.",
"Changes your display nickname": "Αλλάζει το ψευδώνυμο χρήστη",
- "Click here": "Κάνε κλικ εδώ",
"Drop here %(toAction)s": "Αποθέστε εδώ %(toAction)s",
"Conference call failed.": "Η κλήση συνδιάσκεψης απέτυχε.",
"powered by Matrix": "βασισμένο στο πρωτόκολλο Matrix",
@@ -83,7 +77,6 @@
"/ddg is not a command": "/ddg δεν αναγνωρίζεται ως εντολή",
"Deactivate Account": "Απενεργοποίηση λογαριασμού",
"Deactivate my account": "Απενεργοποίηση του λογαριασμού μου",
- "decline": "απόρριψη",
"Decrypt %(text)s": "Αποκρυπτογράφηση %(text)s",
"Decryption error": "Σφάλμα αποκρυπτογράφησης",
"Delete": "Διαγραφή",
@@ -120,14 +113,12 @@
"Failed to join room": "Δεν ήταν δυνατή η σύνδεση στο δωμάτιο",
"Failed to leave room": "Δεν ήταν δυνατή η αποχώρηση από το δωμάτιο",
"Failed to mute user": "Δεν ήταν δυνατή η σίγαση του χρήστη",
- "Failed to register as guest:": "Δεν ήταν δυνατή η εγγραφή ως επισκέπτης:",
"Failed to reject invite": "Δεν ήταν δυνατή η απόρριψη της πρόσκλησης",
"Failed to reject invitation": "Δεν ήταν δυνατή η απόρριψη της πρόσκλησης",
"Failed to save settings": "Δεν ήταν δυνατή η αποθήκευση των ρυθμίσεων",
"Failed to send email": "Δεν ήταν δυνατή η αποστολή ηλ. αλληλογραφίας",
"Failed to verify email address: make sure you clicked the link in the email": "Δεν ήταν δυνατή η επιβεβαίωση του μηνύματος ηλεκτρονικής αλληλογραφίας βεβαιωθείτε οτι κάνατε κλικ στον σύνδεσμο που σας στάλθηκε",
"Favourite": "Αγαπημένο",
- "favourite": "αγαπημένο",
"Favourites": "Αγαπημένα",
"Fill screen": "Γέμισε την οθόνη",
"Filter room members": "Φιλτράρισμα μελών",
@@ -136,7 +127,6 @@
"For security, this session has been signed out. Please sign in again.": "Για λόγους ασφαλείας, αυτή η συνεδρία έχει τερματιστεί. Παρακαλούμε συνδεθείτε ξανά.",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Για λόγους ασφαλείας, τα κλειδιά κρυπτογράφησης θα διαγράφονται από τον περιηγητή κατά την αποσύνδεση σας. Εάν επιθυμείτε να αποκρυπτογραφήσετε τις συνομιλίες σας στο μέλλον, εξάγετε τα κλειδιά σας και κρατήστε τα ασφαλή.",
"Found a bug?": "Βρήκατε κάποιο πρόβλημα;",
- "had": "είχε",
"Hangup": "Κλείσιμο",
"Historical": "Ιστορικό",
"Homeserver is": "Ο διακομιστής είναι",
@@ -151,11 +141,8 @@
"Invite new room members": "Προσκαλέστε νέα μέλη",
"Invited": "Προσκλήθηκε",
"Invites": "Προσκλήσεις",
- "is a": "είναι ένα",
"%(displayName)s is typing": "Ο χρήστης %(displayName)s γράφει",
"Sign in with": "Συνδεθείτε με",
- "joined and left": "συνδέθηκε και έφυγε",
- "joined": "συνδέθηκε",
"%(targetName)s joined the room.": "ο %(targetName)s συνδέθηκε στο δωμάτιο.",
"Jump to first unread message.": "Πηγαίνετε στο πρώτο μη αναγνωσμένο μήνυμα.",
"%(senderName)s kicked %(targetName)s.": "Ο %(senderName)s έδιωξε τον χρήστη %(targetName)s.",
@@ -163,10 +150,7 @@
"Kicks user with given id": "Διώχνει χρήστες με το συγκεκριμένο id",
"Labs": "Πειραματικά",
"Leave room": "Αποχώρηση από το δωμάτιο",
- "left and rejoined": "έφυγε και ξανασυνδέθηκε",
- "left": "έφυγε",
"%(targetName)s left the room.": "Ο χρήστης %(targetName)s έφυγε από το δωμάτιο.",
- "Level": "Επίπεδο",
"Local addresses for this room:": "Τοπική διεύθυνση για το δωμάτιο:",
"Logged in as:": "Συνδεθήκατε ως:",
"Login as guest": "Σύνδεση ως επισκέπτης",
@@ -229,16 +213,8 @@
"Success": "Επιτυχία",
"Start Chat": "Συνομιλία",
"Cancel": "Ακύρωση",
- "cancel all": "ακύρωση όλων",
- "or": "ή",
"Custom Server Options": "Προσαρμοσμένες ρυθμίσεις διακομιστή",
"Dismiss": "Απόρριψη",
- "Monday": "Δευτέρα",
- "Tuesday": "Τρίτη",
- "Wednesday": "Τετάρτη",
- "Thursday": "Πέμπτη",
- "Friday": "Παρασκευή",
- "Saturday": "Σάββατο",
"bold": "έντονα",
"italic": "πλάγια",
"underline": "υπογράμμιση",
@@ -260,7 +236,6 @@
"Active call (%(roomName)s)": "Ενεργή κλήση (%(roomName)s)",
"Add": "Προσθήκη",
"Admin Tools": "Εργαλεία διαχειριστή",
- "And %(count)s more...": "Και %(count)s περισσότερα...",
"No media permissions": "Χωρίς δικαιώματα πολυμέσων",
"Alias (optional)": "Ψευδώνυμο (προαιρετικό)",
"Ban": "Αποκλεισμός",
@@ -306,15 +281,12 @@
"Reason": "Αιτία",
"Reason: %(reasonText)s": "Αιτία: %(reasonText)s",
"Revoke Moderator": "Ανάκληση συντονιστή",
- "Registration required": "Απαιτείται εγγραφή",
- "rejected": "απορρίφθηκε",
"%(targetName)s rejected the invitation.": "Ο %(targetName)s απέρριψε την πρόσκληση.",
"Reject invitation": "Απόρριψη πρόσκλησης",
"Remote addresses for this room:": "Απομακρυσμένες διευθύνσεις για το δωμάτιο:",
"Remove Contact Information?": "Αφαίρεση πληροφοριών επαφής;",
"Remove %(threePid)s?": "Αφαίρεση %(threePid)s;",
"Report it": "Αναφορά",
- "restore": "επαναφορά",
"Results from DuckDuckGo": "Αποτελέσματα από DuckDuckGo",
"Return to app": "Επιστροφή στην εφαρμογή",
"Return to login screen": "Επιστροφή στην οθόνη σύνδεσης",
@@ -329,7 +301,6 @@
"Server may be unavailable or overloaded": "Ο διακομιστής μπορεί να είναι μη διαθέσιμος ή υπερφορτωμένος",
"Session ID": "Αναγνωριστικό συνεδρίας",
"%(senderName)s set a profile picture.": "Ο %(senderName)s όρισε τη φωτογραφία του προφίλ του.",
- "Set": "Ορισμός",
"Start authentication": "Έναρξη πιστοποίησης",
"Submit": "Υποβολή",
"Tagged as: ": "Με ετικέτα: ",
@@ -342,8 +313,6 @@
"This phone number is already in use": "Αυτός ο αριθμός τηλεφώνου είναι ήδη σε χρήση",
"This room": "Αυτό το δωμάτιο",
"This room's internal ID is": "Το εσωτερικό αναγνωριστικό του δωματίου είναι",
- "times": "φορές",
- "to browse the directory": "για περιήγηση στο ευρετήριο",
"to restore": "για επαναφορά",
"Turn Markdown off": "Απενεργοποίηση Markdown",
"Turn Markdown on": "Ενεργοποίηση Markdown",
@@ -385,7 +354,6 @@
"Who would you like to communicate with?": "Με ποιον θα θέλατε να επικοινωνήσετε;",
"You are already in a call.": "Είστε ήδη σε μια κλήση.",
"You have no visible notifications": "Δεν έχετε ορατές ειδοποιήσεις",
- "you must be a": "πρέπει να είστε",
"You must register to use this functionality": "Πρέπει να εγγραφείτε για να χρησιμοποιήσετε αυτή την λειτουργία",
"You need to be logged in.": "Πρέπει να είστε συνδεδεμένος.",
"You need to enter a user name.": "Πρέπει να εισάγετε ένα όνομα χρήστη.",
@@ -533,7 +501,6 @@
"Mobile phone number (optional)": "Αριθμός κινητού τηλεφώνου (προαιρετικό)",
"Must be viewing a room": "Πρέπει να βλέπετε ένα δωμάτιο",
"Never send encrypted messages to unverified devices from this device": "Να μη γίνει ποτέ αποστολή κρυπτογραφημένων μηνυμάτων σε ανεπιβεβαίωτες συσκευές από αυτή τη συσκευή",
- "Never send encrypted messages to unverified devices in this room": "Να μη γίνει ποτέ αποστολή κρυπτογραφημένων μηνυμάτων σε ανεπιβεβαίωτες συσκευές σε αυτό το δωμάτιο",
"Never send encrypted messages to unverified devices in this room from this device": "Να μη γίνει ποτέ αποστολή κρυπτογραφημένων μηνυμάτων σε ανεπιβεβαίωτες συσκευές, σε αυτό το δωμάτιο, από αυτή τη συσκευή",
"not set": "δεν έχει οριστεί",
"not specified": "μη καθορισμένο",
@@ -567,8 +534,6 @@
"Some of your messages have not been sent.": "Μερικά από τα μηνύματα σας δεν έχουν αποσταλεί.",
"This room is not recognised.": "Αυτό το δωμάτιο δεν αναγνωρίζεται.",
"to favourite": "στα αγαπημένα",
- "to make a room or": "για δημιουργία ενός δωματίου ή",
- "to start a chat with someone": "για να ξεκινήσετε μια συνομιλία με κάποιον",
"Unable to capture screen": "Αδυναμία σύλληψης οθόνης",
"Unknown (user, device) pair:": "Άγνωστο ζεύγος (χρήστη, συσκευής):",
"Uploading %(filename)s and %(count)s others|zero": "Γίνεται αποστολή του %(filename)s",
@@ -589,7 +554,6 @@
"Who can read history?": "Ποιος μπορεί να διαβάσει το ιστορικό;",
"Who would you like to add to this room?": "Ποιον θέλετε να προσθέσετε σε αυτό το δωμάτιο;",
"%(senderName)s withdrew %(targetName)s's invitation.": "Ο %(senderName)s ανακάλεσε την πρόσκληση του %(targetName)s.",
- "You're not in any rooms yet! Press": "Δεν είστε ακόμη σε κάνενα δωμάτιο! Πατήστε",
"You cannot place a call with yourself.": "Δεν μπορείτε να καλέσετε τον ευατό σας.",
"You cannot place VoIP calls in this browser.": "Δεν μπορείτε να πραγματοποιήσετε κλήσεις VoIP με αυτόν τον περιηγητή.",
"You do not have permission to post to this room": "Δεν έχετε δικαιώματα για να δημοσιεύσετε σε αυτό το δωμάτιο",
@@ -639,7 +603,7 @@
"Disable URL previews by default for participants in this room": "Απενεργοποίηση της προεπισκόπησης συνδέσμων για όλους τους συμμετέχοντες στο δωμάτιο",
"Disable URL previews for this room (affects only you)": "Απενεργοποίηση της προεπισκόπησης συνδέσμων για αυτό το δωμάτιο (επηρεάζει μόνο εσάς)",
" (unsupported)": " (μη υποστηριζόμενο)",
- "$senderDisplayName changed the room avatar to
": "Ο $senderDisplayName άλλαξε την εικόνα του δωματίου σε
",
+ "%(senderDisplayName)s changed the room avatar to
": "Ο %(senderDisplayName)s άλλαξε την εικόνα του δωματίου σε
",
"Missing Media Permissions, click here to request.": "Λείπουν τα δικαιώματα πολύμεσων, κάντε κλικ για να ζητήσετε.",
"You may need to manually permit Riot to access your microphone/webcam": "Μπορεί να χρειαστεί να ορίσετε χειροκίνητα την πρόσβαση του Riot στο μικρόφωνο/κάμερα",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Δεν είναι δυνατή η σύνδεση στον διακομιστή - παρακαλούμε ελέγξτε την συνδεσιμότητα, βεβαιωθείτε ότι το πιστοποιητικό SSL του διακομιστή είναι έμπιστο και ότι κάποιο πρόσθετο περιηγητή δεν αποτρέπει τα αιτήματα.",
@@ -653,7 +617,6 @@
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "Ο %(senderName)s έστειλε μια πρόσκληση στον %(targetDisplayName)s για να συνδεθεί στο δωμάτιο.",
"%(senderName)s set their display name to %(displayName)s.": "Ο %(senderName)s όρισε το όνομα του σε %(displayName)s.",
"Sorry, this homeserver is using a login which is not recognised ": "Συγγνώμη, ο διακομιστής χρησιμοποιεί έναν τρόπο σύνδεσης που δεν αναγνωρίζεται ",
- "tag direct chat": "προσθήκη ετικέτας στην απευθείας συνομιλία",
"The phone number entered looks invalid": "Ο αριθμός που καταχωρίσατε δεν είναι έγκυρος",
"The email address linked to your account must be entered.": "Πρέπει να εισηχθεί η διεύθυνση ηλ. αλληλογραφίας που είναι συνδεδεμένη με τον λογαριασμό σας.",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "Το αρχείο '%(fileName)s' υπερβαίνει το όριο μεγέθους του διακομιστή για αποστολές",
@@ -697,13 +660,11 @@
"You must join the room to see its files": "Πρέπει να συνδεθείτε στο δωμάτιο για να δείτε τα αρχεία του",
"Reject all %(invitedRooms)s invites": "Απόρριψη όλων των προσκλήσεων %(invitedRooms)s",
"Failed to invite the following users to the %(roomName)s room:": "Δεν ήταν δυνατή η πρόσκληση των χρηστών στο δωμάτιο %(roomName)s:",
- "demote": "υποβίβαση",
"Deops user with given id": "Deop χρήστη με το συγκεκριμένο αναγνωριστικό",
"Disable inline URL previews by default": "Απενεργοποίηση προεπισκόπησης συνδέσμων από προεπιλογή",
"Drop here to tag %(section)s": "Απόθεση εδώ για ορισμό ετικέτας στο %(section)s",
"Join as voice or video.": "Συμμετάσχετε με φωνή ή βίντεο.",
"Joins room with given alias": "Συνδέεστε στο δωμάτιο με δοσμένο ψευδώνυμο",
- "Setting a user name will create a fresh account": "Ορίζοντας ένα όνομα χρήστη θα δημιουργήσει ένα νέο λογαριασμό",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Εμφάνιση χρονικών σημάνσεων σε 12ωρη μορφή ώρας (π.χ. 2:30 μ.μ.)",
"since the point in time of selecting this option": "από το χρονικό σημείο επιλογής αυτής της ρύθμισης",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Το κλειδί υπογραφής που δώσατε αντιστοιχεί στο κλειδί υπογραφής που λάβατε από τη συσκευή %(userId)s %(deviceId)s. Η συσκευή έχει επισημανθεί ως επιβεβαιωμένη.",
@@ -717,7 +678,6 @@
"This allows you to use this app with an existing Matrix account on a different home server.": "Αυτό σας επιτρέπει να χρησιμοποιήσετε την εφαρμογή με έναν υπάρχον λογαριασμό Matrix σε έναν διαφορετικό διακομιστή.",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Μπορείτε επίσης να ορίσετε έναν προσαρμοσμένο διακομιστή ταυτοποίησης, αλλά αυτό συνήθως θα αποτρέψει την αλληλεπίδραση με τους χρήστες που βασίζονται στην ηλεκτρονική διεύθυνση αλληλογραφίας.",
"URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "Η προεπισκόπηση συνδέσμων είναι %(globalDisableUrlPreview)s από προεπιλογή για τους συμμετέχοντες του δωματίου.",
- "Ongoing conference call%(supportedText)s. %(joinText)s": "Κλήση συνδιάσκεψης σε εξέλιξη %(supportedText)s. %(joinText)s",
"This will be your account name on the homeserver, or you can pick a different server.": "Αυτό θα είναι το όνομα του λογαριασμού σας στον διακομιστή , ή μπορείτε να επιλέξετε διαφορετικό διακομιστή.",
"If you already have a Matrix account you can log in instead.": "Αν έχετε ήδη λογαριασμό Matrix μπορείτε να συνδεθείτε.",
"Failed to load timeline position": "Δεν ήταν δυνατή η φόρτωση της θέσης του χρονολόγιου",
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index f0c5880d65..f28322398c 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -1,570 +1,31 @@
{
- "Add a widget": "Add a widget",
- "a room": "a room",
- "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains",
- "Accept": "Accept",
- "%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.",
- "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.",
- "Account": "Account",
- "Access Token:": "Access Token:",
- "Active call (%(roomName)s)": "Active call (%(roomName)s)",
- "Add": "Add",
- "Add a topic": "Add a topic",
- "Add email address": "Add email address",
- "Add phone number": "Add phone number",
- "Admin": "Admin",
- "Admin Tools": "Admin tools",
- "Allow": "Allow",
- "And %(count)s more...": "And %(count)s more...",
- "VoIP": "VoIP",
- "Missing Media Permissions, click here to request.": "Missing Media Permissions, click here to request.",
- "No Microphones detected": "No Microphones detected",
- "No Webcams detected": "No Webcams detected",
- "No media permissions": "No media permissions",
- "You may need to manually permit Riot to access your microphone/webcam": "You may need to manually permit Riot to access your microphone/webcam",
- "Default Device": "Default Device",
- "Microphone": "Microphone",
- "Camera": "Camera",
- "Advanced": "Advanced",
- "Advanced options": "Advanced options",
- "Algorithm": "Algorithm",
- "Hide removed messages": "Hide removed messages",
- "Always show message timestamps": "Always show message timestamps",
- "Authentication": "Authentication",
- "Alias (optional)": "Alias (optional)",
- "and": "and",
- "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others",
- "%(items)s and one other": "%(items)s and one other",
- "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s",
- "and %(count)s others...|other": "and %(count)s others...",
- "and %(count)s others...|one": "and one other...",
- "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing",
- "%(names)s and one other are typing": "%(names)s and one other are typing",
- "%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing",
- "An email has been sent to": "An email has been sent to",
- "A new password must be entered.": "A new password must be entered.",
- "%(senderName)s answered the call.": "%(senderName)s answered the call.",
- "An error has occurred.": "An error has occurred.",
- "Anyone": "Anyone",
- "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests",
- "Anyone who knows the room's link, including guests": "Anyone who knows the room's link, including guests",
- "Are you sure?": "Are you sure?",
- "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?",
- "Are you sure you want to reject the invitation?": "Are you sure you want to reject the invitation?",
- "Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?",
- "Attachment": "Attachment",
- "Autoplay GIFs and videos": "Autoplay GIFs and videos",
- "%(senderName)s banned %(targetName)s.": "%(senderName)s banned %(targetName)s.",
- "Ban": "Ban",
- "Banned users": "Banned users",
- "Bans user with given id": "Bans user with given id",
- "Blacklisted": "Blacklisted",
- "Block users on other matrix homeservers from joining this room": "Block users on other matrix homeservers from joining this room",
- "This setting cannot be changed later!": "This setting cannot be changed later!",
- "Bug Report": "Bug Report",
- "Bulk Options": "Bulk Options",
- "Call Timeout": "Call Timeout",
- "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.",
- "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.",
- "Can't load user settings": "Can't load user settings",
- "Cannot add any more widgets": "Cannot add any more widgets",
- "Change Password": "Change Password",
- "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.",
- "%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.",
- "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s changed the power level of %(powerLevelDiffText)s.",
- "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s changed the room name to %(roomName)s.",
- "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s removed the room name.",
- "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s changed the topic to \"%(topic)s\".",
- "Changes to who can read history will only apply to future messages in this room": "Changes to who can read history will only apply to future messages in this room",
- "Changes your display nickname": "Changes your display nickname",
- "Changes colour scheme of current room": "Changes colour scheme of current room",
- "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.",
- "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key",
- "Clear Cache and Reload": "Clear Cache and Reload",
- "Clear Cache": "Clear Cache",
- "Click here to join the discussion!": "Click here to join the discussion!",
- "Click here to fix": "Click here to fix",
- "Click to mute audio": "Click to mute audio",
- "Click to mute video": "Click to mute video",
- "click to reveal": "click to reveal",
- "Click to unmute video": "Click to unmute video",
- "Click to unmute audio": "Click to unmute audio",
- "Close": "Close",
- "Command error": "Command error",
- "Commands": "Commands",
- "Conference call failed.": "Conference call failed.",
- "Conference calling is in development and may not be reliable.": "Conference calling is in development and may not be reliable.",
- "Conference calls are not supported in encrypted rooms": "Conference calls are not supported in encrypted rooms",
- "Conference calls are not supported in this client": "Conference calls are not supported in this client",
- "Confirm password": "Confirm password",
- "Confirm your new password": "Confirm your new password",
- "Continue": "Continue",
- "Could not connect to the integration server": "Could not connect to the integration server",
- "%(count)s new messages|one": "%(count)s new message",
- "%(count)s new messages|other": "%(count)s new messages",
- "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one",
- "Create an account": "Create an account",
- "Create Room": "Create Room",
- "Cryptography": "Cryptography",
- "Current password": "Current password",
- "Curve25519 identity key": "Curve25519 identity key",
- "Custom": "Custom",
- "Custom level": "Custom level",
- "/ddg is not a command": "/ddg is not a command",
- "Deactivate Account": "Deactivate Account",
- "Deactivate my account": "Deactivate my account",
- "Decline": "Decline",
- "Decrypt %(text)s": "Decrypt %(text)s",
- "Decryption error": "Decryption error",
- "Delete": "Delete",
- "Delete widget": "Delete widget",
- "demote": "demote",
- "Deops user with given id": "Deops user with given id",
- "Default": "Default",
- "Define the power level of a user": "Define the power level of a user",
- "Device already verified!": "Device already verified!",
- "Device ID": "Device ID",
- "Device ID:": "Device ID:",
- "device id: ": "device id: ",
- "Device key:": "Device key:",
- "Devices": "Devices",
- "Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room",
- "Direct chats": "Direct chats",
- "Disable Notifications": "Disable Notifications",
- "disabled": "disabled",
- "Disable inline URL previews by default": "Disable inline URL previews by default",
- "Disinvite": "Disinvite",
- "Display name": "Display name",
- "Displays action": "Displays action",
- "Do you want to load widget from URL:": "Do you want to load widget from URL:",
- "Don't send typing notifications": "Don't send typing notifications",
- "Download %(text)s": "Download %(text)s",
- "Drop File Here": "Drop File Here",
- "Drop here %(toAction)s": "Drop here %(toAction)s",
- "Drop here to tag %(section)s": "Drop here to tag %(section)s",
- "Ed25519 fingerprint": "Ed25519 fingerprint",
- "Edit": "Edit",
- "Email": "Email",
- "Email address": "Email address",
- "Email address (optional)": "Email address (optional)",
- "Email, name or matrix ID": "Email, name or matrix ID",
- "Emoji": "Emoji",
- "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting",
- "Enable encryption": "Enable encryption",
- "Enable Notifications": "Enable Notifications",
- "enabled": "enabled",
- "Encrypted by a verified device": "Encrypted by a verified device",
- "Encrypted by an unverified device": "Encrypted by an unverified device",
- "Encrypted messages will not be visible on clients that do not yet implement encryption": "Encrypted messages will not be visible on clients that do not yet implement encryption",
- "Encrypted room": "Encrypted room",
- "Encryption is enabled in this room": "Encryption is enabled in this room",
- "Encryption is not enabled in this room": "Encryption is not enabled in this room",
- "%(senderName)s ended the call.": "%(senderName)s ended the call.",
- "End-to-end encryption information": "End-to-end encryption information",
- "End-to-end encryption is in beta and may not be reliable": "End-to-end encryption is in beta and may not be reliable",
- "Enter Code": "Enter Code",
- "Enter passphrase": "Enter passphrase",
- "Error": "Error",
- "Error decrypting attachment": "Error decrypting attachment",
- "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.",
- "Event information": "Event information",
- "Existing Call": "Existing Call",
- "Export": "Export",
- "Export E2E room keys": "Export E2E room keys",
- "Failed to ban user": "Failed to ban user",
- "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?",
- "Failed to change power level": "Failed to change power level",
- "Failed to delete device": "Failed to delete device",
- "Failed to fetch avatar URL": "Failed to fetch avatar URL",
- "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s",
- "Failed to join room": "Failed to join room",
- "Failed to kick": "Failed to kick",
- "Failed to leave room": "Failed to leave room",
- "Failed to load timeline position": "Failed to load timeline position",
- "Failed to lookup current room": "Failed to lookup current room",
- "Failed to mute user": "Failed to mute user",
- "Failed to register as guest:": "Failed to register as guest:",
- "Failed to reject invite": "Failed to reject invite",
- "Failed to reject invitation": "Failed to reject invitation",
- "Failed to save settings": "Failed to save settings",
- "Failed to send email": "Failed to send email",
- "Failed to send request.": "Failed to send request.",
- "Failed to set avatar.": "Failed to set avatar.",
- "Failed to set display name": "Failed to set display name",
- "Failed to set up conference call": "Failed to set up conference call",
- "Failed to toggle moderator status": "Failed to toggle moderator status",
- "Failed to unban": "Failed to unban",
- "Failed to upload file": "Failed to upload file",
- "Failed to upload profile picture!": "Failed to upload profile picture!",
- "Failed to verify email address: make sure you clicked the link in the email": "Failed to verify email address: make sure you clicked the link in the email",
- "Failure to create room": "Failure to create room",
- "Favourite": "Favourite",
- "favourite": "favourite",
- "Favourites": "Favourites",
- "Fill screen": "Fill screen",
- "Filter room members": "Filter room members",
- "Forget room": "Forget room",
- "Forgot your password?": "Forgot your password?",
- "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.",
- "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.",
- "Found a bug?": "Found a bug?",
- "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s",
- "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.",
- "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.",
- "had": "had",
- "Hangup": "Hangup",
- "Hide Apps": "Hide Apps",
- "Hide join/leave messages (invites/kicks/bans unaffected)": "Hide join/leave messages (invites/kicks/bans unaffected)",
- "Hide avatar and display name changes": "Hide avatar and display name changes",
- "Hide read receipts": "Hide read receipts",
- "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar",
- "Historical": "Historical",
- "Home": "Home",
- "Homeserver is": "Homeserver is",
- "Identity Server is": "Identity Server is",
- "I have verified my email address": "I have verified my email address",
- "Import": "Import",
- "Import E2E room keys": "Import E2E room keys",
- "Incoming call from %(name)s": "Incoming call from %(name)s",
- "Incoming video call from %(name)s": "Incoming video call from %(name)s",
- "Incoming voice call from %(name)s": "Incoming voice call from %(name)s",
- "Incorrect username and/or password.": "Incorrect username and/or password.",
- "Incorrect verification code": "Incorrect verification code",
- "Integrations Error": "Integrations Error",
- "Interface Language": "Interface Language",
- "Invalid alias format": "Invalid alias format",
- "Invalid address format": "Invalid address format",
- "Invalid Email Address": "Invalid Email Address",
- "Invalid file%(extra)s": "Invalid file%(extra)s",
- "%(senderName)s invited %(targetName)s.": "%(senderName)s invited %(targetName)s.",
- "Invite new room members": "Invite new room members",
- "Invited": "Invited",
- "Invites": "Invites",
- "Invites user with given id to current room": "Invites user with given id to current room",
- "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address",
- "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias",
- "%(displayName)s is typing": "%(displayName)s is typing",
- "Sign in with": "Sign in with",
- "Join as voice or video.": "Join as voice or video.",
- "Join Room": "Join Room",
- "joined and left": "joined and left",
- "joined": "joined",
- "%(targetName)s joined the room.": "%(targetName)s joined the room.",
- "Joins room with given alias": "Joins room with given alias",
- "Jump to first unread message.": "Jump to first unread message.",
- "%(senderName)s kicked %(targetName)s.": "%(senderName)s kicked %(targetName)s.",
- "Kick": "Kick",
- "Kicks user with given id": "Kicks user with given id",
- "Labs": "Labs",
- "Ignored Users": "Ignored Users",
- "Ignore": "Ignore",
- "Unignore": "Unignore",
- "User Options": "User Options",
- "You are now ignoring %(userId)s": "You are now ignoring %(userId)s",
- "You are no longer ignoring %(userId)s": "You are no longer ignoring %(userId)s",
- "Unignored user": "Unignored user",
- "Ignored user": "Ignored user",
- "Stops ignoring a user, showing their messages going forward": "Stops ignoring a user, showing their messages going forward",
- "Ignores a user, hiding their messages from you": "Ignores a user, hiding their messages from you",
- "Last seen": "Last seen",
- "Leave room": "Leave room",
- "left and rejoined": "left and rejoined",
- "left": "left",
- "%(targetName)s left the room.": "%(targetName)s left the room.",
- "Level:": "Level:",
- "Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?",
- "Local addresses for this room:": "Local addresses for this room:",
- "Logged in as:": "Logged in as:",
- "Login as guest": "Login as guest",
- "Logout": "Logout",
- "Low priority": "Low priority",
- "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s made future room history visible to all room members, from the point they are invited.",
- "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s made future room history visible to all room members, from the point they joined.",
- "%(senderName)s made future room history visible to all room members.": "%(senderName)s made future room history visible to all room members.",
- "%(senderName)s made future room history visible to anyone.": "%(senderName)s made future room history visible to anyone.",
- "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s made future room history visible to unknown (%(visibility)s).",
- "Manage Integrations": "Manage Integrations",
- "Markdown is disabled": "Markdown is disabled",
- "Markdown is enabled": "Markdown is enabled",
- "matrix-react-sdk version:": "matrix-react-sdk version:",
- "Matrix Apps": "Matrix Apps",
- "Members only": "Members only",
- "Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing",
- "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present",
- "Missing room_id in request": "Missing room_id in request",
- "Missing user_id in request": "Missing user_id in request",
- "Mobile phone number": "Mobile phone number",
- "Mobile phone number (optional)": "Mobile phone number (optional)",
- "Moderator": "Moderator",
- "Must be viewing a room": "Must be viewing a room",
- "Mute": "Mute",
- "Name": "Name",
- "Never send encrypted messages to unverified devices from this device": "Never send encrypted messages to unverified devices from this device",
- "Never send encrypted messages to unverified devices in this room": "Never send encrypted messages to unverified devices in this room",
- "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device",
- "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)",
- "New password": "New password",
- "New passwords don't match": "New passwords don't match",
- "New passwords must match each other.": "New passwords must match each other.",
- "none": "none",
- "not set": "not set",
- "not specified": "not specified",
- "Notifications": "Notifications",
- "(not supported by this browser)": "(not supported by this browser)",
- "": "",
- "AM": "AM",
- "PM": "PM",
- "NOT verified": "NOT verified",
- "NOTE: Apps are not end-to-end encrypted": "NOTE: Apps are not end-to-end encrypted",
- "No devices with registered encryption keys": "No devices with registered encryption keys",
- "No display name": "No display name",
- "No more results": "No more results",
- "No results": "No results",
- "No users have specific privileges in this room": "No users have specific privileges in this room",
- "OK": "OK",
- "olm version:": "olm version:",
- "Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)",
- "Once you've followed the link it contains, click below": "Once you've followed the link it contains, click below",
- "Only people who have been invited": "Only people who have been invited",
- "Operation failed": "Operation failed",
- "Otherwise, click here to send a bug report.": "Otherwise, click here to send a bug report.",
- "Password": "Password",
- "Password:": "Password:",
- "Passwords can't be empty": "Passwords can't be empty",
- "People": "People",
- "Permissions": "Permissions",
- "Phone": "Phone",
- "%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.",
- "Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.",
- "Power level must be positive integer.": "Power level must be positive integer.",
- "Press to start a chat with someone": "Press to start a chat with someone",
- "Privacy warning": "Privacy warning",
- "Private Chat": "Private Chat",
- "Privileged Users": "Privileged Users",
- "Profile": "Profile",
- "Public Chat": "Public Chat",
- "Reason": "Reason",
- "Reason: %(reasonText)s": "Reason: %(reasonText)s",
- "Revoke Moderator": "Revoke Moderator",
- "Revoke widget access": "Revoke widget access",
- "Refer a friend to Riot:": "Refer a friend to Riot:",
- "Register": "Register",
- "rejected": "rejected",
- "%(targetName)s rejected the invitation.": "%(targetName)s rejected the invitation.",
- "Reject invitation": "Reject invitation",
- "Rejoin": "Rejoin",
- "Remote addresses for this room:": "Remote addresses for this room:",
- "Remove Contact Information?": "Remove Contact Information?",
- "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removed their display name (%(oldDisplayName)s).",
- "%(senderName)s removed their profile picture.": "%(senderName)s removed their profile picture.",
- "Remove": "Remove",
- "Remove %(threePid)s?": "Remove %(threePid)s?",
- "%(senderName)s requested a VoIP conference.": "%(senderName)s requested a VoIP conference.",
- "Report it": "Report it",
- "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.",
- "restore": "restore",
- "Results from DuckDuckGo": "Results from DuckDuckGo",
- "Return to app": "Return to app",
- "Return to login screen": "Return to login screen",
- "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings",
- "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again",
- "riot-web version:": "riot-web version:",
- "Room %(roomId)s not visible": "Room %(roomId)s not visible",
- "Room Colour": "Room Colour",
- "Room contains unknown devices": "Room contains unknown devices",
- "Room name (optional)": "Room name (optional)",
- "%(roomName)s does not exist.": "%(roomName)s does not exist.",
- "%(roomName)s is not accessible at this time.": "%(roomName)s is not accessible at this time.",
- "Rooms": "Rooms",
- "Save": "Save",
- "Scroll to bottom of page": "Scroll to bottom of page",
- "Scroll to unread messages": "Scroll to unread messages",
- "Search": "Search",
- "Search failed": "Search failed",
- "Searches DuckDuckGo for results": "Searches DuckDuckGo for results",
- "Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s",
- "Send a message (unencrypted)": "Send a message (unencrypted)",
- "Send an encrypted message": "Send an encrypted message",
- "Send anyway": "Send anyway",
- "Sender device information": "Sender device information",
- "Send Invites": "Send Invites",
- "Send Reset Email": "Send Reset Email",
- "sent an image": "sent an image",
- "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.",
- "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.",
- "sent a video": "sent a video",
- "Server error": "Server error",
- "Server may be unavailable or overloaded": "Server may be unavailable or overloaded",
- "Server may be unavailable, overloaded, or search timed out :(": "Server may be unavailable, overloaded, or search timed out :(",
- "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big",
- "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.",
- "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.",
- "Session ID": "Session ID",
- "%(senderName)s set a profile picture.": "%(senderName)s set a profile picture.",
- "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.",
- "Set": "Set",
- "Settings": "Settings",
- "Sets the room topic": "Sets the room topic",
- "Show Apps": "Show Apps",
- "Show panel": "Show panel",
- "Show Text Formatting Toolbar": "Show Text Formatting Toolbar",
- "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)",
- "Signed Out": "Signed Out",
- "Sign in": "Sign in",
- "Sign out": "Sign out",
- "since the point in time of selecting this option": "since the point in time of selecting this option",
- "since they joined": "since they joined",
- "since they were invited": "since they were invited",
- "Some of your messages have not been sent.": "Some of your messages have not been sent.",
- "Your message was not sent.": "Your message was not sent.",
- "Someone": "Someone",
- "Sorry, this homeserver is using a login which is not recognised ": "Sorry, this homeserver is using a login which is not recognised ",
- "Start a chat": "Start a chat",
- "Start authentication": "Start authentication",
- "Start Chat": "Start Chat",
- "Submit": "Submit",
- "Success": "Success",
- "tag direct chat": "tag direct chat",
- "Tagged as: ": "Tagged as: ",
- "The default role for new room members is": "The default role for new room members is",
- "The main address for this room is": "The main address for this room is",
- "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.",
- "The phone number entered looks invalid": "The phone number entered looks invalid",
- "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.",
"This email address is already in use": "This email address is already in use",
- "This email address was not found": "This email address was not found",
- "%(actionVerb)s this person?": "%(actionVerb)s this person?",
- "The email address linked to your account must be entered.": "The email address linked to your account must be entered.",
- "The file '%(fileName)s' exceeds this home server's size limit for uploads": "The file '%(fileName)s' exceeds this home server's size limit for uploads",
- "The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload",
- "The remote side failed to pick up": "The remote side failed to pick up",
- "This Home Server does not support login using email address.": "This Home Server does not support login using email address.",
- "This invitation was sent to an email address which is not associated with this account:": "This invitation was sent to an email address which is not associated with this account:",
- "This room has no local addresses": "This room has no local addresses",
- "This room is not recognised.": "This room is not recognised.",
- "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways",
- "The visibility of existing history will be unchanged": "The visibility of existing history will be unchanged",
- "This doesn't appear to be a valid email address": "This doesn't appear to be a valid email address",
- "This is a preview of this room. Room interactions have been disabled": "This is a preview of this room. Room interactions have been disabled",
"This phone number is already in use": "This phone number is already in use",
- "This room": "This room",
- "This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers",
- "This room's internal ID is": "This room's internal ID is",
- "times": "times",
- "to browse the directory": "to browse the directory",
- "to demote": "to demote",
- "to favourite": "to favourite",
- "To get started, please pick a username!": "To get started, please pick a username!",
- "To link to a room it must have an address.": "To link to a room it must have an address.",
- "to make a room or": "to make a room or",
- "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account",
- "to restore": "to restore",
- "to start a chat with someone": "to start a chat with someone",
- "to tag direct chat": "to tag direct chat",
- "To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.",
- "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.",
- "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.",
- "Turn Markdown off": "Turn Markdown off",
- "Turn Markdown on": "Turn Markdown on",
- "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).",
- "Unable to add email address": "Unable to add email address",
- "Unable to create widget.": "Unable to create widget.",
- "Unable to remove contact information": "Unable to remove contact information",
- "Unable to verify email address.": "Unable to verify email address.",
- "Unban": "Unban",
- "Unbans user with given id": "Unbans user with given id",
- "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.",
- "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.",
+ "Failed to verify email address: make sure you clicked the link in the email": "Failed to verify email address: make sure you clicked the link in the email",
+ "Call Failed": "Call Failed",
+ "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.",
+ "Review Devices": "Review Devices",
+ "Call Anyway": "Call Anyway",
+ "Answer Anyway": "Answer Anyway",
+ "Call": "Call",
+ "Answer": "Answer",
+ "Call Timeout": "Call Timeout",
+ "The remote side failed to pick up": "The remote side failed to pick up",
"Unable to capture screen": "Unable to capture screen",
- "Unable to enable Notifications": "Unable to enable Notifications",
- "Unable to load device list": "Unable to load device list",
- "Undecryptable": "Undecryptable",
- "Unencrypted room": "Unencrypted room",
- "unencrypted": "unencrypted",
- "Unencrypted message": "Unencrypted message",
- "unknown caller": "unknown caller",
- "unknown device": "unknown device",
- "unknown error code": "unknown error code",
- "Unknown room %(roomId)s": "Unknown room %(roomId)s",
- "Unknown (user, device) pair:": "Unknown (user, device) pair:",
- "Unmute": "Unmute",
- "Unnamed Room": "Unnamed Room",
- "Unrecognised command:": "Unrecognised command:",
- "Unrecognised room alias:": "Unrecognised room alias:",
- "Unverified": "Unverified",
- "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s",
- "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other",
- "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others",
- "uploaded a file": "uploaded a file",
- "Upload avatar": "Upload avatar",
- "Upload Failed": "Upload Failed",
- "Upload Files": "Upload Files",
- "Upload file": "Upload file",
- "Upload new:": "Upload new:",
- "Usage": "Usage",
- "Use compact timeline layout": "Use compact timeline layout",
- "Use with caution": "Use with caution",
- "User ID": "User ID",
- "User Interface": "User Interface",
- "%(user)s is a": "%(user)s is a",
- "User name": "User name",
- "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)",
- "Username invalid: %(errMessage)s": "Username invalid: %(errMessage)s",
- "Users": "Users",
- "User": "User",
- "Verification Pending": "Verification Pending",
- "Verification": "Verification",
- "verified": "verified",
- "Verified": "Verified",
- "Verified key": "Verified key",
- "Video call": "Video call",
- "Voice call": "Voice call",
- "VoIP conference finished.": "VoIP conference finished.",
- "VoIP conference started.": "VoIP conference started.",
- "VoIP is unsupported": "VoIP is unsupported",
- "(could not connect media)": "(could not connect media)",
- "(no answer)": "(no answer)",
- "(unknown failure: %(reason)s)": "(unknown failure: %(reason)s)",
- "(warning: cannot be disabled again!)": "(warning: cannot be disabled again!)",
- "Warning!": "Warning!",
- "WARNING: Device already verified, but keys do NOT MATCH!": "WARNING: Device already verified, but keys do NOT MATCH!",
- "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!",
- "Who can access this room?": "Who can access this room?",
- "Who can read history?": "Who can read history?",
- "Who would you like to add to this room?": "Who would you like to add to this room?",
- "Who would you like to communicate with?": "Who would you like to communicate with?",
- "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.",
- "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?",
- "You already have existing direct chats with this user:": "You already have existing direct chats with this user:",
+ "Existing Call": "Existing Call",
"You are already in a call.": "You are already in a call.",
- "You are not in this room.": "You are not in this room.",
- "You do not have permission to do that in this room.": "You do not have permission to do that in this room.",
- "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory",
- "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.",
- "You cannot place a call with yourself.": "You cannot place a call with yourself.",
+ "VoIP is unsupported": "VoIP is unsupported",
"You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.",
- "You do not have permission to post to this room": "You do not have permission to post to this room",
- "You have been banned from %(roomName)s by %(userName)s.": "You have been banned from %(roomName)s by %(userName)s.",
- "You have been invited to join this room by %(inviterName)s": "You have been invited to join this room by %(inviterName)s",
- "You have been kicked from %(roomName)s by %(userName)s.": "You have been kicked from %(roomName)s by %(userName)s.",
- "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device",
- "You have disabled URL previews by default.": "You have disabled URL previews by default.",
- "You have enabled URL previews by default.": "You have enabled URL previews by default.",
- "You have no visible notifications": "You have no visible notifications",
- "You may wish to login with a different account, or add this email to this account.": "You may wish to login with a different account, or add this email to this account.",
- "you must be a": "you must be a",
- "You must register to use this functionality": "You must register to use this functionality",
- "You need to be able to invite users to do that.": "You need to be able to invite users to do that.",
- "You need to be logged in.": "You need to be logged in.",
- "You need to enter a user name.": "You need to enter a user name.",
- "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.",
- "Your password has been reset": "Your password has been reset",
- "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them",
- "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?",
- "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?",
- "You should not yet trust it to secure data": "You should not yet trust it to secure data",
- "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.",
- "Your home server does not support device management.": "Your home server does not support device management.",
+ "You cannot place a call with yourself.": "You cannot place a call with yourself.",
+ "Conference calls are not supported in this client": "Conference calls are not supported in this client",
+ "Conference calls are not supported in encrypted rooms": "Conference calls are not supported in encrypted rooms",
+ "Warning!": "Warning!",
+ "Conference calling is in development and may not be reliable.": "Conference calling is in development and may not be reliable.",
+ "Failed to set up conference call": "Failed to set up conference call",
+ "Conference call failed.": "Conference call failed.",
+ "The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "The file '%(fileName)s' exceeds this home server's size limit for uploads",
+ "Upload Failed": "Upload Failed",
"Sun": "Sun",
"Mon": "Mon",
"Tue": "Tue",
@@ -584,48 +45,276 @@
"Oct": "Oct",
"Nov": "Nov",
"Dec": "Dec",
+ "PM": "PM",
+ "AM": "AM",
+ "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s",
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",
- "%(weekDayName)s, %(monthName)s %(day)s": "%(weekDayName)s, %(monthName)s %(day)s",
- "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s",
- "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
- "Set a display name:": "Set a display name:",
- "Upload an avatar:": "Upload an avatar:",
- "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.",
- "Missing password.": "Missing password.",
- "Passwords don't match.": "Passwords don't match.",
- "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password too short (min %(MIN_PASSWORD_LENGTH)s).",
- "This doesn't look like a valid email address.": "This doesn't look like a valid email address.",
- "This doesn't look like a valid phone number.": "This doesn't look like a valid phone number.",
- "User names may only contain letters, numbers, dots, hyphens and underscores.": "User names may only contain letters, numbers, dots, hyphens and underscores.",
- "An unknown error occurred.": "An unknown error occurred.",
- "I already have an account": "I already have an account",
- "An error occurred: %(error_string)s": "An error occurred: %(error_string)s",
- "Topic": "Topic",
+ "Who would you like to add to this community?": "Who would you like to add to this community?",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID",
+ "Invite new community members": "Invite new community members",
+ "Name or matrix ID": "Name or matrix ID",
+ "Invite to Community": "Invite to Community",
+ "Which rooms would you like to add to this community?": "Which rooms would you like to add to this community?",
+ "Show these rooms to non-members on the community page and room list?": "Show these rooms to non-members on the community page and room list?",
+ "Add rooms to the community": "Add rooms to the community",
+ "Room name or alias": "Room name or alias",
+ "Add to community": "Add to community",
+ "Failed to invite the following users to %(groupId)s:": "Failed to invite the following users to %(groupId)s:",
+ "Failed to invite users to community": "Failed to invite users to community",
+ "Failed to invite users to %(groupId)s": "Failed to invite users to %(groupId)s",
+ "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:",
+ "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings",
+ "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again",
+ "Unable to enable Notifications": "Unable to enable Notifications",
+ "This email address was not found": "This email address was not found",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.",
+ "Default": "Default",
+ "Restricted": "Restricted",
+ "Moderator": "Moderator",
+ "Admin": "Admin",
+ "Start a chat": "Start a chat",
+ "Who would you like to communicate with?": "Who would you like to communicate with?",
+ "Email, name or matrix ID": "Email, name or matrix ID",
+ "Start Chat": "Start Chat",
+ "Invite new room members": "Invite new room members",
+ "Who would you like to add to this room?": "Who would you like to add to this room?",
+ "Send Invites": "Send Invites",
+ "Failed to invite user": "Failed to invite user",
+ "Operation failed": "Operation failed",
+ "Failed to invite": "Failed to invite",
+ "Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:",
+ "You need to be logged in.": "You need to be logged in.",
+ "You need to be able to invite users to do that.": "You need to be able to invite users to do that.",
+ "Unable to create widget.": "Unable to create widget.",
+ "Failed to send request.": "Failed to send request.",
+ "This room is not recognised.": "This room is not recognised.",
+ "Power level must be positive integer.": "Power level must be positive integer.",
+ "You are not in this room.": "You are not in this room.",
+ "You do not have permission to do that in this room.": "You do not have permission to do that in this room.",
+ "Missing room_id in request": "Missing room_id in request",
+ "Must be viewing a room": "Must be viewing a room",
+ "Room %(roomId)s not visible": "Room %(roomId)s not visible",
+ "Missing user_id in request": "Missing user_id in request",
+ "Failed to lookup current room": "Failed to lookup current room",
+ "Usage": "Usage",
+ "/ddg is not a command": "/ddg is not a command",
+ "To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.",
+ "Unrecognised room alias:": "Unrecognised room alias:",
+ "Ignored user": "Ignored user",
+ "You are now ignoring %(userId)s": "You are now ignoring %(userId)s",
+ "Unignored user": "Unignored user",
+ "You are no longer ignoring %(userId)s": "You are no longer ignoring %(userId)s",
+ "Unknown (user, device) pair:": "Unknown (user, device) pair:",
+ "Device already verified!": "Device already verified!",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "WARNING: Device already verified, but keys do NOT MATCH!",
+ "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!",
+ "Verified key": "Verified key",
+ "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.",
+ "Unrecognised command:": "Unrecognised command:",
+ "Reason": "Reason",
+ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.",
+ "%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.",
+ "%(senderName)s requested a VoIP conference.": "%(senderName)s requested a VoIP conference.",
+ "%(senderName)s invited %(targetName)s.": "%(senderName)s invited %(targetName)s.",
+ "%(senderName)s banned %(targetName)s.": "%(senderName)s banned %(targetName)s.",
+ "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.",
+ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.",
+ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removed their display name (%(oldDisplayName)s).",
+ "%(senderName)s removed their profile picture.": "%(senderName)s removed their profile picture.",
+ "%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.",
+ "%(senderName)s set a profile picture.": "%(senderName)s set a profile picture.",
+ "VoIP conference started.": "VoIP conference started.",
+ "%(targetName)s joined the room.": "%(targetName)s joined the room.",
+ "VoIP conference finished.": "VoIP conference finished.",
+ "%(targetName)s rejected the invitation.": "%(targetName)s rejected the invitation.",
+ "%(targetName)s left the room.": "%(targetName)s left the room.",
+ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s kicked %(targetName)s.",
+ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.",
+ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s changed the topic to \"%(topic)s\".",
+ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s removed the room name.",
+ "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s changed the room name to %(roomName)s.",
+ "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.",
+ "Someone": "Someone",
+ "(not supported by this browser)": "(not supported by this browser)",
+ "%(senderName)s answered the call.": "%(senderName)s answered the call.",
+ "(could not connect media)": "(could not connect media)",
+ "(no answer)": "(no answer)",
+ "(unknown failure: %(reason)s)": "(unknown failure: %(reason)s)",
+ "%(senderName)s ended the call.": "%(senderName)s ended the call.",
+ "%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.",
+ "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s made future room history visible to all room members, from the point they are invited.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s made future room history visible to all room members, from the point they joined.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s made future room history visible to all room members.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s made future room history visible to anyone.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s made future room history visible to unknown (%(visibility)s).",
+ "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).",
+ "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s",
+ "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s changed the power level of %(powerLevelDiffText)s.",
+ "%(senderName)s changed the pinned messages for the room.": "%(senderName)s changed the pinned messages for the room.",
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s",
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s",
+ "%(displayName)s is typing": "%(displayName)s is typing",
+ "%(names)s and %(count)s others are typing|other": "%(names)s and %(count)s others are typing",
+ "%(names)s and %(count)s others are typing|one": "%(names)s and one other is typing",
+ "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing",
+ "Failure to create room": "Failure to create room",
+ "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.",
+ "Send anyway": "Send anyway",
+ "Send": "Send",
+ "Unnamed Room": "Unnamed Room",
+ "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions",
+ "Not a valid Riot keyfile": "Not a valid Riot keyfile",
+ "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?",
+ "Failed to join room": "Failed to join room",
+ "Message Pinning": "Message Pinning",
+ "Presence Management": "Presence Management",
+ "Tag Panel": "Tag Panel",
+ "Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing",
+ "Use compact timeline layout": "Use compact timeline layout",
+ "Hide removed messages": "Hide removed messages",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Hide join/leave messages (invites/kicks/bans unaffected)",
+ "Hide avatar changes": "Hide avatar changes",
+ "Hide display name changes": "Hide display name changes",
+ "Hide read receipts": "Hide read receipts",
+ "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)",
+ "Always show message timestamps": "Always show message timestamps",
+ "Autoplay GIFs and videos": "Autoplay GIFs and videos",
+ "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting",
+ "Hide avatars in user and room mentions": "Hide avatars in user and room mentions",
+ "Disable big emoji in chat": "Disable big emoji in chat",
+ "Don't send typing notifications": "Don't send typing notifications",
+ "Automatically replace plain text Emoji": "Automatically replace plain text Emoji",
+ "Mirror local video feed": "Mirror local video feed",
+ "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls",
+ "Opt out of analytics": "Opt out of analytics",
+ "Never send encrypted messages to unverified devices from this device": "Never send encrypted messages to unverified devices from this device",
+ "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device",
+ "Enable inline URL previews by default": "Enable inline URL previews by default",
+ "Enable URL previews for this room (only affects you)": "Enable URL previews for this room (only affects you)",
+ "Enable URL previews by default for participants in this room": "Enable URL previews by default for participants in this room",
+ "Room Colour": "Room Colour",
+ "Active call (%(roomName)s)": "Active call (%(roomName)s)",
+ "unknown caller": "unknown caller",
+ "Incoming voice call from %(name)s": "Incoming voice call from %(name)s",
+ "Incoming video call from %(name)s": "Incoming video call from %(name)s",
+ "Incoming call from %(name)s": "Incoming call from %(name)s",
+ "Decline": "Decline",
+ "Accept": "Accept",
+ "Error": "Error",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains",
+ "Incorrect verification code": "Incorrect verification code",
+ "Enter Code": "Enter Code",
+ "Submit": "Submit",
+ "Phone": "Phone",
+ "Add phone number": "Add phone number",
+ "Add": "Add",
+ "Failed to upload profile picture!": "Failed to upload profile picture!",
+ "Upload new:": "Upload new:",
+ "No display name": "No display name",
+ "New passwords don't match": "New passwords don't match",
+ "Passwords can't be empty": "Passwords can't be empty",
+ "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.",
+ "Continue": "Continue",
+ "Export E2E room keys": "Export E2E room keys",
+ "Do you want to set an email address?": "Do you want to set an email address?",
+ "Current password": "Current password",
+ "Password": "Password",
+ "New Password": "New Password",
+ "Confirm password": "Confirm password",
+ "Change Password": "Change Password",
+ "Your home server does not support device management.": "Your home server does not support device management.",
+ "Unable to load device list": "Unable to load device list",
+ "Authentication": "Authentication",
+ "Delete %(count)s devices|other": "Delete %(count)s devices",
+ "Delete %(count)s devices|one": "Delete device",
+ "Device ID": "Device ID",
+ "Device Name": "Device Name",
+ "Last seen": "Last seen",
+ "Select devices": "Select devices",
+ "Failed to set display name": "Failed to set display name",
+ "Disable Notifications": "Disable Notifications",
+ "Enable Notifications": "Enable Notifications",
+ "Cannot add any more widgets": "Cannot add any more widgets",
+ "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.",
+ "Add a widget": "Add a widget",
+ "Drop File Here": "Drop File Here",
+ "Drop file here to upload": "Drop file here to upload",
+ " (unsupported)": " (unsupported)",
+ "Join as voice or video.": "Join as voice or video.",
+ "Ongoing conference call%(supportedText)s.": "Ongoing conference call%(supportedText)s.",
+ "%(senderName)s sent an image": "%(senderName)s sent an image",
+ "%(senderName)s sent a video": "%(senderName)s sent a video",
+ "%(senderName)s uploaded a file": "%(senderName)s uploaded a file",
+ "Options": "Options",
+ "Undecryptable": "Undecryptable",
+ "Encrypted by a verified device": "Encrypted by a verified device",
+ "Encrypted by an unverified device": "Encrypted by an unverified device",
+ "Unencrypted message": "Unencrypted message",
+ "Please select the destination room for this message": "Please select the destination room for this message",
+ "Blacklisted": "Blacklisted",
+ "Verified": "Verified",
+ "Unverified": "Unverified",
+ "device id: ": "device id: ",
+ "Disinvite": "Disinvite",
+ "Kick": "Kick",
+ "Disinvite this user?": "Disinvite this user?",
+ "Kick this user?": "Kick this user?",
+ "Failed to kick": "Failed to kick",
+ "Unban": "Unban",
+ "Ban": "Ban",
+ "Unban this user?": "Unban this user?",
+ "Ban this user?": "Ban this user?",
+ "Failed to ban user": "Failed to ban user",
+ "Failed to mute user": "Failed to mute user",
+ "Failed to toggle moderator status": "Failed to toggle moderator status",
+ "Failed to change power level": "Failed to change power level",
+ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.",
+ "Are you sure?": "Are you sure?",
+ "No devices with registered encryption keys": "No devices with registered encryption keys",
+ "Devices": "Devices",
+ "Unignore": "Unignore",
+ "Ignore": "Ignore",
+ "Jump to read receipt": "Jump to read receipt",
+ "Mention": "Mention",
+ "Invite": "Invite",
+ "User Options": "User Options",
+ "Direct chats": "Direct chats",
+ "Unmute": "Unmute",
+ "Mute": "Mute",
+ "Revoke Moderator": "Revoke Moderator",
"Make Moderator": "Make Moderator",
- "Make this room private": "Make this room private",
- "Share message history with new users": "Share message history with new users",
- "Encrypt room": "Encrypt room",
- "There are no visible files in this room": "There are no visible files in this room",
- "Room": "Room",
- "Copied!": "Copied!",
- "Failed to copy": "Failed to copy",
- "Connectivity to the server has been lost.": "Connectivity to the server has been lost.",
- "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.",
- "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.",
- "Resend message or cancel message now.": "Resend message or cancel message now.",
- "(~%(count)s results)|one": "(~%(count)s result)",
- "(~%(count)s results)|other": "(~%(count)s results)",
- "Cancel": "Cancel",
- "or": "or",
- "Active call": "Active call",
- "Monday": "Monday",
- "Tuesday": "Tuesday",
- "Wednesday": "Wednesday",
- "Thursday": "Thursday",
- "Friday": "Friday",
- "Saturday": "Saturday",
- "Sunday": "Sunday",
+ "Admin Tools": "Admin Tools",
+ "Level:": "Level:",
+ "and %(count)s others...|other": "and %(count)s others...",
+ "and %(count)s others...|one": "and one other...",
+ "Invited": "Invited",
+ "Filter room members": "Filter room members",
+ "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)",
+ "Attachment": "Attachment",
+ "Upload Files": "Upload Files",
+ "Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?",
+ "Encrypted room": "Encrypted room",
+ "Unencrypted room": "Unencrypted room",
+ "Hangup": "Hangup",
+ "Voice call": "Voice call",
+ "Video call": "Video call",
+ "Hide Apps": "Hide Apps",
+ "Show Apps": "Show Apps",
+ "Upload file": "Upload file",
+ "Show Text Formatting Toolbar": "Show Text Formatting Toolbar",
+ "Send an encrypted message": "Send an encrypted message",
+ "Send a message (unencrypted)": "Send a message (unencrypted)",
+ "You do not have permission to post to this room": "You do not have permission to post to this room",
+ "Turn Markdown on": "Turn Markdown on",
+ "Turn Markdown off": "Turn Markdown off",
+ "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar",
+ "Server error": "Server error",
+ "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.",
+ "Command error": "Command error",
"bold": "bold",
"italic": "italic",
"strike": "strike",
@@ -634,209 +323,73 @@
"quote": "quote",
"bullet": "bullet",
"numbullet": "numbullet",
- "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)sjoined %(repeats)s times",
- "%(oneUser)sjoined %(repeats)s times": "%(oneUser)sjoined %(repeats)s times",
- "%(severalUsers)sjoined": "%(severalUsers)sjoined",
- "%(oneUser)sjoined": "%(oneUser)sjoined",
- "%(severalUsers)sleft %(repeats)s times": "%(severalUsers)sleft %(repeats)s times",
- "%(oneUser)sleft %(repeats)s times": "%(oneUser)sleft %(repeats)s times",
- "%(severalUsers)sleft": "%(severalUsers)sleft",
- "%(oneUser)sleft": "%(oneUser)sleft",
- "%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers)sjoined and left %(repeats)s times",
- "%(oneUser)sjoined and left %(repeats)s times": "%(oneUser)sjoined and left %(repeats)s times",
- "%(severalUsers)sjoined and left": "%(severalUsers)sjoined and left",
- "%(oneUser)sjoined and left": "%(oneUser)sjoined and left",
- "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)sleft and rejoined %(repeats)s times",
- "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)sleft and rejoined %(repeats)s times",
- "%(severalUsers)sleft and rejoined": "%(severalUsers)sleft and rejoined",
- "%(oneUser)sleft and rejoined": "%(oneUser)sleft and rejoined",
- "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)srejected their invitations %(repeats)s times",
- "%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)srejected their invitation %(repeats)s times",
- "%(severalUsers)srejected their invitations": "%(severalUsers)srejected their invitations",
- "%(oneUser)srejected their invitation": "%(oneUser)srejected their invitation",
- "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)shad their invitations withdrawn %(repeats)s times",
- "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)shad their invitation withdrawn %(repeats)s times",
- "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)shad their invitations withdrawn",
- "%(oneUser)shad their invitation withdrawn": "%(oneUser)shad their invitation withdrawn",
- "were invited %(repeats)s times": "were invited %(repeats)s times",
- "was invited %(repeats)s times": "was invited %(repeats)s times",
- "were invited": "were invited",
- "was invited": "was invited",
- "were banned %(repeats)s times": "were banned %(repeats)s times",
- "was banned %(repeats)s times": "was banned %(repeats)s times",
- "were banned": "were banned",
- "was banned": "was banned",
- "were unbanned %(repeats)s times": "were unbanned %(repeats)s times",
- "was unbanned %(repeats)s times": "was unbanned %(repeats)s times",
- "were unbanned": "were unbanned",
- "was unbanned": "was unbanned",
- "were kicked %(repeats)s times": "were kicked %(repeats)s times",
- "was kicked %(repeats)s times": "was kicked %(repeats)s times",
- "were kicked": "were kicked",
- "was kicked": "was kicked",
- "%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)schanged their name %(repeats)s times",
- "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)schanged their name %(repeats)s times",
- "%(severalUsers)schanged their name": "%(severalUsers)schanged their name",
- "%(oneUser)schanged their name": "%(oneUser)schanged their name",
- "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)schanged their avatar %(repeats)s times",
- "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)schanged their avatar %(repeats)s times",
- "%(severalUsers)schanged their avatar": "%(severalUsers)schanged their avatar",
- "%(oneUser)schanged their avatar": "%(oneUser)schanged their avatar",
- "Please select the destination room for this message": "Please select the destination room for this message",
- "Create new room": "Create new room",
- "Room directory": "Room directory",
- "Start chat": "Start chat",
- "New Password": "New Password",
- "Start automatically after system login": "Start automatically after system login",
- "Desktop specific": "Desktop specific",
- "Analytics": "Analytics",
- "Opt out of analytics": "Opt out of analytics",
- "Options": "Options",
- "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.",
- "Passphrases must match": "Passphrases must match",
- "Passphrase must not be empty": "Passphrase must not be empty",
- "Export room keys": "Export room keys",
- "Confirm passphrase": "Confirm passphrase",
- "Import room keys": "Import room keys",
- "File to import": "File to import",
- "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.",
- "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.",
- "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.",
- "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.",
- "You must join the room to see its files": "You must join the room to see its files",
- "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites",
- "Start new chat": "Start new chat",
- "Failed to invite": "Failed to invite",
- "Failed to invite user": "Failed to invite user",
- "Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:",
- "Confirm Removal": "Confirm Removal",
- "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.",
- "Unknown error": "Unknown error",
- "Incorrect password": "Incorrect password",
- "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "This will make your account permanently unusable. You will not be able to re-register the same user ID.",
- "This action is irreversible.": "This action is irreversible.",
- "To continue, please enter your password.": "To continue, please enter your password.",
- "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:",
- "Device name": "Device name",
- "Device Name": "Device Name",
- "Device key": "Device key",
- "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.",
- "In future this verification process will be more sophisticated.": "In future this verification process will be more sophisticated.",
- "Verify device": "Verify device",
- "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple",
- "I verify that the keys match": "I verify that the keys match",
- "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.",
- "Unable to restore session": "Unable to restore session",
- "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.",
- "Continue anyway": "Continue anyway",
- "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.",
- "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.",
- "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.",
- "Unknown devices": "Unknown devices",
- "Unknown Address": "Unknown Address",
- "Unblacklist": "Unblacklist",
- "Blacklist": "Blacklist",
- "Unverify": "Unverify",
- "Verify...": "Verify...",
- "ex. @bob:example.com": "ex. @bob:example.com",
- "Add User": "Add User",
- "This Home Server would like to make sure you are not a robot": "This Home Server would like to make sure you are not a robot",
- "Sign in with CAS": "Sign in with CAS",
- "Custom Server Options": "Custom Server Options",
- "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "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 this app with an existing Matrix account on a different home server.": "This allows you to use this app with an existing Matrix account on a different home server.",
- "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "You can also set a custom identity server but this will typically prevent interaction with users based on email address.",
- "Dismiss": "Dismiss",
- "Please check your email to continue registration.": "Please check your email to continue registration.",
- "Token incorrect": "Token incorrect",
- "A text message has been sent to": "A text message has been sent to",
- "Please enter the code it contains:": "Please enter the code it contains:",
- "powered by Matrix": "powered by Matrix",
- "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "If you don't specify an email address, you won't be able to reset your password. Are you sure?",
- "You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s",
- "Default server": "Default server",
- "Custom server": "Custom server",
- "Home server URL": "Home server URL",
- "Identity server URL": "Identity server URL",
- "What does this mean?": "What does this mean?",
- "Error decrypting audio": "Error decrypting audio",
- "Error decrypting image": "Error decrypting image",
- "Image '%(Body)s' cannot be displayed.": "Image '%(Body)s' cannot be displayed.",
- "This image cannot be displayed.": "This image cannot be displayed.",
- "Error decrypting video": "Error decrypting video",
- "Add an Integration": "Add an Integration",
- "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?",
- "Removed or unknown message type": "Removed or unknown message type",
- "Disable URL previews by default for participants in this room": "Disable URL previews by default for participants in this room",
- "Disable URL previews for this room (affects only you)": "Disable URL previews for this room (affects only you)",
- "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.",
- "URL Previews": "URL Previews",
- "Enable URL previews for this room (affects only you)": "Enable URL previews for this room (affects only you)",
- "Drop file here to upload": "Drop file here to upload",
- " (unsupported)": " (unsupported)",
- "Ongoing conference call%(supportedText)s.": "Ongoing conference call%(supportedText)s.",
- "for %(amount)ss": "for %(amount)ss",
- "for %(amount)sm": "for %(amount)sm",
- "for %(amount)sh": "for %(amount)sh",
- "for %(amount)sd": "for %(amount)sd",
+ "Markdown is disabled": "Markdown is disabled",
+ "Markdown is enabled": "Markdown is enabled",
+ "Unpin Message": "Unpin Message",
+ "Jump to message": "Jump to message",
+ "No pinned messages.": "No pinned messages.",
+ "Loading...": "Loading...",
+ "Pinned Messages": "Pinned Messages",
+ "%(duration)ss": "%(duration)ss",
+ "%(duration)sm": "%(duration)sm",
+ "%(duration)sh": "%(duration)sh",
+ "%(duration)sd": "%(duration)sd",
+ "Online for %(duration)s": "Online for %(duration)s",
+ "Idle for %(duration)s": "Idle for %(duration)s",
+ "Offline for %(duration)s": "Offline for %(duration)s",
+ "Unknown for %(duration)s": "Unknown for %(duration)s",
"Online": "Online",
"Idle": "Idle",
"Offline": "Offline",
- "Updates": "Updates",
- "Check for update": "Check for update",
- "Start chatting": "Start chatting",
- "Start Chatting": "Start Chatting",
- "Click on the button below to start chatting!": "Click on the button below to start chatting!",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName changed the room avatar to
",
- "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.",
- "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s",
- "Username available": "Username available",
- "Username not available": "Username not available",
- "Something went wrong!": "Something went wrong!",
- "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.",
- "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.",
- "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions",
- "Not a valid Riot keyfile": "Not a valid Riot keyfile",
- "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?",
- "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls",
- "Do you want to set an email address?": "Do you want to set an email address?",
- "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.",
- "To return to your account in future you need to set a password": "To return to your account in future you need to set a password",
- "Skip": "Skip",
- "Banned by %(displayName)s": "Banned by %(displayName)s",
- "Start verification": "Start verification",
- "Share without verifying": "Share without verifying",
- "Ignore request": "Ignore request",
- "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.",
- "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.",
- "Encryption key request": "Encryption key request",
- "Autocomplete Delay (ms):": "Autocomplete Delay (ms):",
- "This Home server does not support groups": "This Home server does not support groups",
- "Loading device info...": "Loading device info...",
- "Message removed by %(userId)s": "Message removed by %(userId)s",
- "Groups": "Groups",
- "Create a new group": "Create a new group",
- "Create Group": "Create Group",
- "Group Name": "Group Name",
- "Example": "Example",
- "Create": "Create",
- "Group ID": "Group ID",
- "+example:%(domain)s": "+example:%(domain)s",
- "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s",
- "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s",
- "Room creation failed": "Room creation failed",
- "You are a member of these groups:": "You are a member of these groups:",
- "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.",
- "Join an existing group": "Join an existing group",
- "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.",
- "Featured Rooms:": "Featured Rooms:",
- "To send messages, you must be a": "To send messages, you must be a",
- "To invite users into the room, you must be a": "To invite users into the room, you must be a",
- "To configure the room, you must be a": "To configure the room, you must be a",
- "To kick users, you must be a": "To kick users, you must be a",
- "To ban users, you must be a": "To ban users, you must be a",
- "To remove other users' messages, you must be a": "To remove other users' messages, you must be a",
- "To send events of type , you must be a": "To send events of type , you must be a",
+ "Unknown": "Unknown",
+ "Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s",
+ "Unnamed room": "Unnamed room",
+ "World readable": "World readable",
+ "Guests can join": "Guests can join",
+ "No rooms to show": "No rooms to show",
+ "Failed to set avatar.": "Failed to set avatar.",
+ "Save": "Save",
+ "(~%(count)s results)|other": "(~%(count)s results)",
+ "(~%(count)s results)|one": "(~%(count)s result)",
+ "Join Room": "Join Room",
+ "Upload avatar": "Upload avatar",
+ "Remove avatar": "Remove avatar",
+ "Settings": "Settings",
+ "Forget room": "Forget room",
+ "Search": "Search",
+ "Show panel": "Show panel",
+ "Drop here to favourite": "Drop here to favourite",
+ "Drop here to tag direct chat": "Drop here to tag direct chat",
+ "Drop here to restore": "Drop here to restore",
+ "Drop here to demote": "Drop here to demote",
+ "Drop here to tag %(section)s": "Drop here to tag %(section)s",
+ "Press to start a chat with someone": "Press to start a chat with someone",
+ "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory",
+ "Community Invites": "Community Invites",
+ "Invites": "Invites",
+ "Favourites": "Favourites",
+ "People": "People",
+ "Rooms": "Rooms",
+ "Low priority": "Low priority",
+ "Historical": "Historical",
+ "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.",
+ "This invitation was sent to an email address which is not associated with this account:": "This invitation was sent to an email address which is not associated with this account:",
+ "You may wish to login with a different account, or add this email to this account.": "You may wish to login with a different account, or add this email to this account.",
+ "You have been invited to join this room by %(inviterName)s": "You have been invited to join this room by %(inviterName)s",
+ "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?",
+ "Reason: %(reasonText)s": "Reason: %(reasonText)s",
+ "Rejoin": "Rejoin",
+ "You have been kicked from %(roomName)s by %(userName)s.": "You have been kicked from %(roomName)s by %(userName)s.",
+ "You have been kicked from this room by %(userName)s.": "You have been kicked from this room by %(userName)s.",
+ "You have been banned from %(roomName)s by %(userName)s.": "You have been banned from %(roomName)s by %(userName)s.",
+ "You have been banned from this room by %(userName)s.": "You have been banned from this room by %(userName)s.",
+ "This room": "This room",
+ "%(roomName)s does not exist.": "%(roomName)s does not exist.",
+ "%(roomName)s is not accessible at this time.": "%(roomName)s is not accessible at this time.",
+ "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.",
+ "You are trying to access a room.": "You are trying to access a room.",
+ "Click here to join the discussion!": "Click here to join the discussion!",
+ "This is a preview of this room. Room interactions have been disabled": "This is a preview of this room. Room interactions have been disabled",
"To change the room's avatar, you must be a": "To change the room's avatar, you must be a",
"To change the room's name, you must be a": "To change the room's name, you must be a",
"To change the room's main address, you must be a": "To change the room's main address, you must be a",
@@ -844,80 +397,564 @@
"To change the permissions in the room, you must be a": "To change the permissions in the room, you must be a",
"To change the topic, you must be a": "To change the topic, you must be a",
"To modify widgets in the room, you must be a": "To modify widgets in the room, you must be a",
- "Error whilst fetching joined groups": "Error whilst fetching joined groups",
- "Featured Users:": "Featured Users:",
- "Edit Group": "Edit Group",
- "Automatically replace plain text Emoji": "Automatically replace plain text Emoji",
- "Failed to upload image": "Failed to upload image",
- "Failed to update group": "Failed to update group",
- "Hide avatars in user and room mentions": "Hide avatars in user and room mentions",
- "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s",
- "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s",
- "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s",
- "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser",
- "Description": "Description",
- "Filter group members": "Filter group members",
- "Filter group rooms": "Filter group rooms",
- "Remove from group": "Remove from group",
- "Invite new group members": "Invite new group members",
- "Who would you like to add to this group?": "Who would you like to add to this group?",
- "Name or matrix ID": "Name or matrix ID",
- "Invite to Group": "Invite to Group",
- "Unable to accept invite": "Unable to accept invite",
- "Unable to leave room": "Unable to leave room",
- "%(inviter)s has invited you to join this group": "%(inviter)s has invited you to join this group",
- "You are a member of this group": "You are a member of this group",
- "Leave": "Leave",
- "Failed to remove user from group": "Failed to remove user from group",
- "Failed to invite the following users to %(groupId)s:": "Failed to invite the following users to %(groupId)s:",
- "Failed to invite users group": "Failed to invite users group",
- "Failed to invite users to %(groupId)s": "Failed to invite users to %(groupId)s",
- "Unable to reject invite": "Unable to reject invite",
- "Leave Group": "Leave Group",
- "Leave %(groupName)s?": "Leave %(groupName)s?",
- "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s",
- "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser",
+ "Failed to unban": "Failed to unban",
+ "Banned by %(displayName)s": "Banned by %(displayName)s",
+ "Privacy warning": "Privacy warning",
+ "Changes to who can read history will only apply to future messages in this room": "Changes to who can read history will only apply to future messages in this room",
+ "The visibility of existing history will be unchanged": "The visibility of existing history will be unchanged",
+ "unknown error code": "unknown error code",
+ "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s",
+ "End-to-end encryption is in beta and may not be reliable": "End-to-end encryption is in beta and may not be reliable",
+ "You should not yet trust it to secure data": "You should not yet trust it to secure data",
+ "Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room",
+ "Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)",
+ "Encrypted messages will not be visible on clients that do not yet implement encryption": "Encrypted messages will not be visible on clients that do not yet implement encryption",
+ "Enable encryption": "Enable encryption",
+ "(warning: cannot be disabled again!)": "(warning: cannot be disabled again!)",
+ "Encryption is enabled in this room": "Encryption is enabled in this room",
+ "Encryption is not enabled in this room": "Encryption is not enabled in this room",
+ "Privileged Users": "Privileged Users",
+ "%(user)s is a": "%(user)s is a",
+ "No users have specific privileges in this room": "No users have specific privileges in this room",
+ "Banned users": "Banned users",
+ "This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers",
+ "Leave room": "Leave room",
+ "Favourite": "Favourite",
+ "Tagged as: ": "Tagged as: ",
+ "To link to a room it must have an address.": "To link to a room it must have an address.",
+ "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.",
+ "Click here to fix": "Click here to fix",
+ "Who can access this room?": "Who can access this room?",
+ "Only people who have been invited": "Only people who have been invited",
+ "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests",
+ "Anyone who knows the room's link, including guests": "Anyone who knows the room's link, including guests",
+ "Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?",
+ "Who can read history?": "Who can read history?",
+ "Anyone": "Anyone",
+ "Members only (since the point in time of selecting this option)": "Members only (since the point in time of selecting this option)",
+ "Members only (since they were invited)": "Members only (since they were invited)",
+ "Members only (since they joined)": "Members only (since they joined)",
+ "Permissions": "Permissions",
+ "The default role for new room members is": "The default role for new room members is",
+ "To send messages, you must be a": "To send messages, you must be a",
+ "To invite users into the room, you must be a": "To invite users into the room, you must be a",
+ "To configure the room, you must be a": "To configure the room, you must be a",
+ "To kick users, you must be a": "To kick users, you must be a",
+ "To ban users, you must be a": "To ban users, you must be a",
+ "To remove other users' messages, you must be a": "To remove other users' messages, you must be a",
+ "To send events of type , you must be a": "To send events of type , you must be a",
+ "Advanced": "Advanced",
+ "This room's internal ID is": "This room's internal ID is",
+ "Add a topic": "Add a topic",
+ "Cancel": "Cancel",
+ "Scroll to unread messages": "Scroll to unread messages",
+ "Jump to first unread message.": "Jump to first unread message.",
+ "Close": "Close",
+ "Invalid alias format": "Invalid alias format",
+ "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias",
+ "Invalid address format": "Invalid address format",
+ "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address",
+ "not specified": "not specified",
+ "not set": "not set",
+ "Remote addresses for this room:": "Remote addresses for this room:",
+ "Addresses": "Addresses",
+ "The main address for this room is": "The main address for this room is",
+ "Local addresses for this room:": "Local addresses for this room:",
+ "This room has no local addresses": "This room has no local addresses",
+ "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)",
+ "Invalid community ID": "Invalid community ID",
+ "'%(groupId)s' is not a valid community ID": "'%(groupId)s' is not a valid community ID",
"Flair": "Flair",
- "Add a Room": "Add a Room",
- "Add a User": "Add a User",
- "Add users to the group summary": "Add users to the group summary",
- "Who would you like to add to this summary?": "Who would you like to add to this summary?",
- "Add to summary": "Add to summary",
- "Failed to add the following users to the summary of %(groupId)s:": "Failed to add the following users to the summary of %(groupId)s:",
- "Add rooms to the group summary": "Add rooms to the group summary",
- "Which rooms would you like to add to this summary?": "Which rooms would you like to add to this summary?",
- "Room name or alias": "Room name or alias",
- "You are an administrator of this group": "You are an administrator of this group",
- "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:",
- "Failed to remove the room from the summary of %(groupId)s": "Failed to remove the room from the summary of %(groupId)s",
- "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.",
- "Failed to remove a user from the summary of %(groupId)s": "Failed to remove a user from the summary of %(groupId)s",
- "The user '%(displayName)s' could not be removed from the summary.": "The user '%(displayName)s' could not be removed from the summary.",
- "Light theme": "Light theme",
- "Dark theme": "Dark theme",
- "Unknown": "Unknown",
- "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:",
- "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.",
- "Add rooms to the group": "Add rooms to the group",
- "Which rooms would you like to add to this group?": "Which rooms would you like to add to this group?",
- "Add to group": "Add to group",
- "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:",
- "Unpublish": "Unpublish",
- "This group is published on your profile": "This group is published on your profile",
- "Publish": "Publish",
- "This group is not published on your profile": "This group is not published on your profile",
+ "Showing flair for these communities:": "Showing flair for these communities:",
+ "This room is not showing flair for any communities": "This room is not showing flair for any communities",
+ "New community ID (e.g. +foo:%(localDomain)s)": "New community ID (e.g. +foo:%(localDomain)s)",
+ "You have enabled URL previews by default.": "You have enabled URL previews by default.",
+ "You have disabled URL previews by default.": "You have disabled URL previews by default.",
+ "URL previews are enabled by default for participants in this room.": "URL previews are enabled by default for participants in this room.",
+ "URL previews are disabled by default for participants in this room.": "URL previews are disabled by default for participants in this room.",
+ "URL Previews": "URL Previews",
+ "Error decrypting audio": "Error decrypting audio",
+ "Error decrypting attachment": "Error decrypting attachment",
+ "Decrypt %(text)s": "Decrypt %(text)s",
+ "Download %(text)s": "Download %(text)s",
+ "Invalid file%(extra)s": "Invalid file%(extra)s",
+ "Error decrypting image": "Error decrypting image",
+ "Image '%(Body)s' cannot be displayed.": "Image '%(Body)s' cannot be displayed.",
+ "This image cannot be displayed.": "This image cannot be displayed.",
+ "Error decrypting video": "Error decrypting video",
+ "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s",
+ "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s changed the room avatar to
",
+ "Copied!": "Copied!",
+ "Failed to copy": "Failed to copy",
+ "Add an Integration": "Add an Integration",
+ "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?",
+ "Removed or unknown message type": "Removed or unknown message type",
+ "Message removed by %(userId)s": "Message removed by %(userId)s",
+ "Message removed": "Message removed",
+ "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser",
+ "This Home Server would like to make sure you are not a robot": "This Home Server would like to make sure you are not a robot",
+ "Sign in with CAS": "Sign in with CAS",
+ "Custom Server Options": "Custom Server Options",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "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 this app with an existing Matrix account on a different home server.": "This allows you to use this app with an existing Matrix account on a different home server.",
+ "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "You can also set a custom identity server but this will typically prevent interaction with users based on email address.",
+ "Dismiss": "Dismiss",
+ "To continue, please enter your password.": "To continue, please enter your password.",
+ "Password:": "Password:",
+ "An email has been sent to %(emailAddress)s": "An email has been sent to %(emailAddress)s",
+ "Please check your email to continue registration.": "Please check your email to continue registration.",
+ "Token incorrect": "Token incorrect",
+ "A text message has been sent to %(msisdn)s": "A text message has been sent to %(msisdn)s",
+ "Please enter the code it contains:": "Please enter the code it contains:",
+ "Start authentication": "Start authentication",
+ "powered by Matrix": "powered by Matrix",
+ "Username on %(hs)s": "Username on %(hs)s",
+ "User name": "User name",
+ "Mobile phone number": "Mobile phone number",
+ "Forgot your password?": "Forgot your password?",
+ "%(serverName)s Matrix ID": "%(serverName)s Matrix ID",
+ "Sign in with": "Sign in with",
+ "Email address": "Email address",
+ "Sign in": "Sign in",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "If you don't specify an email address, you won't be able to reset your password. Are you sure?",
+ "Email address (optional)": "Email address (optional)",
+ "You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s",
+ "Mobile phone number (optional)": "Mobile phone number (optional)",
+ "Register": "Register",
+ "Default server": "Default server",
+ "Custom server": "Custom server",
+ "Home server URL": "Home server URL",
+ "Identity server URL": "Identity server URL",
+ "What does this mean?": "What does this mean?",
+ "Remove from community": "Remove from community",
+ "Disinvite this user from community?": "Disinvite this user from community?",
+ "Remove this user from community?": "Remove this user from community?",
+ "Failed to withdraw invitation": "Failed to withdraw invitation",
+ "Failed to remove user from community": "Failed to remove user from community",
+ "Filter community members": "Filter community members",
+ "Flair will appear if enabled in room settings": "Flair will appear if enabled in room settings",
+ "Flair will not appear": "Flair will not appear",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Are you sure you want to remove '%(roomName)s' from %(groupId)s?",
+ "Removing a room from the community will also remove it from the community page.": "Removing a room from the community will also remove it from the community page.",
+ "Remove": "Remove",
+ "Failed to remove room from community": "Failed to remove room from community",
+ "Failed to remove '%(roomName)s' from %(groupId)s": "Failed to remove '%(roomName)s' from %(groupId)s",
+ "Something went wrong!": "Something went wrong!",
+ "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "The visibility of '%(roomName)s' in %(groupId)s could not be updated.",
+ "Visibility in Room List": "Visibility in Room List",
+ "Visible to everyone": "Visible to everyone",
+ "Only visible to community members": "Only visible to community members",
+ "Filter community rooms": "Filter community rooms",
+ "Something went wrong when trying to get your communities.": "Something went wrong when trying to get your communities.",
+ "Display your community flair in rooms configured to show it.": "Display your community flair in rooms configured to show it.",
+ "You're not currently a member of any communities.": "You're not currently a member of any communities.",
+ "Unknown Address": "Unknown Address",
+ "NOTE: Apps are not end-to-end encrypted": "NOTE: Apps are not end-to-end encrypted",
+ "Do you want to load widget from URL:": "Do you want to load widget from URL:",
+ "Allow": "Allow",
+ "Delete Widget": "Delete Widget",
+ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?",
+ "Delete widget": "Delete widget",
+ "Revoke widget access": "Revoke widget access",
+ "Edit": "Edit",
+ "Create new room": "Create new room",
+ "Unblacklist": "Unblacklist",
+ "Blacklist": "Blacklist",
+ "Unverify": "Unverify",
+ "Verify...": "Verify...",
+ "No results": "No results",
+ "Delete": "Delete",
+ "Communities": "Communities",
+ "Home": "Home",
+ "Integrations Error": "Integrations Error",
+ "Could not connect to the integration server": "Could not connect to the integration server",
+ "Manage Integrations": "Manage Integrations",
+ "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s",
+ "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)sjoined %(count)s times",
+ "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)sjoined",
+ "%(oneUser)sjoined %(count)s times|other": "%(oneUser)sjoined %(count)s times",
+ "%(oneUser)sjoined %(count)s times|one": "%(oneUser)sjoined",
+ "%(severalUsers)sleft %(count)s times|other": "%(severalUsers)sleft %(count)s times",
+ "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)sleft",
+ "%(oneUser)sleft %(count)s times|other": "%(oneUser)sleft %(count)s times",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)sleft",
+ "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)sjoined and left %(count)s times",
+ "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)sjoined and left",
+ "%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)sjoined and left %(count)s times",
+ "%(oneUser)sjoined and left %(count)s times|one": "%(oneUser)sjoined and left",
+ "%(severalUsers)sleft and rejoined %(count)s times|other": "%(severalUsers)sleft and rejoined %(count)s times",
+ "%(severalUsers)sleft and rejoined %(count)s times|one": "%(severalUsers)sleft and rejoined",
+ "%(oneUser)sleft and rejoined %(count)s times|other": "%(oneUser)sleft and rejoined %(count)s times",
+ "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)sleft and rejoined",
+ "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)srejected their invitations %(count)s times",
+ "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)srejected their invitations",
+ "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)srejected their invitation %(count)s times",
+ "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)srejected their invitation",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "%(severalUsers)shad their invitations withdrawn %(count)s times",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|one": "%(severalUsers)shad their invitations withdrawn",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|other": "%(oneUser)shad their invitation withdrawn %(count)s times",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|one": "%(oneUser)shad their invitation withdrawn",
+ "were invited %(count)s times|other": "were invited %(count)s times",
+ "were invited %(count)s times|one": "were invited",
+ "was invited %(count)s times|other": "was invited %(count)s times",
+ "was invited %(count)s times|one": "was invited",
+ "were banned %(count)s times|other": "were banned %(count)s times",
+ "were banned %(count)s times|one": "were banned",
+ "was banned %(count)s times|other": "was banned %(count)s times",
+ "was banned %(count)s times|one": "was banned",
+ "were unbanned %(count)s times|other": "were unbanned %(count)s times",
+ "were unbanned %(count)s times|one": "were unbanned",
+ "was unbanned %(count)s times|other": "was unbanned %(count)s times",
+ "was unbanned %(count)s times|one": "was unbanned",
+ "were kicked %(count)s times|other": "were kicked %(count)s times",
+ "were kicked %(count)s times|one": "were kicked",
+ "was kicked %(count)s times|other": "was kicked %(count)s times",
+ "was kicked %(count)s times|one": "was kicked",
+ "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)schanged their name %(count)s times",
+ "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)schanged their name",
+ "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)schanged their name %(count)s times",
+ "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)schanged their name",
+ "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)schanged their avatar %(count)s times",
+ "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)schanged their avatar",
+ "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)schanged their avatar %(count)s times",
+ "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)schanged their avatar",
+ "%(items)s and %(count)s others|other": "%(items)s and %(count)s others",
+ "%(items)s and %(count)s others|one": "%(items)s and one other",
+ "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s",
+ "collapse": "collapse",
+ "expand": "expand",
+ "Custom of %(powerLevel)s": "Custom of %(powerLevel)s",
+ "Custom level": "Custom level",
+ "Room directory": "Room directory",
+ "Start chat": "Start chat",
+ "And %(count)s more...|other": "And %(count)s more...",
+ "ex. @bob:example.com": "ex. @bob:example.com",
+ "Add User": "Add User",
"Matrix ID": "Matrix ID",
"Matrix Room ID": "Matrix Room ID",
"email address": "email address",
"Try using one of the following valid address types: %(validTypesList)s.": "Try using one of the following valid address types: %(validTypesList)s.",
"You have entered an invalid address.": "You have entered an invalid address.",
- "Failed to remove room from group": "Failed to remove room from group",
- "Failed to remove '%(roomName)s' from %(groupId)s": "Failed to remove '%(roomName)s' from %(groupId)s",
- "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Are you sure you want to remove '%(roomName)s' from %(groupId)s?",
- "Removing a room from the group will also remove it from the group page.": "Removing a room from the group will also remove it from the group page.",
- "Related Groups": "Related Groups",
- "Related groups for this room:": "Related groups for this room:",
- "This room has no related groups": "This room has no related groups",
- "New group ID (e.g. +foo:%(localDomain)s)": "New group ID (e.g. +foo:%(localDomain)s)",
- "%(serverName)s Matrix ID": "%(serverName)s Matrix ID"
+ "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one",
+ "Start new chat": "Start new chat",
+ "You already have existing direct chats with this user:": "You already have existing direct chats with this user:",
+ "Start chatting": "Start chatting",
+ "Click on the button below to start chatting!": "Click on the button below to start chatting!",
+ "Start Chatting": "Start Chatting",
+ "Confirm Removal": "Confirm Removal",
+ "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.",
+ "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Community IDs may only contain characters a-z, 0-9, or '=_-./'",
+ "Something went wrong whilst creating your community": "Something went wrong whilst creating your community",
+ "Create Community": "Create Community",
+ "Community Name": "Community Name",
+ "Example": "Example",
+ "Community ID": "Community ID",
+ "example": "example",
+ "Create": "Create",
+ "Create Room": "Create Room",
+ "Room name (optional)": "Room name (optional)",
+ "Advanced options": "Advanced options",
+ "Block users on other matrix homeservers from joining this room": "Block users on other matrix homeservers from joining this room",
+ "This setting cannot be changed later!": "This setting cannot be changed later!",
+ "Unknown error": "Unknown error",
+ "Incorrect password": "Incorrect password",
+ "Deactivate Account": "Deactivate Account",
+ "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "This will make your account permanently unusable. You will not be able to re-register the same user ID.",
+ "This action is irreversible.": "This action is irreversible.",
+ "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:",
+ "Device name": "Device name",
+ "Device key": "Device key",
+ "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.",
+ "In future this verification process will be more sophisticated.": "In future this verification process will be more sophisticated.",
+ "Verify device": "Verify device",
+ "I verify that the keys match": "I verify that the keys match",
+ "An error has occurred.": "An error has occurred.",
+ "OK": "OK",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.",
+ "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.",
+ "Start verification": "Start verification",
+ "Share without verifying": "Share without verifying",
+ "Ignore request": "Ignore request",
+ "Loading device info...": "Loading device info...",
+ "Encryption key request": "Encryption key request",
+ "Otherwise, click here to send a bug report.": "Otherwise, click here to send a bug report.",
+ "Unable to restore session": "Unable to restore session",
+ "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.",
+ "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.",
+ "Continue anyway": "Continue anyway",
+ "Invalid Email Address": "Invalid Email Address",
+ "This doesn't appear to be a valid email address": "This doesn't appear to be a valid email address",
+ "Verification Pending": "Verification Pending",
+ "Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.",
+ "Unable to add email address": "Unable to add email address",
+ "Unable to verify email address.": "Unable to verify email address.",
+ "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.",
+ "Skip": "Skip",
+ "User names may only contain letters, numbers, dots, hyphens and underscores.": "User names may only contain letters, numbers, dots, hyphens and underscores.",
+ "Username not available": "Username not available",
+ "Username invalid: %(errMessage)s": "Username invalid: %(errMessage)s",
+ "An error occurred: %(error_string)s": "An error occurred: %(error_string)s",
+ "Username available": "Username available",
+ "To get started, please pick a username!": "To get started, please pick a username!",
+ "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.",
+ "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.",
+ "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.",
+ "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.",
+ "Room contains unknown devices": "Room contains unknown devices",
+ "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.",
+ "Unknown devices": "Unknown devices",
+ "Private Chat": "Private Chat",
+ "Public Chat": "Public Chat",
+ "Custom": "Custom",
+ "Alias (optional)": "Alias (optional)",
+ "Name": "Name",
+ "Topic": "Topic",
+ "Make this room private": "Make this room private",
+ "Share message history with new users": "Share message history with new users",
+ "Encrypt room": "Encrypt room",
+ "You must register to use this functionality": "You must register to use this functionality",
+ "You must join the room to see its files": "You must join the room to see its files",
+ "There are no visible files in this room": "There are no visible files in this room",
+ "HTML for your community's page
\n\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n\n You can even use 'img' tags\n
\n": "HTML for your community's page
\n\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n\n You can even use 'img' tags\n
\n",
+ "Add rooms to the community summary": "Add rooms to the community summary",
+ "Which rooms would you like to add to this summary?": "Which rooms would you like to add to this summary?",
+ "Add to summary": "Add to summary",
+ "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:",
+ "Add a Room": "Add a Room",
+ "Failed to remove the room from the summary of %(groupId)s": "Failed to remove the room from the summary of %(groupId)s",
+ "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.",
+ "Add users to the community summary": "Add users to the community summary",
+ "Who would you like to add to this summary?": "Who would you like to add to this summary?",
+ "Failed to add the following users to the summary of %(groupId)s:": "Failed to add the following users to the summary of %(groupId)s:",
+ "Add a User": "Add a User",
+ "Failed to remove a user from the summary of %(groupId)s": "Failed to remove a user from the summary of %(groupId)s",
+ "The user '%(displayName)s' could not be removed from the summary.": "The user '%(displayName)s' could not be removed from the summary.",
+ "Failed to upload image": "Failed to upload image",
+ "Failed to update community": "Failed to update community",
+ "Unable to accept invite": "Unable to accept invite",
+ "Unable to reject invite": "Unable to reject invite",
+ "Leave Community": "Leave Community",
+ "Leave %(groupName)s?": "Leave %(groupName)s?",
+ "Leave": "Leave",
+ "Unable to leave room": "Unable to leave room",
+ "Community Settings": "Community Settings",
+ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.",
+ "Add rooms to this community": "Add rooms to this community",
+ "Featured Rooms:": "Featured Rooms:",
+ "Featured Users:": "Featured Users:",
+ "%(inviter)s has invited you to join this community": "%(inviter)s has invited you to join this community",
+ "You are an administrator of this community": "You are an administrator of this community",
+ "You are a member of this community": "You are a member of this community",
+ "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!",
+ "Long Description (HTML)": "Long Description (HTML)",
+ "Description": "Description",
+ "Community %(groupId)s not found": "Community %(groupId)s not found",
+ "This Home server does not support communities": "This Home server does not support communities",
+ "Failed to load %(groupId)s": "Failed to load %(groupId)s",
+ "Reject invitation": "Reject invitation",
+ "Are you sure you want to reject the invitation?": "Are you sure you want to reject the invitation?",
+ "Failed to reject invitation": "Failed to reject invitation",
+ "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?",
+ "Failed to leave room": "Failed to leave room",
+ "Signed Out": "Signed Out",
+ "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.",
+ "Cryptography data migrated": "Cryptography data migrated",
+ "A one-off migration of cryptography data has been performed. End-to-end encryption will not work if you go back to an older version of Riot. If you need to use end-to-end cryptography on an older version, log out of Riot first. To retain message history, export and re-import your keys.": "A one-off migration of cryptography data has been performed. End-to-end encryption will not work if you go back to an older version of Riot. If you need to use end-to-end cryptography on an older version, log out of Riot first. To retain message history, export and re-import your keys.",
+ "Old cryptography data detected": "Old cryptography data detected",
+ "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.",
+ "Logout": "Logout",
+ "Your Communities": "Your Communities",
+ "Error whilst fetching joined communities": "Error whilst fetching joined communities",
+ "Create a new community": "Create a new community",
+ "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.",
+ "Join an existing community": "Join an existing community",
+ "To join an existing community you'll have to know its community identifier; this will look something like +example:matrix.org.": "To join an existing community you'll have to know its community identifier; this will look something like +example:matrix.org.",
+ "You have no visible notifications": "You have no visible notifications",
+ "Scroll to bottom of page": "Scroll to bottom of page",
+ "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present",
+ "Show devices or cancel all.": "Show devices or cancel all.",
+ "Some of your messages have not been sent.": "Some of your messages have not been sent.",
+ "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.",
+ "Warning": "Warning",
+ "Connectivity to the server has been lost.": "Connectivity to the server has been lost.",
+ "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.",
+ "%(count)s new messages|other": "%(count)s new messages",
+ "%(count)s new messages|one": "%(count)s new message",
+ "Active call": "Active call",
+ "There's no one else here! Would you like to invite others or stop warning about the empty room?": "There's no one else here! Would you like to invite others or stop warning about the empty room?",
+ "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?",
+ "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?",
+ "Failed to upload file": "Failed to upload file",
+ "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big",
+ "Search failed": "Search failed",
+ "Server may be unavailable, overloaded, or search timed out :(": "Server may be unavailable, overloaded, or search timed out :(",
+ "No more results": "No more results",
+ "Unknown room %(roomId)s": "Unknown room %(roomId)s",
+ "Room": "Room",
+ "Failed to save settings": "Failed to save settings",
+ "Failed to reject invite": "Failed to reject invite",
+ "Fill screen": "Fill screen",
+ "Click to unmute video": "Click to unmute video",
+ "Click to mute video": "Click to mute video",
+ "Click to unmute audio": "Click to unmute audio",
+ "Click to mute audio": "Click to mute audio",
+ "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.",
+ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.",
+ "Failed to load timeline position": "Failed to load timeline position",
+ "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others",
+ "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other",
+ "Light theme": "Light theme",
+ "Dark theme": "Dark theme",
+ "Status.im theme": "Status.im theme",
+ "Can't load user settings": "Can't load user settings",
+ "Server may be unavailable or overloaded": "Server may be unavailable or overloaded",
+ "Sign out": "Sign out",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.",
+ "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?",
+ "Success": "Success",
+ "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them",
+ "Remove Contact Information?": "Remove Contact Information?",
+ "Remove %(threePid)s?": "Remove %(threePid)s?",
+ "Unable to remove contact information": "Unable to remove contact information",
+ "Refer a friend to Riot:": "Refer a friend to Riot:",
+ "Interface Language": "Interface Language",
+ "User Interface": "User Interface",
+ "Autocomplete Delay (ms):": "Autocomplete Delay (ms):",
+ "": "",
+ "Import E2E room keys": "Import E2E room keys",
+ "Cryptography": "Cryptography",
+ "Device ID:": "Device ID:",
+ "Device key:": "Device key:",
+ "Ignored Users": "Ignored Users",
+ "Bug Report": "Bug Report",
+ "Found a bug?": "Found a bug?",
+ "Report it": "Report it",
+ "Analytics": "Analytics",
+ "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.",
+ "Labs": "Labs",
+ "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways",
+ "Use with caution": "Use with caution",
+ "Deactivate my account": "Deactivate my account",
+ "Clear Cache": "Clear Cache",
+ "Clear Cache and Reload": "Clear Cache and Reload",
+ "Updates": "Updates",
+ "Check for update": "Check for update",
+ "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites",
+ "Bulk Options": "Bulk Options",
+ "Desktop specific": "Desktop specific",
+ "Start automatically after system login": "Start automatically after system login",
+ "No media permissions": "No media permissions",
+ "You may need to manually permit Riot to access your microphone/webcam": "You may need to manually permit Riot to access your microphone/webcam",
+ "Missing Media Permissions, click here to request.": "Missing Media Permissions, click here to request.",
+ "No Microphones detected": "No Microphones detected",
+ "No Webcams detected": "No Webcams detected",
+ "Default Device": "Default Device",
+ "Microphone": "Microphone",
+ "Camera": "Camera",
+ "VoIP": "VoIP",
+ "Email": "Email",
+ "Add email address": "Add email address",
+ "Notifications": "Notifications",
+ "Profile": "Profile",
+ "Display name": "Display name",
+ "Account": "Account",
+ "To return to your account in future you need to set a password": "To return to your account in future you need to set a password",
+ "Logged in as:": "Logged in as:",
+ "Access Token:": "Access Token:",
+ "click to reveal": "click to reveal",
+ "Homeserver is": "Homeserver is",
+ "Identity Server is": "Identity Server is",
+ "matrix-react-sdk version:": "matrix-react-sdk version:",
+ "riot-web version:": "riot-web version:",
+ "olm version:": "olm version:",
+ "Failed to send email": "Failed to send email",
+ "The email address linked to your account must be entered.": "The email address linked to your account must be entered.",
+ "A new password must be entered.": "A new password must be entered.",
+ "New passwords must match each other.": "New passwords must match each other.",
+ "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.",
+ "I have verified my email address": "I have verified my email address",
+ "Your password has been reset": "Your password has been reset",
+ "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device",
+ "Return to login screen": "Return to login screen",
+ "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account",
+ "New password": "New password",
+ "Confirm your new password": "Confirm your new password",
+ "Send Reset Email": "Send Reset Email",
+ "Create an account": "Create an account",
+ "This Home Server does not support login using email address.": "This Home Server does not support login using email address.",
+ "Incorrect username and/or password.": "Incorrect username and/or password.",
+ "Please note you are logging into the %(hs)s server, not matrix.org.": "Please note you are logging into the %(hs)s server, not matrix.org.",
+ "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.",
+ "The phone number entered looks invalid": "The phone number entered looks invalid",
+ "This homeserver doesn't offer any login flows which are supported by this client.": "This homeserver doesn't offer any login flows which are supported by this client.",
+ "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.",
+ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.",
+ "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.",
+ "Login as guest": "Login as guest",
+ "Sign in to get started": "Sign in to get started",
+ "Failed to fetch avatar URL": "Failed to fetch avatar URL",
+ "Set a display name:": "Set a display name:",
+ "Upload an avatar:": "Upload an avatar:",
+ "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.",
+ "Missing password.": "Missing password.",
+ "Passwords don't match.": "Passwords don't match.",
+ "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password too short (min %(MIN_PASSWORD_LENGTH)s).",
+ "This doesn't look like a valid email address.": "This doesn't look like a valid email address.",
+ "This doesn't look like a valid phone number.": "This doesn't look like a valid phone number.",
+ "You need to enter a user name.": "You need to enter a user name.",
+ "An unknown error occurred.": "An unknown error occurred.",
+ "I already have an account": "I already have an account",
+ "Displays action": "Displays action",
+ "Bans user with given id": "Bans user with given id",
+ "Unbans user with given id": "Unbans user with given id",
+ "Define the power level of a user": "Define the power level of a user",
+ "Deops user with given id": "Deops user with given id",
+ "Invites user with given id to current room": "Invites user with given id to current room",
+ "Joins room with given alias": "Joins room with given alias",
+ "Sets the room topic": "Sets the room topic",
+ "Kicks user with given id": "Kicks user with given id",
+ "Changes your display nickname": "Changes your display nickname",
+ "Searches DuckDuckGo for results": "Searches DuckDuckGo for results",
+ "Changes colour scheme of current room": "Changes colour scheme of current room",
+ "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple",
+ "Ignores a user, hiding their messages from you": "Ignores a user, hiding their messages from you",
+ "Stops ignoring a user, showing their messages going forward": "Stops ignoring a user, showing their messages going forward",
+ "Commands": "Commands",
+ "Results from DuckDuckGo": "Results from DuckDuckGo",
+ "Emoji": "Emoji",
+ "Notify the whole room": "Notify the whole room",
+ "Room Notification": "Room Notification",
+ "Users": "Users",
+ "unknown device": "unknown device",
+ "NOT verified": "NOT verified",
+ "verified": "verified",
+ "Verification": "Verification",
+ "Ed25519 fingerprint": "Ed25519 fingerprint",
+ "User ID": "User ID",
+ "Curve25519 identity key": "Curve25519 identity key",
+ "none": "none",
+ "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key",
+ "Algorithm": "Algorithm",
+ "unencrypted": "unencrypted",
+ "Decryption error": "Decryption error",
+ "Session ID": "Session ID",
+ "End-to-end encryption information": "End-to-end encryption information",
+ "Event information": "Event information",
+ "Sender device information": "Sender device information",
+ "Passphrases must match": "Passphrases must match",
+ "Passphrase must not be empty": "Passphrase must not be empty",
+ "Export room keys": "Export room keys",
+ "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.",
+ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.",
+ "Enter passphrase": "Enter passphrase",
+ "Confirm passphrase": "Confirm passphrase",
+ "Export": "Export",
+ "Import room keys": "Import room keys",
+ "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.",
+ "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.",
+ "File to import": "File to import",
+ "Import": "Import"
}
diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json
index 31d1dcf3ef..3783a42ddc 100644
--- a/src/i18n/strings/en_US.json
+++ b/src/i18n/strings/en_US.json
@@ -3,7 +3,6 @@
"AM": "AM",
"PM": "PM",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains",
- "accept": "accept",
"%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.",
"Account": "Account",
@@ -26,8 +25,6 @@
"Hide removed messages": "Hide removed messages",
"Always show message timestamps": "Always show message timestamps",
"Authentication": "Authentication",
- "an address": "an address",
- "and": "and",
"%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others",
"%(items)s and one other": "%(items)s and one other",
"%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s",
@@ -35,7 +32,6 @@
"and %(count)s others...|one": "and one other...",
"%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing",
"%(names)s and one other are typing": "%(names)s and one other are typing",
- "%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing",
"An email has been sent to": "An email has been sent to",
"A new password must be entered.": "A new password must be entered.",
"%(senderName)s answered the call.": "%(senderName)s answered the call.",
@@ -57,7 +53,6 @@
"Bug Report": "Bug Report",
"Bulk Options": "Bulk Options",
"Call Timeout": "Call Timeout",
- "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.",
"Can't load user settings": "Can't load user settings",
"Change Password": "Change Password",
@@ -73,7 +68,6 @@
"Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key",
"Clear Cache and Reload": "Clear Cache and Reload",
"Clear Cache": "Clear Cache",
- "Click here": "Click here",
"Click here to fix": "Click here to fix",
"Click to mute audio": "Click to mute audio",
"Click to mute video": "Click to mute video",
@@ -99,11 +93,9 @@
"/ddg is not a command": "/ddg is not a command",
"Deactivate Account": "Deactivate Account",
"Deactivate my account": "Deactivate my account",
- "decline": "decline",
"Decrypt %(text)s": "Decrypt %(text)s",
"Decryption error": "Decryption error",
"Delete": "Delete",
- "demote": "demote",
"Deops user with given id": "Deops user with given id",
"Default": "Default",
"Delete widget": "Delete widget",
@@ -156,7 +148,6 @@
"Failed to load timeline position": "Failed to load timeline position",
"Failed to lookup current room": "Failed to lookup current room",
"Failed to mute user": "Failed to mute user",
- "Failed to register as guest:": "Failed to register as guest:",
"Failed to reject invite": "Failed to reject invite",
"Failed to reject invitation": "Failed to reject invitation",
"Failed to save settings": "Failed to save settings",
@@ -171,7 +162,6 @@
"Failed to verify email address: make sure you clicked the link in the email": "Failed to verify email address: make sure you clicked the link in the email",
"Failure to create room": "Failure to create room",
"Favourite": "Favorite",
- "favourite": "favorite",
"Favourites": "Favorites",
"Fill screen": "Fill screen",
"Filter room members": "Filter room members",
@@ -183,7 +173,6 @@
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s",
"Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.",
"Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.",
- "had": "had",
"Hangup": "Hangup",
"Hide Apps": "Hide Apps",
"Hide read receipts": "Hide read receipts",
@@ -206,14 +195,11 @@
"Invited": "Invited",
"Invites": "Invites",
"Invites user with given id to current room": "Invites user with given id to current room",
- "is a": "is a",
"'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address",
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias",
"%(displayName)s is typing": "%(displayName)s is typing",
"Sign in with": "Sign in with",
"Join Room": "Join Room",
- "joined and left": "joined and left",
- "joined": "joined",
"%(targetName)s joined the room.": "%(targetName)s joined the room.",
"Joins room with given alias": "Joins room with given alias",
"Jump to first unread message.": "Jump to first unread message.",
@@ -232,10 +218,7 @@
"Stops ignoring a user, showing their messages going forward": "Stops ignoring a user, showing their messages going forward",
"Ignores a user, hiding their messages from you": "Ignores a user, hiding their messages from you",
"Leave room": "Leave room",
- "left and rejoined": "left and rejoined",
- "left": "left",
"%(targetName)s left the room.": "%(targetName)s left the room.",
- "Level": "Level",
"Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?",
"Local addresses for this room:": "Local addresses for this room:",
"Logged in as:": "Logged in as:",
@@ -251,7 +234,6 @@
"Markdown is disabled": "Markdown is disabled",
"Markdown is enabled": "Markdown is enabled",
"matrix-react-sdk version:": "matrix-react-sdk version:",
- "Matrix Apps": "Matrix Apps",
"Members only": "Members only",
"Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing",
"Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present",
@@ -264,7 +246,6 @@
"Mute": "Mute",
"Name": "Name",
"Never send encrypted messages to unverified devices from this device": "Never send encrypted messages to unverified devices from this device",
- "Never send encrypted messages to unverified devices in this room": "Never send encrypted messages to unverified devices in this room",
"Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device",
"New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)",
"New password": "New password",
@@ -304,7 +285,6 @@
"Revoke widget access": "Revoke widget access",
"Refer a friend to Riot:": "Refer a friend to Riot:",
"Register": "Register",
- "rejected": "rejected",
"%(targetName)s rejected the invitation.": "%(targetName)s rejected the invitation.",
"Reject invitation": "Reject invitation",
"Remote addresses for this room:": "Remote addresses for this room:",
@@ -316,7 +296,6 @@
"%(senderName)s requested a VoIP conference.": "%(senderName)s requested a VoIP conference.",
"Report it": "Report it",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.",
- "restore": "restore",
"Results from DuckDuckGo": "Results from DuckDuckGo",
"Return to app": "Return to app",
"Return to login screen": "Return to login screen",
@@ -368,7 +347,6 @@
"Start Chat": "Start Chat",
"Submit": "Submit",
"Success": "Success",
- "tag direct chat": "tag direct chat",
"Tagged as: ": "Tagged as: ",
"The default role for new room members is": "The default role for new room members is",
"The main address for this room is": "The main address for this room is",
@@ -386,21 +364,14 @@
"These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways",
"The visibility of existing history will be unchanged": "The visibility of existing history will be unchanged",
"This doesn't appear to be a valid email address": "This doesn't appear to be a valid email address",
- "this invitation?": "this invitation?",
"This is a preview of this room. Room interactions have been disabled": "This is a preview of this room. Room interactions have been disabled",
"This phone number is already in use": "This phone number is already in use",
"This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers",
"This room's internal ID is": "This room's internal ID is",
- "times": "times",
- "to browse the directory": "to browse the directory",
"to demote": "to demote",
"to favourite": "to favorite",
- "to join the discussion": "to join the discussion",
- "To link to a room it must have": "To link to a room it must have",
- "to make a room or": "to make a room or",
"To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account",
"to restore": "to restore",
- "to start a chat with someone": "to start a chat with someone",
"to tag direct chat": "to tag direct chat",
"To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.",
@@ -459,9 +430,7 @@
"Who would you like to add to this room?": "Who would you like to add to this room?",
"Who would you like to communicate with?": "Who would you like to communicate with?",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.",
- "Would you like to": "Would you like to",
"You are already in a call.": "You are already in a call.",
- "You're not in any rooms yet! Press": "You're not in any rooms yet! Press",
"You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.",
"You cannot place a call with yourself.": "You cannot place a call with yourself.",
"You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.",
@@ -471,7 +440,6 @@
"You have disabled URL previews by default.": "You have disabled URL previews by default.",
"You have enabled URL previews by default.": "You have enabled URL previews by default.",
"You have no visible notifications": "You have no visible notifications",
- "you must be a": "you must be a",
"You need to be able to invite users to do that.": "You need to be able to invite users to do that.",
"You need to be logged in.": "You need to be logged in.",
"You need to enter a user name.": "You need to enter a user name.",
@@ -525,20 +493,8 @@
"Room": "Room",
"Connectivity to the server has been lost.": "Connectivity to the server has been lost.",
"Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.",
- "Resend all": "Resend all",
- "(~%(searchCount)s results)": "(~%(searchCount)s results)",
"Cancel": "Cancel",
- "cancel all": "cancel all",
- "or": "or",
- "now. You can also select individual messages to resend or cancel.": "now. You can also select individual messages to resend or cancel.",
"Active call": "Active call",
- "Monday": "Monday",
- "Tuesday": "Tuesday",
- "Wednesday": "Wednesday",
- "Thursday": "Thursday",
- "Friday": "Friday",
- "Saturday": "Saturday",
- "Sunday": "Sunday",
"bold": "bold",
"italic": "italic",
"strike": "strike",
@@ -705,7 +661,7 @@
"Idle": "Idle",
"Offline": "Offline",
"Disable URL previews for this room (affects only you)": "Disable URL previews for this room (affects only you)",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName changed the room avatar to
",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s changed the room avatar to
",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s",
"Active call (%(roomName)s)": "Active call (%(roomName)s)",
@@ -713,7 +669,6 @@
"a room": "a room",
"Add": "Add",
"Admin Tools": "Admin tools",
- "And %(count)s more...": "And %(count)s more...",
"Alias (optional)": "Alias (optional)",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.",
"Click here to join the discussion!": "Click here to join the discussion!",
@@ -754,7 +709,6 @@
"%(roomName)s is not accessible at this time.": "%(roomName)s is not accessible at this time.",
"Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s",
"Send anyway": "Send anyway",
- "Set": "Set",
"Show Text Formatting Toolbar": "Show Text Formatting Toolbar",
"Start authentication": "Start authentication",
"The phone number entered looks invalid": "The phone number entered looks invalid",
@@ -831,34 +785,20 @@
"You are not in this room.": "You are not in this room.",
"You do not have permission to do that in this room.": "You do not have permission to do that in this room.",
"Autocomplete Delay (ms):": "Autocomplete Delay (ms):",
- "This Home server does not support groups": "This Home server does not support groups",
"Loading device info...": "Loading device info...",
"Message removed by %(userId)s": "Message removed by %(userId)s",
- "Groups": "Groups",
- "Create a new group": "Create a new group",
- "Create Group": "Create Group",
- "Group Name": "Group Name",
"Example": "Example",
"Create": "Create",
- "Group ID": "Group ID",
- "+example:%(domain)s": "+example:%(domain)s",
- "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s",
"Room creation failed": "Room creation failed",
- "You are a member of these groups:": "You are a member of these groups:",
- "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.",
- "Join an existing group": "Join an existing group",
+ "Pinned Messages": "Pinned Messages",
"Featured Rooms:": "Featured Rooms:",
- "Error whilst fetching joined groups": "Error while fetching joined groups",
"Featured Users:": "Featured Users:",
- "Edit Group": "Edit Group",
"Automatically replace plain text Emoji": "Automatically replace plain text Emoji",
"Failed to upload image": "Failed to upload image",
- "Failed to update group": "Failed to update group",
"Hide avatars in user and room mentions": "Hide avatars in user and room mentions",
"%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s",
"%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s",
"Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser",
"Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple",
- "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s",
- "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org."
+ "%(senderName)s changed the pinned messages for the room.": "%(senderName)s changed the pinned messages for the room."
}
diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json
index 0967ef424b..363b61faad 100644
--- a/src/i18n/strings/eo.json
+++ b/src/i18n/strings/eo.json
@@ -1 +1,43 @@
-{}
+{
+ "This email address is already in use": "Tiu ĉi retpoŝtadreso jam estas uzata",
+ "This phone number is already in use": "Tiu ĉi telefona numero jam estas uzata",
+ "Failed to verify email address: make sure you clicked the link in the email": "Kontrolo de via retpoŝtadreso malsukcesis; certigu, ke vi alklakis la ligilon en la retletero",
+ "Call Timeout": "Voka Tempolimo",
+ "The remote side failed to pick up": "Kunvokonto malsukcesis respondi",
+ "Unable to capture screen": "Ekrano ne registreblas",
+ "You cannot place a call with yourself.": "Vi ne povas voki vin mem.",
+ "Warning!": "Averto!",
+ "Sign in with CAS": "Saluti per CAS",
+ "Sign in with": "Saluti per",
+ "Sign in": "Saluti",
+ "For security, this session has been signed out. Please sign in again.": "Pro sekurecaj kialoj, la seanco finiĝis. Bonvolu resaluti.",
+ "Upload Failed": "Alŝuto malsukcesis",
+ "Sun": "Dim",
+ "Mon": "Lun",
+ "Tue": "Mar",
+ "Wed": "Mer",
+ "Thu": "Ĵaŭ",
+ "Fri": "Ven",
+ "Sat": "Sab",
+ "Jan": "Jan",
+ "Feb": "Feb",
+ "Mar": "Mar",
+ "Apr": "Apr",
+ "May": "Maj",
+ "Jun": "Jun",
+ "Jul": "Jul",
+ "Aug": "Aŭg",
+ "Sep": "Sep",
+ "Oct": "Okt",
+ "Nov": "Nov",
+ "Dec": "Dec",
+ "PM": "ptm",
+ "AM": "atm",
+ "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(fullYear)s %(monthName)s %(day)s %(time)s",
+ "Who would you like to add to this community?": "Kiun vi volas aldoni al tiu ĉi komunumo?",
+ "Invite new community members": "Invitu novajn komunumanojn",
+ "Name or matrix ID": "Nomo aŭ Matrix-identigilo",
+ "Invite to Community": "Inviti al komunumo"
+}
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index 9f2005fc99..261700a916 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -1,6 +1,5 @@
{
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un mensaje de texto ha sido enviado a +%(msisdn)s. Por favor ingrese el código de verificación que lo contiene",
- "accept": "Aceptar",
"%(targetName)s accepted an invitation.": "%(targetName)s ha aceptado una invitación.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s ha aceptado la invitación para %(displayName)s.",
"Account": "Cuenta",
@@ -12,8 +11,6 @@
"Algorithm": "Algoritmo",
"Always show message timestamps": "Siempre mostrar la hora del mensaje",
"Authentication": "Autenticación",
- "an address": "una dirección",
- "and": "y",
"%(items)s and %(remaining)s others": "%(items)s y %(remaining)s otros",
"%(items)s and one other": "%(items)s y otro",
"%(items)s and %(lastItem)s": "%(items)s y %(lastItem)s",
@@ -21,7 +18,6 @@
"and %(count)s others...|one": "y otro...",
"%(names)s and %(lastPerson)s are typing": "%(names)s y %(lastPerson)s están escribiendo",
"%(names)s and one other are typing": "%(names)s y otro están escribiendo",
- "%(names)s and %(count)s others are typing": "%(names)s y %(count)s otros están escribiendo",
"An email has been sent to": "Un correo ha sido enviado a",
"A new password must be entered.": "Una nueva clave debe ser ingresada.",
"%(senderName)s answered the call.": "%(senderName)s atendió la llamada.",
@@ -30,7 +26,6 @@
"Anyone who knows the room's link, including guests": "Cualquiera que sepa del enlace de la sala, incluyendo los invitados",
"Are you sure?": "¿Estás seguro?",
"Are you sure you want to reject the invitation?": "¿Estás seguro que quieres rechazar la invitación?",
- "Are you sure you want upload the following files?": "¿Estás seguro que quieres subir los siguientes archivos?",
"Attachment": "Adjunto",
"Autoplay GIFs and videos": "Reproducir automáticamente GIFs y videos",
"%(senderName)s banned %(targetName)s.": "%(senderName)s ha bloqueado a %(targetName)s.",
@@ -41,7 +36,6 @@
"Bug Report": "Reporte de fallo",
"Bulk Options": "Opciones masivas",
"Call Timeout": "Tiempo de espera de la llamada",
- "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "No se puede conectar con el servidor - Por favor verifique su conexión y asegúrese de que su certificado SSL del servidor sea confiable.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "No se puede conectar al servidor via HTTP, cuando es necesario un enlace HTTPS en la barra de direcciones de tu navegador. Ya sea usando HTTPS o habilitando los scripts inseguros.",
"Can't load user settings": "No se puede cargar las configuraciones del usuario",
"Change Password": "Cambiar clave",
@@ -56,7 +50,6 @@
"Claimed Ed25519 fingerprint key": "Clave Ed25519 es necesaria",
"Clear Cache and Reload": "Borrar caché y recargar",
"Clear Cache": "Borrar caché",
- "Click here": "Haz clic aquí",
"Click here to fix": "Haz clic aquí para arreglar",
"Click to mute audio": "Haz clic para silenciar audio",
"Click to mute video": "Haz clic para silenciar video",
@@ -81,11 +74,9 @@
"/ddg is not a command": "/ddg no es un comando",
"Deactivate Account": "Desactivar Cuenta",
"Deactivate my account": "Desactivar mi cuenta",
- "decline": "rechazar",
"Decrypt %(text)s": "Descifrar %(text)s",
"Decryption error": "Error al decifrar",
"Delete": "Eliminar",
- "demote": "degradar",
"Deops user with given id": "Deops usuario con ID dado",
"Default": "Por defecto",
"Device ID": "ID del dispositivo",
@@ -142,7 +133,6 @@
"Failed to verify email address: make sure you clicked the link in the email": "Falló al verificar el correo electrónico: Asegúrese hacer clic en el enlace del correo",
"Failure to create room": "Fallo al crear la sala",
"Favourite": "Favorito",
- "favourite": "favorito",
"Favourites": "Favoritos",
"Fill screen": "Llenar pantalla",
"Filter room members": "Filtrar los miembros de la sala",
@@ -153,7 +143,6 @@
"Found a bug?": "¿Encontraste un error?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s a %(toPowerLevel)s",
"Guests cannot join this room even if explicitly invited.": "Invitados no pueden unirse a esta sala aun cuando han sido invitados explícitamente.",
- "had": "tuvo",
"Hangup": "Colgar",
"Hide read receipts": "Ocultar mensajes leídos",
"Hide Text Formatting Toolbar": "Ocultar barra de herramientas de formato de texto",
@@ -172,14 +161,11 @@
"Invite new room members": "Invitar nuevos miembros a la sala",
"Invites": "Invitar",
"Invites user with given id to current room": "Invitar a usuario con ID dado a esta sala",
- "is a": "es un",
"'%(alias)s' is not a valid format for an address": "'%(alias)s' no es un formato válido para una dirección",
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' no es un formato válido para un alias",
"%(displayName)s is typing": "%(displayName)s está escribiendo",
"Sign in with": "Quiero iniciar sesión con",
"Join Room": "Unirte a la sala",
- "joined and left": "unido y dejado",
- "joined": "unido",
"%(targetName)s joined the room.": "%(targetName)s se ha unido a la sala.",
"Joins room with given alias": "Unirse a la sala con el alias dado",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s ha expulsado a %(targetName)s.",
@@ -187,10 +173,7 @@
"Kicks user with given id": "Expulsar usuario con ID dado",
"Labs": "Laboratorios",
"Leave room": "Dejar sala",
- "left and rejoined": "dejado y reunido",
- "left": "dejado",
"%(targetName)s left the room.": "%(targetName)s ha dejado la sala.",
- "Level": "Nivel",
"Local addresses for this room:": "Direcciones locales para esta sala:",
"Logged in as:": "Sesión iniciada como:",
"Login as guest": "Iniciar sesión como invitado",
@@ -232,7 +215,6 @@
"Error: Problem communicating with the given homeserver.": "Error: No es posible comunicar con el servidor indicado.",
"Export": "Exportar",
"Failed to fetch avatar URL": "Fallo al obtener la URL del avatar",
- "Failed to register as guest:": "Fallo al registrarse como invitado:",
"Failed to upload profile picture!": "¡Fallo al enviar la foto de perfil!",
"Home": "Inicio",
"Import": "Importar",
@@ -330,7 +312,6 @@
"Session ID": "ID de sesión",
"%(senderName)s set a profile picture.": "%(senderName)s puso una foto de perfil.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s cambió su nombre a %(displayName)s.",
- "Set": "Configurar",
"Settings": "Configuración",
"Show panel": "Mostrar panel",
"Show Text Formatting Toolbar": "Mostrar la barra de formato de texto",
@@ -348,7 +329,6 @@
"Start Chat": "Comenzar la conversación",
"Submit": "Enviar",
"Success": "Éxito",
- "tag direct chat": "etiquetar la conversación directa",
"Tagged as: ": "Etiquetado como: ",
"The default role for new room members is": "El nivel por defecto para los nuevos miembros de esta sala es",
"The main address for this room is": "La dirección principal de esta sala es",
@@ -382,7 +362,6 @@
"%(serverName)s Matrix ID": "%(serverName)s ID de Matrix",
"Name": "Nombre",
"Never send encrypted messages to unverified devices from this device": "No enviar nunca mensajes cifrados, desde este dispositivo, a dispositivos sin verificar",
- "Never send encrypted messages to unverified devices in this room": "No enviar nunca mensajes cifrados a dispositivos no verificados, en esta sala",
"Never send encrypted messages to unverified devices in this room from this device": "No enviar nunca mensajes cifrados a dispositivos no verificados, en esta sala, desde este dispositivo",
"New address (e.g. #foo:%(localDomain)s)": "Nueva dirección (ej: #foo:%(localDomain)s)",
"New password": "Nueva contraseña",
@@ -425,7 +404,6 @@
"Revoke Moderator": "Eliminar Moderador",
"Refer a friend to Riot:": "Informar a un amigo sobre Riot:",
"Register": "Registrarse",
- "rejected": "rechazado",
"%(targetName)s rejected the invitation.": "%(targetName)s ha rechazado la invitación.",
"Reject invitation": "Rechazar invitación",
"Rejoin": "Volver a unirse",
@@ -438,7 +416,6 @@
"%(senderName)s requested a VoIP conference.": "%(senderName)s ha solicitado una conferencia Voz-IP.",
"Report it": "Informar",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Reiniciar la contraseña también reiniciará las claves de cifrado extremo-a-extremo, haciendo ilegible el historial de las conversaciones, salvo que exporte previamente las claves de sala, y las importe posteriormente. Esto será mejorado en futuras versiones.",
- "restore": "restaurar",
"Results from DuckDuckGo": "Resultados desde DuckDuckGo",
"Return to app": "Volver a la aplicación",
"Return to login screen": "Volver a la pantalla de inicio de sesión",
@@ -469,12 +446,9 @@
"This room": "Esta sala",
"This room is not accessible by remote Matrix servers": "Esta sala no es accesible por otros servidores Matrix",
"This room's internal ID is": "El ID interno de la sala es",
- "times": "veces",
- "to browse the directory": "navegar el directorio",
"to demote": "degradar",
"to favourite": "marcar como favorito",
"To link to a room it must have an address.": "Para enlazar una sala, debe tener una dirección.",
- "to make a room or": "hacer una sala o",
"To reset your password, enter the email address linked to your account": "Para reiniciar su contraseña, introduzca el e-mail asociado a su cuenta",
"to restore": "restaurar",
"Cancel": "Cancelar",
@@ -483,13 +457,6 @@
"Room directory": "Directorio de salas",
"Custom Server Options": "Opciones de Servidor Personalizado",
"unknown error code": "Código de error desconocido",
- "Sunday": "Domingo",
- "Monday": "Lunes",
- "Tuesday": "Martes",
- "Wednesday": "Miércoles",
- "Thursday": "Jueves",
- "Friday": "Viernes",
- "Saturday": "Sábado",
"Start verification": "Comenzar la verificación",
"Skip": "Saltar",
"To return to your account in future you need to set a password": "Para volver a usar su cuenta en el futuro es necesario que establezca una contraseña",
@@ -498,9 +465,7 @@
"Do you want to set an email address?": "¿Quieres poner una dirección de correo electrónico?",
"This will allow you to reset your password and receive notifications.": "Esto te permitirá reiniciar tu contraseña y recibir notificaciones.",
"Authentication check failed: incorrect password?": "La verificación de la autentificación ha fallado: ¿El password es el correcto?",
- "And %(count)s more...": "Y %(count)s más...",
"Press to start a chat with someone": "Pulsa para empezar a charlar con alguien",
- "to start a chat with someone": "para empezar a charlar con alguien",
"to tag direct chat": "para etiquetar como charla directa",
"Add a widget": "Añadir widget",
"Allow": "Permitir",
@@ -512,7 +477,6 @@
"Hide Apps": "Ocultar aplicaciones",
"Hide join/leave messages (invites/kicks/bans unaffected)": "Ocultar mensajes de entrada/salida (no afecta invitaciones/kicks/bans)",
"Hide avatar and display name changes": "Ocultar cambios de avatar y nombre visible",
- "Matrix Apps": "Aplicaciones Matrix",
"Once you've followed the link it contains, click below": "Cuando haya seguido el enlace que contiene, haga click debajo",
"Sets the room topic": "Configura el tema de la sala",
"Show Apps": "Mostrar aplicaciones",
@@ -616,7 +580,6 @@
"You have enabled URL previews by default.": "Ha habilitado vista previa de URL por defecto.",
"You have no visible notifications": "No tiene notificaciones visibles",
"You may wish to login with a different account, or add this email to this account.": "Puede ingresar con una cuenta diferente, o agregar este e-mail a esta cuenta.",
- "you must be a": "usted debe ser un",
"You must register to use this functionality": "Usted debe ser un registrar para usar esta funcionalidad",
"You need to be able to invite users to do that.": "Usted debe ser capaz de invitar usuarios para hacer eso.",
"You need to be logged in.": "Necesita estar autenticado.",
diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json
index fcad984ff5..486991d350 100644
--- a/src/i18n/strings/eu.json
+++ b/src/i18n/strings/eu.json
@@ -19,13 +19,6 @@
"Search": "Bilatu",
"Settings": "Ezarpenak",
"unknown error code": "errore kode ezezaguna",
- "Monday": "Astelehena",
- "Tuesday": "Asteartea",
- "Wednesday": "Asteazkena",
- "Thursday": "Osteguna",
- "Friday": "Ostirala",
- "Saturday": "Larunbata",
- "Sunday": "Igandea",
"Room directory": "Gelen direktorioa",
"Start chat": "Hasi txata",
"Custom Server Options": "Zerbitzari pertsonalizatuaren aukerak",
@@ -37,8 +30,6 @@
"Delete": "Ezabatu",
"Active call": "Dei aktiboa",
"Conference calls are not supported in encrypted rooms": "Konferentzia deiak ez daude onartuta zifratutako geletan",
- "or": "edo",
- "and": "eta",
"Sign out": "Amaitu saioa",
"Home": "Hasiera",
"Favourites": "Gogokoak",
@@ -98,7 +89,6 @@
"This email address is already in use": "E-mail helbide hau erabilita dago",
"This phone number is already in use": "Telefono zenbaki hau erabilita dago",
"Topic": "Gaia",
- "favourite": "gogokoa",
"none": "bat ere ez",
"Who can read history?": "Nork irakurri dezake historiala?",
"Who can access this room?": "Nor sartu daiteke gelara?",
@@ -162,7 +152,6 @@
"Add a topic": "Gehitu gai bat",
"Admin": "Kudeatzailea",
"Admin Tools": "Kudeaketa tresnak",
- "And %(count)s more...": "Eta %(count)s gehiago...",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Media baimenak falta dira, egin klik eskatzeko.",
"No Microphones detected": "Ez da mikrofonorik atzeman",
@@ -174,10 +163,8 @@
"Camera": "Kamera",
"Hide removed messages": "Ezkutatu kendutako mezuak",
"Alias (optional)": "Ezizena (aukerazkoa)",
- "and one other...": "eta beste bat...",
"%(names)s and %(lastPerson)s are typing": "%(names)s eta %(lastPerson)s idazten ari dira",
"%(names)s and one other are typing": "%(names)s eta beste inor idazten ari dira",
- "%(names)s and %(count)s others are typing": "%(names)s eta beste %(count)s idazten ari dira",
"An email has been sent to": "E-mail bat bidali da hona:",
"An error has occurred.": "Errore bat gertatu da.",
"Are you sure?": "Ziur zaude?",
@@ -219,7 +206,6 @@
"Deactivate my account": "Desaktibatu nire kontua",
"Decline": "Ukatu",
"Decrypt %(text)s": "Deszifratu %(text)s",
- "demote": "Jaitsi maila",
"Default": "Lehenetsia",
"Device already verified!": "Gailua egiaztatuta dago!",
"Device ID:": "Gailuaren IDa:",
@@ -233,7 +219,6 @@
"Drop File Here": "Jaregin fitxategia hona",
"%(items)s and one other": "%(items)s eta beste bat",
"%(items)s and %(lastItem)s": "%(items)s eta %(lastItem)s",
- "and %(overflowCount)s others...": "eta beste %(overflowCount)s...",
"%(senderName)s answered the call.": "%(senderName)s erabiltzaileak deia erantzun du.",
"Can't load user settings": "Ezin izan dira erabiltzailearen ezarpenak kargatu",
"%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s erabiltzaileak gelaren izena kendu du.",
@@ -271,7 +256,6 @@
"Failed to load timeline position": "Huts egin du denbora-lerroko puntua kargatzean",
"Failed to lookup current room": "Huts egin du uneko gela bilatzean",
"Failed to mute user": "Huts egin du erabiltzailea mututzean",
- "Failed to register as guest:": "Huts egin du bisitari gisa erregistratzean:",
"Failed to reject invite": "Huts egin du gonbidapena baztertzean",
"Failed to reject invitation": "Huts egin du gonbidapena baztertzean",
"Failed to save settings": "Huts egin du ezarpenak gordetzean",
@@ -318,15 +302,11 @@
"%(displayName)s is typing": "%(displayName)s idazten ari da",
"Sign in with": "Hasi saioa honekin:",
"Join as voice or video.": "Elkartu ahotsa edo bideoa erabiliz.",
- "joined and left": "elkartu eta atera da",
- "joined": "elkartuta",
"%(targetName)s joined the room.": "%(targetName)s erabiltzailea gelara elkartu da.",
"Joins room with given alias": "Gelara emandako ezizenarekin elkartu da",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s erabiltzaileak %(targetName)s kanporatu du.",
"Kick": "Kanporatu",
"Kicks user with given id": "Kanporatu emandako ID-a duen erabiltzailea",
- "left and rejoined": "atera eta berriro elkartu da",
- "left": "atera da",
"%(targetName)s left the room.": "%(targetName)s erabiltzailea gelatik atera da.",
"Level:": "Maila:",
"Local addresses for this room:": "Gela honen tokiko helbideak:",
@@ -346,7 +326,6 @@
"Missing room_id in request": "Gelaren ID-a falta da eskaeran",
"Missing user_id in request": "Erabiltzailearen ID-a falta da eskaeran",
"Mobile phone number": "Mugikorraren telefono zenbakia",
- "Never send encrypted messages to unverified devices in this room": "Ez bidali inoiz zifratutako mezuak egiaztatu gabeko gailuetara gela honetan",
"Never send encrypted messages to unverified devices in this room from this device": "Ez bidali inoiz zifratutako mezuak egiaztatu gabeko gailuetara gela honetan gailu honetatik",
"New address (e.g. #foo:%(localDomain)s)": "Helbide berria (adib. #foo:%(localDomain)s)",
"New passwords don't match": "Pasahitz berriak ez datoz bat",
@@ -381,7 +360,6 @@
"Reason: %(reasonText)s": "Arrazoia: %(reasonText)s",
"Revoke Moderator": "Kendu moderatzaile baimena",
"Refer a friend to Riot:": "Aipatu Riot lagun bati:",
- "rejected": "baztertua",
"%(targetName)s rejected the invitation.": "%(targetName)s erabiltzaileak gonbidapena baztertu du.",
"Reject invitation": "Baztertu gonbidapena",
"%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)s erabiltzailek bere gonbidapenak baztertu dituzte %(repeats)s aldiz",
@@ -399,7 +377,6 @@
"Report it": "Eman berri",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Oraingoz pasahitza aldatzeak gailu guztietako muturretik muturrerako zifratze-gakoak berrezarriko ditu, eta ezin izango dituzu zifratutako txatetako historialak irakurri ez badituzu aurretik zure gelako gakoak esportatzen eta aldaketa eta gero berriro inportatzen.",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Une honetan egiaztatu gabeko gailuak blokeatzen ari zara, gailu hauetara mezuak bidali ahal izateko egiaztatu behar dituzu.",
- "restore": "berreskuratu",
"Results from DuckDuckGo": "DuckDuckGo bilatzaileko emaitzak",
"Return to app": "Itzuli aplikaziora",
"Riot does not have permission to send you notifications - please check your browser settings": "Riotek ez du zuri jakinarazpenak bidaltzeko baimenik, egiaztatu nabigatzailearen ezarpenak",
@@ -430,7 +407,6 @@
"Server unavailable, overloaded, or something else went wrong.": "Zerbitzaria eskuraezin edo gainezka egon daiteke edo zerbaitek huts egin du.",
"%(senderName)s set a profile picture.": "%(senderName)s erabiltzaileak profileko argazkia ezarri du.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s erabiltzaileak %(displayName)s ezarri du pantaila izen gisa.",
- "Set": "Ezarri",
"Show panel": "Erakutsi panela",
"Show Text Formatting Toolbar": "Erakutsi testu-formatuaren tresna-barra",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Erakutsi denbora-zigiluak 12 ordutako formatuan (adib. 2:30pm)",
@@ -441,7 +417,6 @@
"since they were invited": "gonbidatu zaienetik",
"Some of your messages have not been sent.": "Zure mezu batzuk ez dira bidali.",
"Sorry, this homeserver is using a login which is not recognised ": "Hasiera zerbitzari honek ezagutzen ez den saio bat erabiltzen du ",
- "tag direct chat": "jarri etiketa txat zuzenari",
"Tagged as: ": "Jarritako etiketa: ",
"The default role for new room members is": "Gelako kide berrien lehenetsitako rola:",
"The main address for this room is": "Gela honen helbide nagusia:",
@@ -462,15 +437,11 @@
"This room": "Gela hau",
"This room is not accessible by remote Matrix servers": "Gela hau ez dago eskuragarri urruneko zerbitzarietan",
"This room's internal ID is": "Gela honen barne ID-a:",
- "times": "aldi",
- "to browse the directory": "direktorioa arakatzea",
"to demote": "mailaz jaistea",
"to favourite": "gogoko egitea",
"To link to a room it must have an address.": "Gelara estekatzeko honek helbide bat izan behar du.",
- "to make a room or": "gela bat egitea edo",
"To reset your password, enter the email address linked to your account": "Zure pasahitza berrezartzeko, sartu zure kontuarekin lotutako e-mail helbidea",
"to restore": "berreskuratzea",
- "to start a chat with someone": "norbaitekin txat bat hastea",
"to tag direct chat": "txat zuzena etiketatzea",
"To use it, just wait for autocomplete results to load and tab through them.": "Erabiltzeko, itxaron osatze automatikoaren emaitzak kargatu arte eta gero tabuladorearekin hautatu.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Gela honen denbora-lerroko puntu zehatz bat kargatzen saiatu zara, baina ez duzu mezu zehatz hori ikusteko baimenik.",
@@ -491,7 +462,6 @@
"unencrypted": "zifratu gabe",
"Unencrypted message": "Zifratu gabeko mezua",
"unknown caller": "deitzaile ezezaguna",
- "Unknown command": "Agindu ezezaguna",
"Unknown room %(roomId)s": "%(roomId)s gela ezezaguna da",
"Unknown (user, device) pair:": "Erabiltzaile eta gailu bikote ezezaguna:",
"Unmute": "Audioa aktibatu",
@@ -549,7 +519,6 @@
"You have enabled URL previews by default.": "Lehenetsita URLak aurreikustea gaitu duzu.",
"You have no visible notifications": "Ez daukazu jakinarazpen ikusgairik",
"You may wish to login with a different account, or add this email to this account.": "Agian beste kontu batekin hasi nahi duzu saioa, edo e-mail hau kontu honetara gehitu.",
- "you must be a": "hau izan behar duzu:",
"You must register to use this functionality": "Funtzionaltasun hau erabiltzeko erregistratu",
"You need to be able to invite users to do that.": "Erabiltzaileak gonbidatzeko baimena behar duzu hori egiteko.",
"You need to be logged in.": "Saioa hasi duzu.",
@@ -736,7 +705,7 @@
"Start chatting": "Hasi txateatzen",
"Start Chatting": "Hasi txateatzen",
"Click on the button below to start chatting!": "Egin klik beheko botoian txateatzen hasteko!",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName erabiltzaileak gelaren abatarra aldatu du beste honetara:
",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s erabiltzaileak gelaren abatarra aldatu du beste honetara:
",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s erabiltzaileak gelaren abatarra ezabatu du.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s erabiltzaileak %(roomName)s gelaren abatarra aldatu du",
"Username available": "Erabiltzaile-izena eskuragarri dago",
@@ -759,7 +728,6 @@
"Your unverified device '%(displayName)s' is requesting encryption keys.": "Zure egiaztatu gabeko '%(displayName)s' gailua zifratze-gakoak eskatzen ari da.",
"Encryption key request": "Zifratze-gakoa eskatuta",
"Deops user with given id": "Emandako ID-a duen erabiltzailea mailaz jaisten du",
- "had": "zuen",
"Disable Peer-to-Peer for 1:1 calls": "Desgaitu P2P biren arteko deietan",
"Add a widget": "Gehitu trepeta bat",
"Allow": "Baimendu",
@@ -777,7 +745,6 @@
"Hide avatar and display name changes": "Ezkutatu abatarra eta pantaila-izen aldaketak",
"Integrations Error": "Integrazio errorea",
"Publish this room to the public in %(domain)s's room directory?": "Argitaratu gela hau publikora %(domain)s domeinuko gelen direktorioan?",
- "Matrix Apps": "Matrix Aplikazioak",
"AM": "AM",
"PM": "PM",
"NOTE: Apps are not end-to-end encrypted": "OHARRA: Aplikazioek ez dute muturretik muturrerako zifratzea",
@@ -791,39 +758,43 @@
"You are not in this room.": "Ez zaude gela honetan.",
"You do not have permission to do that in this room.": "Ez duzu gela honetan hori egiteko baimenik.",
"Autocomplete Delay (ms):": "Osatze automatikoaren atzerapena (ms):",
- "This Home server does not support groups": "Hasiera zerbitzari honek ez ditu taldeak onartzen",
"Loading device info...": "Gailuaren informazioa kargatzen...",
- "Groups": "Taldeak",
- "Create a new group": "Sortu talde berria",
- "Create Group": "Sortu taldea",
- "Group Name": "Taldearen izena",
"Example": "Adibidea",
"Create": "Sortu",
- "Group ID": "Taldearen IDa",
- "+example:%(domain)s": "+adibidea:%(domain)s",
"Room creation failed": "Taldea sortzeak huts egin du",
- "You are a member of these groups:": "Talde hauetako kidea zara:",
- "Join an existing group": "Elkartu badagoen talde batetara",
"Featured Rooms:": "Nabarmendutako gelak:",
"Featured Users:": "Nabarmendutako erabiltzaileak:",
- "Edit Group": "Editatu taldea",
- "Failed to update group": "Taldea eguneratzeak huts egin du",
- "Group IDs must be of the form +localpart:%(domain)s": "Taldeen IDek forma hau dute +partelokala:%(domain)s",
- "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Une honetan zure hasiera zerbitzarian besterik ezin dituzu sortu taldeak: erabili %(domain)s bukaera duen talde ID bat",
- "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Sortu talde bat zure komunitatea adierazteko! Zehaztu talde multzo bat eta zure hasiera horri pertsonalizatua zure espazioa markatzeko Matrix unibertsoan.",
- "Error whilst fetching joined groups": "Errorea elkartutako taldeak eskuratzean",
"Automatically replace plain text Emoji": "Automatikoki ordezkatu Emoji testu soila",
"Failed to upload image": "Irudia igotzeak huts egin du",
"Hide avatars in user and room mentions": "Ezkutatu abatarrak erabiltzaile eta gelen aipamenetan",
"%(widgetName)s widget added by %(senderName)s": "%(widgetName)s trepeta gehitu du %(senderName)s erabiltzaileak",
"%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s trepeta kendu du %(senderName)s erabiltzaileak",
"Verifies a user, device, and pubkey tuple": "Erabiltzaile, gailu eta gako publiko multzoa egiaztatzen du",
- "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Dagoen talde batetara elkartzeko taldearen identifikatzailea ezagutu behar duzu, honen antza du: +adibidea:matrix.org.",
"Robot check is currently unavailable on desktop - please use a web browser": "Robot egiaztaketa orain ez dago eskuragarri mahaigainean - erabili web nabigatzailea",
"%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s trepeta aldatu du %(senderName)s erabiltzaileak",
- "%(weekDayName)s, %(monthName)s %(day)s": "%(weekDayName)s, %(monthName)sk %(day)s",
- "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(fullYear)sko %(monthName)sk %(day)s",
"Copied!": "Kopiatuta!",
"Failed to copy": "Kopiak huts egin du",
- "Cancel": "Utzi"
+ "Cancel": "Utzi",
+ "Advanced options": "Aukera aurreratuak",
+ "Block users on other matrix homeservers from joining this room": "Eragotzi beste matrix hasiera-zerbitzarietako erabiltzaileak gela honetara elkartzea",
+ "This setting cannot be changed later!": "Ezarpen hau ezin da gero aldatu!",
+ "Ignored Users": "Ezikusitako erabiltzaileak",
+ "Ignore": "Ezikusi",
+ "Unignore": "Ez ezikusi",
+ "User Options": "Erabiltzaile-aukerak",
+ "You are now ignoring %(userId)s": "%(userId)s ezikusten ari zara",
+ "You are no longer ignoring %(userId)s": "Ez zaude jada %(userId)s ezikusten",
+ "Unignored user": "Ez ezikusitako erabiltzailea",
+ "Ignored user": "Ezikusitako erabiltzailea",
+ "Stops ignoring a user, showing their messages going forward": "Utzi erabiltzailea ezikusteari, erakutsi bere mezuak",
+ "Ignores a user, hiding their messages from you": "Ezikusi erabiltzailea, ezkutatu bere mezuak zuretzat",
+ "Disable Emoji suggestions while typing": "Desgaitu Emoji proposamenak idaztean",
+ "Banned by %(displayName)s": "%(displayName)s erabiltzaileak debekatuta",
+ "Message removed by %(userId)s": "%(userId)s erabiltzaileak kendu du mezua",
+ "To send messages, you must be a": "Mezuak bidaltzeko hau izan behar zara:",
+ "To invite users into the room, you must be a": "Erabiltzaileak gonbidatzeko hau izan behar zara:",
+ "To configure the room, you must be a": "Gela konfiguratzeko hau izan behar zara:",
+ "To kick users, you must be a": "Erabiltzaileak kanporatzeko hau izan behar zara:",
+ "To ban users, you must be a": "Erabiltzaileak debekatzeko hau izan behar zara:",
+ "To remove other users' messages, you must be a": "Beste erabiltzaileen mezuak kentzeko hau izan behar zara:"
}
diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json
index 7ffbf39e8e..aeca03c48d 100644
--- a/src/i18n/strings/fi.json
+++ b/src/i18n/strings/fi.json
@@ -20,13 +20,6 @@
"Settings": "Asetukset",
"Start chat": "Aloita keskustelu",
"unknown error code": "tuntematon virhekoodi",
- "Sunday": "Sunnuntai",
- "Monday": "Maanantai",
- "Tuesday": "Tiistai",
- "Wednesday": "Keskiviikko",
- "Thursday": "Torstai",
- "Friday": "Perjantai",
- "Saturday": "Lauantai",
"Failed to change password. Is your password correct?": "Salasanan muuttaminen epäonnistui. Onko salasanasi oikein?",
"Continue": "Jatka",
"powered by Matrix": "Matrix-pohjainen",
@@ -36,9 +29,7 @@
"Add email address": "Lisää sähköpostiosoite",
"Add phone number": "Lisää puhelinnumero",
"Admin": "Ylläpitäjä",
- "Admin tools": "Ylläpitotyökalut",
"Allow": "Salli",
- "And %(count)s more...": "Ja %(count)s lisää...",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Mediaoikeudet puuttuvat. Klikkaa tästä pyytääksesi oikeudet.",
"No Microphones detected": "Mikrofonia ei löytynyt",
@@ -54,15 +45,11 @@
"Always show message timestamps": "Näytä aina viestien aikaleimat",
"Authentication": "Autentikointi",
"Alias (optional)": "Alias (valinnainen)",
- "and": "ja",
"%(items)s and %(remaining)s others": "%(items)s ja %(remaining)s lisää",
"%(items)s and one other": "%(items)s ja yksi lisää",
"%(items)s and %(lastItem)s": "%(items)s ja %(lastItem)s",
- "and %(count)s others....other": "ja %(count)s lisää...",
- "and %(count)s others....one": "ja yksi lisää...",
"%(names)s and %(lastPerson)s are typing": "%(names)s ja %(lastPerson)s kirjoittavat",
"%(names)s and one other are typing": "%(names)s ja yksi muu kirjoittavat",
- "%(names)s and %(count)s others are typing": "%(names)s ja %(count)s muuta kirjoittavat",
"An email has been sent to": "Sähköposti on lähetetty osoitteeseen",
"A new password must be entered.": "Sinun täytyy syöttää uusi salasana.",
"%(senderName)s answered the call.": "%(senderName)s vastasi puheluun.",
@@ -105,8 +92,8 @@
"Click to unmute audio": "Paina poistaaksesi äänimykistyksen",
"Command error": "Komentovirhe",
"Commands": "Komennot",
- "Conference call failed.": "Konferenssipuhelu epäonnistui",
- "Conference calling is in development and may not be reliable.": "Konferenssipuhelut ovat vielä kehityksen alla ja saattavat toimia epäluotettavasti",
+ "Conference call failed.": "Konferenssipuhelu epäonnistui.",
+ "Conference calling is in development and may not be reliable.": "Konferenssipuhelut ovat vielä kehityksen alla ja saattavat toimia epäluotettavasti.",
"Conference calls are not supported in encrypted rooms": "Konferenssipuhelut eivät ole mahdollisia salatuissa huoneissa",
"Conference calls are not supported in this client": "Tämä asiakasohjelma ei tue konferenssipuheluja",
"Confirm password": "Varmista salasana",
@@ -125,12 +112,11 @@
"Decline": "Hylkää",
"Decryption error": "Virhe salauksen purkamisessa",
"Delete": "Poista",
- "demote": "alenna",
"Default": "Oletusarvo",
"Device already verified!": "Laite on jo varmennettu!",
"Device ID": "Laitetunniste",
"Device ID:": "Laitetunniste:",
- "device id: ": "laitetunniste:",
+ "device id: ": "laitetunniste: ",
"Device key:": "Laiteavain:",
"Devices": "Laitteet",
"Direct chats": "Suorat viestittelyt",
@@ -161,7 +147,7 @@
"Error decrypting attachment": "Liitteen salauksen purku epäonnistui",
"Event information": "Tapahtumatiedot",
"Export": "Vie",
- "Export E2E room keys": "Vie huoneen päästä päähän-salauksen (E2E) avaimet ",
+ "Export E2E room keys": "Vie huoneen päästä päähän-salauksen (E2E) avaimet",
"Failed to ban user": "Porttikiellon antaminen epäonnistui",
"Failed to delete device": "Laitten poistamine epäonnistui",
"Failed to fetch avatar URL": "Avatar URL:n haku epäonnistui",
@@ -170,21 +156,19 @@
"Failed to leave room": "Huoneesta poistuminen epäonnistui",
"Failed to load timeline position": "Aikajanapaikan lataaminen epäonnistui",
"Failed to mute user": "Käyttäjän mykistäminen epäonnistui",
- "Failed to register as guest:": "Vieraana rekisteröityminen epäonnistui",
"Failed to reject invite": "Kutsun hylkääminen epäonnistui",
"Failed to reject invitation": "Kutsun hylkääminen epäonnistui",
"Failed to save settings": "Asetusten tallentaminen epäonnistui",
"Failed to send email": "Sähköpostin lähettäminen epäonnistui",
- "Failed to send request.": "Pyynnön lähettäminen epäonnistui",
+ "Failed to send request.": "Pyynnön lähettäminen epäonnistui.",
"Failed to set display name": "Näyttönimen asettaminen epäonnistui",
"Failed to set up conference call": "Konferenssipuhelun alustus epäonnistui",
"Failed to toggle moderator status": "Moderaattoriasetuksen muuttaminen epäonnistui",
"Failed to unban": "Porttikiellon poistaminen epäonnistui",
"Failed to upload file": "Tiedoston lataaminen epäonnistui",
"Failed to upload profile picture!": "Profiilikuvan lataaminen epäonnistui",
- "Failed to verify email address: make sure you clicked the link in the email": "Varmenna sähköpostiosoitteesi: varmista että klikkasit sähköpostissa olevaa linkkiä",
+ "Failed to verify email address: make sure you clicked the link in the email": "Sähköpostin varmennus epäonnistui: varmista että seurasit sähköpostissa olevaa linkkiä",
"Failure to create room": "Huoneen luominen epäonnistui",
- "favourite": "suosikki",
"Favourites": "Suosikit",
"Fill screen": "Täytä näyttö",
"Filter room members": "Suodata huoneen jäsenet",
@@ -193,7 +177,6 @@
"For security, this session has been signed out. Please sign in again.": "Turvallisuussyistä tämä istunto on vanhentunut. Ole hyvä ja kirjaudu uudestaan.",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Turvallusuussyistä uloskirjautuminen poistaa kaikki päästä päähän-salausavaimet tästä selaimesta. Jos haluat purkaa keskustelujen salaukset tulevaisuudessa pitää sinun viedä purkuavaimet ja pitää ne turvallisesti tallessa.",
"Found a bug?": "Löysitkö virheen?",
- "had": "oli",
"Hide Apps": "Piilota sovellukset",
"Hide read receipts": "Piilota lukukuittaukset",
"Hide Text Formatting Toolbar": "Piilota tekstinmuotoilutyökalupalkki",
@@ -205,7 +188,7 @@
"Incoming call from %(name)s": "Saapuva puhelu käyttäjältä %(name)s",
"Incoming video call from %(name)s": "Saapuva videopuhelu käyttäjältä %(name)s",
"Incoming voice call from %(name)s": "Saapuva äänipuhelu käyttäjältä %(name)s",
- "Incorrect username and/or password.": "Virheellinen käyttäjänimi ja/tai salasana",
+ "Incorrect username and/or password.": "Virheellinen käyttäjänimi ja/tai salasana.",
"Incorrect verification code": "Virheellinen varmennuskoodi",
"Integrations Error": "Integraatiovirhe",
"Interface Language": "Käyttöliittymän kieli",
@@ -218,17 +201,13 @@
"Invites user with given id to current room": "Kutsuu annetun käyttäjätunnisteen mukaisen käyttäjän huoneeseen",
"Sign in with": "Kirjaudu käyttäen",
"Join Room": "Liity huoneeseen",
- "joined and left": "liittyi ja poistui",
- "joined": "liittyi",
"Joins room with given alias": "Liittyy huoneeseen jolla on annettu alias",
- "Jump to first unread message.": "Hyppää ensimmäiseen lukemattomaan viestiin",
+ "Jump to first unread message.": "Hyppää ensimmäiseen lukemattomaan viestiin.",
"Kick": "Poista huoneesta",
"Kicks user with given id": "Poistaa käyttäjätunnisteen mukaisen käyttäjän huoneesta",
"Labs": "Laboratorio",
"Last seen": "Viimeksi nähty",
"Leave room": "Poistu huoneesta",
- "left and rejoined": "poistui ja liittyi jälleen",
- "left": "poistui",
"Level:": "Taso:",
"Local addresses for this room:": "Tämän huoneen paikalliset osoitteet:",
"Logged in as:": "Kirjautunut käyttäjänä:",
@@ -239,7 +218,6 @@
"Markdown is disabled": "Markdown on pois päältä",
"Markdown is enabled": "Mardown on päällä",
"matrix-react-sdk version:": "Matrix-react-sdk versio:",
- "Matrix Apps": "Matrix ohjelmat",
"Members only": "Vain jäsenet",
"Message not sent due to unknown devices being present": "Viestiä ei lähetetty koska paikalla on tuntemattomia laitteita",
"Mobile phone number": "Matkapuhelinnumero",
@@ -249,7 +227,7 @@
"Name": "Nimi",
"New password": "Uusi salasana",
"New passwords don't match": "Uudet salasanat eivät täsmää",
- "New passwords must match each other.": "Uusien salasanojen on vastattava toisiaan",
+ "New passwords must match each other.": "Uusien salasanojen on vastattava toisiaan.",
"not set": "ei asetettu",
"not specified": "ei määritetty",
"(not supported by this browser)": "(ei tuettu tässä selaimessa)",
@@ -278,7 +256,6 @@
"Reason": "Syy",
"Reason: %(reasonText)s": "Syy: %(reasonText)s",
"Register": "Rekisteröi",
- "rejected": "hylätty",
"Reject invitation": "Hylkää kutsu",
"Rejoin": "Liity uudestaan",
"Remove Contact Information?": "Poista yhteystiedot?",
@@ -303,14 +280,13 @@
"sent a video": "lähetti videon",
"Server error": "Palvelinvirhe",
"Session ID": "Istuntotunniste",
- "Set": "Aseta",
"Sets the room topic": "Asettaa huoneen aiheen",
"Show panel": "Näytä paneeli",
"Sign in": "Kirjaudu sisään",
"Sign out": "Kirjaudu ulos",
"since they joined": "liittymisestä lähtien",
"since they were invited": "kutsusta lähtien",
- "Some of your messages have not been sent.": "Jotkut viesteistäsi ei ole lähetetty",
+ "Some of your messages have not been sent.": "Jotkut viesteistäsi ei ole lähetetty.",
"Someone": "Joku",
"Start a chat": "Aloita keskustelu",
"Start Chat": "Aloita keskustelu",
@@ -330,12 +306,388 @@
"unknown caller": "tuntematon soittaja",
"unknown device": "tuntematon laite",
"Unknown room %(roomId)s": "Tuntematon huone %(roomId)s",
- "Unknown (user, device) pair:": "Tuntematon (käyttäjä,laite) -pari.",
+ "Unknown (user, device) pair:": "Tuntematon (käyttäjä, laite) -pari:",
"Unmute": "Poista mykistys",
"Unnamed Room": "Nimeämätön huone",
"Unrecognised command:": "Tuntematon komento:",
"Unrecognised room alias:": "Tuntematon huonealias:",
"Unverified": "Varmentamaton",
"Uploading %(filename)s and %(count)s others|zero": "Ladataan %(filename)s",
- "Uploading %(filename)s and %(count)s others|one": "Ladataan %(filename)s ja %(count)s muuta"
+ "Uploading %(filename)s and %(count)s others|one": "Ladataan %(filename)s ja %(count)s muuta",
+ "Blacklisted": "Estetyt",
+ "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s muuti huoneen nimeksi %(roomName)s.",
+ "Drop here to tag %(section)s": "Pudota tähän tägätäksesi %(section)s",
+ "Enable automatic language detection for syntax highlighting": "Ota automaattinen kielentunnistus käyttöön koodin väritystä varten",
+ "Encrypted messages will not be visible on clients that do not yet implement encryption": "Salatut viestit eivät näy ohjelmissa joissa salaus ei ole vielä implementoitu",
+ "%(senderName)s ended the call.": "%(senderName)s lopetti puhelun.",
+ "Guest access is disabled on this Home Server.": "Vierailijat on estetty tällä kotipalvelimella.",
+ "Guests cannot join this room even if explicitly invited.": "Vierailijat eivät voi liittyä tähän huoneeseen vaikka heidät on eksplisiittisesti kutsuttu.",
+ "Hangup": "Lopeta",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Piilota liittymis-/poistumisviestit (ei koske kutsuja/poistamisia/porttikieltoja)",
+ "Historical": "Vanhat",
+ "Home": "Etusivu",
+ "Invalid file%(extra)s": "Virheellinen tiedosto%(extra)s",
+ "%(senderName)s invited %(targetName)s.": "%(senderName)s kutsui käyttäjän %(targetName)s.",
+ "%(displayName)s is typing": "%(displayName)s kirjoittaa",
+ "none": "Ei mikään",
+ "No devices with registered encryption keys": "Ei laitteita joilla rekisteröityjä salausavaimia",
+ "No users have specific privileges in this room": "Kellään käyttäjällä ei ole erityisiä oikeuksia",
+ "%(senderName)s placed a %(callType)s call.": "%(senderName)s soitti %(callType)spuhelun.",
+ "Remove %(threePid)s?": "Poista %(threePid)s?",
+ "%(senderName)s requested a VoIP conference.": "%(senderName)s pyysi VoIP konferenssia.",
+ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s asetti näyttönimekseen %(displayName)s.",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Tiedosto ‘%(fileName)s’ ylittää tämän kotipalvelimen maksimitiedostokoon",
+ "The file '%(fileName)s' failed to upload": "Tiedoston ‘%(fileName)s’ lataaminen epäonnistui",
+ "This Home Server does not support login using email address.": "Kotipalvelin ei tue kirjatumista sähköpostiosoitteen avulla.",
+ "This invitation was sent to an email address which is not associated with this account:": "Kutsu lähetettiin sähköpostiosoitteeseen jota ei ole liitetty tähän tiliin:",
+ "This room is not recognised.": "Huonetta ei tunnistettu.",
+ "These are experimental features that may break in unexpected ways": "Nämä ovat kokeellisia ominaisuuksia jotka saattavat toimia ennakoimattomilla tavoilla",
+ "This doesn't appear to be a valid email address": "Olemassa olevan historian näkyvyys ei muutu",
+ "This is a preview of this room. Room interactions have been disabled": "Tämä on huoneen ennakokatselu. Vuorovaikutus ei ole mahdollista",
+ "This phone number is already in use": "Puhelinnumero on jo käytössä",
+ "To link to a room it must have an address.": "Linkittääksesi tähän huoneseen sillä on oltava osoite.",
+ "Turn Markdown off": "Ota Markdown pois käytöstä",
+ "Turn Markdown on": "Ota Markdown käyttöön",
+ "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s otti päästä päähän-salauksen käyttöön (algoritmi %(algorithm)s).",
+ "Username invalid: %(errMessage)s": "Virheellinen käyttäjänimi: %(errMessage)s",
+ "Users": "Käyttäjät",
+ "User": "Käyttäjä",
+ "Verification": "Varmennus",
+ "verified": "varmennettu",
+ "Verified": "Varmennettu",
+ "Verified key": "Varmennusavain",
+ "Video call": "Videopuhelu",
+ "Voice call": "Äänipuhelu",
+ "VoIP conference finished.": "VoIP konferenssi loppui.",
+ "VoIP conference started.": "VoIP konferenssi alkoi.",
+ "VoIP is unsupported": "VoIP ei ole tuettu",
+ "(no answer)": "(ei vastausta)",
+ "(unknown failure: %(reason)s)": "(tuntematon virhe: %(reason)s)",
+ "(warning: cannot be disabled again!)": "(varoitus: ei voida ottaa pois käytöstä enää!)",
+ "Warning!": "Varoitus!",
+ "Who can access this room?": "Keillä on pääsy tähän huoneeseen?",
+ "Who can read history?": "Kuka pystyy lukemaan historian?",
+ "Who would you like to add to this room?": "Kenet sinä haluaisit lisätä tähän huoneeseen?",
+ "Who would you like to communicate with?": "Kenen kanssa haluaisit kommunikoida?",
+ "Would you like to accept or decline this invitation?": "Haluatko hyväksyä vai hylätä kutsun?",
+ "You already have existing direct chats with this user:": "Sinulla on jo keskusteluja käynnissä tämän käyttäjän kanssa:",
+ "You are already in a call.": "Sinulla on jo puhelu käynnissä.",
+ "You are not in this room.": "Sinä et ole tässä huoneessa.",
+ "You do not have permission to do that in this room.": "Sinulla ei ole oikeutta tehdä tuota tässä huoneessa.",
+ "You are trying to access %(roomName)s.": "Yrität liittyä huoneeseen %(roomName)s.",
+ "You cannot place a call with yourself.": "Et voi soittaa itsellesi.",
+ "You cannot place VoIP calls in this browser.": "Et voi soittaa VoIP puheluita tällä selaimella.",
+ "You do not have permission to post to this room": "Sinulla ei ole oikeutta kirjoittaa tässä huoneessa",
+ "You have been banned from %(roomName)s by %(userName)s.": "Käyttäjä %(userName)s on antanut sinulle porttikiellon huoneeseen %(roomName)s.",
+ "You have been invited to join this room by %(inviterName)s": "Käyttäjä %(inviterName)s on kutsunut sinut tähän huoneeseen",
+ "You have been kicked from %(roomName)s by %(userName)s.": "Käyttäjä %(userName)s on poistanut sinut huoneesta %(roomName)s.",
+ "You have disabled URL previews by default.": "Olet oletusarvoisesti ottanut URL esikatselut pois käytöstä.",
+ "You have enabled URL previews by default.": "Olet oletusarvoisesti ottanut URL esikatselut käyttöön.",
+ "You have no visible notifications": "Sinulla ei ole näkyviä ilmoituksia",
+ "You must register to use this functionality": "Sinun pitää rekisteröityä käyttääksesi tätä toiminnallisuutta",
+ "You need to be able to invite users to do that.": "Sinun pitää pystyä kutsua käyttäjiä voidaksesi tehdä tuon.",
+ "You need to be logged in.": "Sinun pitää olla kirjautunut.",
+ "You need to enter a user name.": "Sinun pitää syöttää käyttäjänimi.",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Sinun sähköpostiosoitteesi ei vaikuta olevan liitetty mihinkään Matrixtunnisteeseen tällä kotipalvelimella.",
+ "Your password has been reset": "Salasanasi on palautettu",
+ "You should not yet trust it to secure data": "Sinun ei vielä kannata luottaa siihen turvataksesi dataa",
+ "Your home server does not support device management.": "Kotipalvelimesi ei tue laitteiden hallintaa.",
+ "Sun": "Su",
+ "Mon": "Ma",
+ "Tue": "Ti",
+ "Wed": "Ke",
+ "Thu": "To",
+ "Fri": "Pe",
+ "Sat": "La",
+ "Set a display name:": "Aseta näyttönimi:",
+ "This server does not support authentication with a phone number.": "Tämä palvelin ei tue autentikointia puhelinnumeron avulla.",
+ "Missing password.": "Salasana puuttuu.",
+ "Passwords don't match.": "Salasanat eivät täsmää.",
+ "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Salasana on liian lyhyt (minimi %(MIN_PASSWORD_LENGTH)s).",
+ "This doesn't look like a valid email address.": "Tämä ei näytä oikealta sähköpostiosoitteelta.",
+ "This doesn't look like a valid phone number.": "Tämä ei näytä oikealta puhelinnumerolta.",
+ "An unknown error occurred.": "Tuntematon virhe.",
+ "I already have an account": "Minulla on jo tili",
+ "An error occurred: %(error_string)s": "Virhe: %(error_string)s",
+ "Topic": "Aihe",
+ "Make this room private": "Tee tästä huoneesta yksityinen",
+ "Share message history with new users": "Jaa viestihistoria uusille käyttäjille",
+ "Encrypt room": "Salaa huone",
+ "There are no visible files in this room": "Tässä huoneessa ei tiedostoja näkyvissä",
+ "Room": "Huone",
+ "Copied!": "Kopioitu!",
+ "Failed to copy": "Kopiointi epäonnistui",
+ "Connectivity to the server has been lost.": "Yhteys palvelimeen menetettiin.",
+ "Sent messages will be stored until your connection has returned.": "Lähetetyt viestit tallennetaan kunnes yhteys on taas muodostettu.",
+ "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Uudelleenlähetä kaikki tai hylkää kaikki nyt. Voit myös valita yksittäisiä viestejä uudelleenlähetettäväksi tai hylättäväksi.",
+ "(~%(count)s results)|one": "(~%(count)s tulos)",
+ "(~%(count)s results)|other": "(~%(count)s tulosta)",
+ "Active call": "Aktiivinen puhelu",
+ "bold": "lihavoitu",
+ "italic": "kursiivi",
+ "strike": "ylivedetty",
+ "underline": "alleviivattu",
+ "code": "koodi",
+ "quote": "sitaatti",
+ "bullet": "lista",
+ "numbullet": "numeroitu lista",
+ "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)sliittyivät %(repeats)s kertaa",
+ "%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)shylkäsi kutsunsa %(repeats)s kertaa",
+ "Please select the destination room for this message": "Ole hyvä ja valitse vastaanottava huone tälle viestille",
+ "New Password": "Uusi salasana",
+ "Start automatically after system login": "Käynnistä automaattisesti käyttöjärjestelmään kirjautumisen jälkeen",
+ "Desktop specific": "Työpöytäkäytön asetukset",
+ "Analytics": "Analytiikka",
+ "Opt out of analytics": "Ota analytiikka pois käytöstä",
+ "Options": "Valinnat",
+ "Riot collects anonymous analytics to allow us to improve the application.": "Riot kerää anonyymisti tilastoja jotta voimme parantaa ohjelmistoa.",
+ "Passphrases must match": "Salasanojen on täsmättävä",
+ "Passphrase must not be empty": "Salasana ei saa olla tyhjä",
+ "Export room keys": "Vie huoneen avaimet",
+ "Confirm passphrase": "Varmista salasana",
+ "Import room keys": "Tuo huoneen avaimet",
+ "File to import": "Tiedosto",
+ "You must join the room to see its files": "Sinun pitää liittyä huoneeseen voidaksesi nähdä sen sisältämät tiedostot",
+ "Reject all %(invitedRooms)s invites": "Hylkää kaikki %(invitedRooms)s kutsut",
+ "Start new chat": "Aloita uusi keskustelu",
+ "Failed to invite": "Kutsu epäonnistui",
+ "Failed to invite user": "Käyttäjän kutsuminen epäonnistui",
+ "Failed to invite the following users to the %(roomName)s room:": "Seuraavian käyttäjien kutsuminen huoneeseen %(roomName)s epäonnistui:",
+ "Confirm Removal": "Varmista poistaminen",
+ "Unknown error": "Tuntematon virhe",
+ "Incorrect password": "Virheellinen salasana",
+ "This action is irreversible.": "Tätä toimintoa ei voi perua.",
+ "Device name": "Laitenimi",
+ "Device Name": "Laitenimi",
+ "Device key": "Laiteavain",
+ "In future this verification process will be more sophisticated.": "Tulevaisuudessa tämä varmennusprosessi tulee olemaan hienostuneempi.",
+ "Verify device": "Varmenna laite",
+ "I verify that the keys match": "Totean että avaimet vastaavat toisiaan",
+ "Unable to restore session": "Istunnon palautus epäonnistui",
+ "Continue anyway": "Jatka kuitenkin",
+ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s poisti huoneen nimen.",
+ "Changes to who can read history will only apply to future messages in this room": "Muutokset koskien ketkä voivat lukea historian koskevat vain uusia viestejä",
+ "Click here to join the discussion!": "Paina tästä liittyäksesi keskusteluun",
+ "%(count)s new messages|one": "%(count)s uusi viesti",
+ "%(count)s new messages|other": "%(count)s uutta viestiä",
+ "Curve25519 identity key": "Curve25519 tunnistusavain",
+ "Decrypt %(text)s": "Pura %(text)s",
+ "Devices will not yet be able to decrypt history from before they joined the room": "Laitteet eivät vielä pysty purkamaan viestejä ajalta ennen kun ne liittyivät huoneseen",
+ "Disable inline URL previews by default": "Ota oletusarvoisesti pois käytöstä URL esikatselut",
+ "Displays action": "Näyttää toiminnan",
+ "Don't send typing notifications": "Älä lähetä kirjoitusilmoituksia",
+ "End-to-end encryption is in beta and may not be reliable": "Päästä päähän salaus on vielä testausvaiheessa ja saattaa toimia epävarmasti",
+ "Error: Problem communicating with the given homeserver.": "Virhe: Ongelma yhteydenpidossa kotipalvelimeen.",
+ "Existing Call": "Käynnissä oleva puhelu",
+ "Failed to lookup current room": "Nykyisen huoneen löytäminen epäonnistui",
+ "Join as voice or video.": "Liity käyttäen ääntä tai videota.",
+ "%(targetName)s joined the room.": "%(targetName)s liittyi huoneeseen.",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s poisti käyttäjän %(targetName)s huoneesta.",
+ "%(targetName)s left the room.": "%(targetName)s poistui huoneesta.",
+ "Publish this room to the public in %(domain)s's room directory?": "Julkaise tämä huone domainin %(domain)s huoneluettelossa?",
+ "Missing room_id in request": "room_id puuttuu kyselystä",
+ "Missing user_id in request": "user_id puuttuu kyselystä",
+ "Must be viewing a room": "Pakko olla huoneessa",
+ "Never send encrypted messages to unverified devices from this device": "Älä koskaa lähetä salattuja viestejä varmentamattomiin laitteisiin tältä laitteelta",
+ "Never send encrypted messages to unverified devices in this room from this device": "Älä koskaa lähetä salattuja viestejä varmentamattomiin laitteisiin tässä huoneessa tältä laitteelta",
+ "New address (e.g. #foo:%(localDomain)s)": "Uusi osoite (esim. #foo:%(localDomain)s)",
+ "Press to start a chat with someone": "Paina ",
+ "Revoke Moderator": "Poista moderaattorioikeudet",
+ "Refer a friend to Riot:": "Suosittele Riot ystävälle:",
+ "%(targetName)s rejected the invitation.": "%(targetName)s hylkäsi kutsun.",
+ "Remote addresses for this room:": "Tämän huoneen etäosoitteet:",
+ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s poisti näyttönimensä (%(oldDisplayName)s).",
+ "Report it": "Ilmoita siitä",
+ "Return to app": "Palaa ohjelmaan",
+ "Riot does not have permission to send you notifications - please check your browser settings": "Riotilla ei ole oikeuksia lähettää sinulle ilmoituksia. Ole hyvä ja tarkista selaimen asetukset",
+ "Riot was not given permission to send notifications - please try again": "Riotilla ei saannut oikeuksia lähettää ilmoituksia. Ole hyvä ja yritä uudelleen",
+ "Room %(roomId)s not visible": "Huone %(roomId)s ei ole näkyvissä",
+ "%(roomName)s does not exist.": "%(roomName)s ei ole olemassa.",
+ "%(roomName)s is not accessible at this time.": "%(roomName)s ei ole saatavilla tällä hetkellä.",
+ "Seen by %(userName)s at %(dateTime)s": "Käyttäjän %(userName)s näkemä %(dateTime)s",
+ "Send Reset Email": "Lähetä salasanan palautusviesti",
+ "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s lähetti kuvan.",
+ "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s lähetti kutsun käyttäjälle %(targetDisplayName)s liittyäkseen huoneeseen.",
+ "Server may be unavailable or overloaded": "Palvelin saattaa olla saavuttamattomissa tai ylikuormitettu",
+ "Show Text Formatting Toolbar": "Näytä tekstinmuotoilupalkki",
+ "Show timestamps in 12 hour format (e.g. 2:30pm)": "Näytä aikaleimat 12h muodossa (esim. 2:30pm)",
+ "Signed Out": "Uloskirjautunut",
+ "since the point in time of selecting this option": "tämän asetuksen valitsemisesta",
+ "Start authentication": "Aloita tunnistus",
+ "Success": "Onnistuminen",
+ "Tagged as: ": "Tägit: ",
+ "The default role for new room members is": "Huoneen uusien jäsenten oletusrooli on",
+ "The main address for this room is": "Tämän huoneen pääosoite on",
+ "The phone number entered looks invalid": "Syötetty puhelinnumero näyttää virheelliseltä",
+ "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Syöttämäsi allekirjoitusavain vastaa käyttäjän %(userId)s laitteelta %(deviceId)s saamaasi allekirjoitusavainta. Laite on merkitty varmennetuksi.",
+ "Unable to add email address": "Sähköpostiosoitteen lisääminen epäonnistui",
+ "Unable to remove contact information": "Yhteystietojen poistaminen epäonnistui",
+ "Unable to verify email address.": "Sähköpostin varmentaminen epäonnistui.",
+ "Unbans user with given id": "Poistaa porttikiellon annetun ID:n omaavalta käyttäjältä",
+ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s poisti porttikiellon käyttäjältä %(targetName)s.",
+ "Unable to capture screen": "Ruudun kaappaus epäonnistui",
+ "Unable to enable Notifications": "Ilmoitusten käyttöönotto epäonnistui",
+ "Unable to load device list": "Laitelistan lataaminen epäonnistui",
+ "Uploading %(filename)s and %(count)s others|other": "Ladataan %(filename)s ja %(count)s muuta",
+ "uploaded a file": "lattaa tiedosto",
+ "Upload Failed": "Lataus epäonnistui",
+ "Upload Files": "Lataa tiedostoja",
+ "Upload file": "Lataa tiedosto",
+ "Upload new:": "Lataa uusi:",
+ "Usage": "Käyttö",
+ "Use compact timeline layout": "Käytä kompaktia aikajanaa",
+ "Use with caution": "Käytä varoen",
+ "User ID": "Käyttäjätunniste",
+ "User Interface": "Käyttöliittymä",
+ "%(user)s is a": "%(user)s on",
+ "User name": "Käyttäjänimi",
+ "%(oneUser)sjoined %(repeats)s times": "%(oneUser)sliittyi %(repeats)s kertaa",
+ "%(severalUsers)sjoined": "%(severalUsers)sliittyivät",
+ "%(oneUser)sjoined": "%(oneUser)sliittyi",
+ "%(severalUsers)sleft %(repeats)s times": "%(severalUsers)spoistuivat %(repeats)s kertaa",
+ "%(oneUser)sleft %(repeats)s times": "%(oneUser)spoistui %(repeats)s kertaa",
+ "%(severalUsers)sleft": "%(severalUsers)sspoistuivat",
+ "%(oneUser)sleft": "%(oneUser)spoistui",
+ "%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers)sliittyivät ja poistuivat %(repeats)s kertaa",
+ "%(oneUser)sjoined and left %(repeats)s times": "%(oneUser)sliittyi ja poistui %(repeats)s kertaa",
+ "%(severalUsers)sjoined and left": "%(severalUsers)sliittyivät ja poistuivat",
+ "%(oneUser)sjoined and left": "%(oneUser)sliittyi ja poistui",
+ "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)spoistuivat ja liittyivät uudelleen %(repeats)s kertaa",
+ "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)spoistui ja liittyi uudelleen %(repeats)s kertaa",
+ "%(severalUsers)sleft and rejoined": "%(severalUsers)spoistuivat ja liittyivät uudelleen",
+ "%(oneUser)sleft and rejoined": "%(oneUser)spoistui ja liittyi uudelleen",
+ "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)shylkäsivät kutsunsa %(repeats)s kertaa'",
+ "%(severalUsers)srejected their invitations": "%(severalUsers)shylkäsivät kutsunsa",
+ "%(oneUser)srejected their invitation": "%(oneUser)shylkäsi kutsunsa",
+ "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)skutsut vedettiin takaisin %(repeats)s kertaa",
+ "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)skutsu vedettiin takaisin %(repeats)s kertaa",
+ "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)skutsut vedettiin takaisin",
+ "%(oneUser)shad their invitation withdrawn": "%(oneUser)skutsu vedettiin takaisin",
+ "were invited %(repeats)s times": "kutsuttiin %(repeats)s kertaa",
+ "was invited %(repeats)s times": "kutsuttiin %(repeats)s kertaa",
+ "were invited": "kutsuttiin",
+ "was invited": "kutsuttiin",
+ "were kicked %(repeats)s times": "poistettiin huoneesta %(repeats)s kertaa",
+ "was kicked %(repeats)s times": "poistettiin huoneesta %(repeats)s kertaa",
+ "were kicked": "poistettiin huoneesta",
+ "was kicked": "poistettiin huoneesta",
+ "%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)smuuttivat nimensä %(repeats)s kertaa",
+ "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)smuutti nimensä %(repeats)s kertaa",
+ "%(severalUsers)schanged their name": "%(severalUsers)smuuttivat nimensä",
+ "%(oneUser)schanged their name": "%(oneUser)smuutti nimensä",
+ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s asetti aiheeksi \"%(topic)s\".",
+ "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Salasanan muuttaminen uudelleenalustaa myös päästä päähän-salausavaimet kaikilla laitteilla, jolloin vanhojen viestien lukeminen ei ole enään mahdollista, ellet ensin vie huoneavaimet ja tuo ne takaisin jälkeenpäin. Tämä tulee muuttumaan tulevaisuudessa.",
+ "Define the power level of a user": "Määritä käyttäjän oikeustaso",
+ "Failed to change power level": "Oikeustason muuttaminen epäonnistui",
+ "'%(alias)s' is not a valid format for an address": "'%(alias)s' ei ole oikean muotoinen osoitteelle",
+ "'%(alias)s' is not a valid format for an alias": "'%(alias)s' ei ole oikean muotoinen aliakselle",
+ "Once you've followed the link it contains, click below": "Klikkaa alla kun olet seuruannut sen sisältämää linkkiä",
+ "Otherwise, click here to send a bug report.": "Paina muutoin tästä lähettääksesi virheraportin.",
+ "Please check your email and click on the link it contains. Once this is done, click continue.": "Ole hyvä ja tarkista sähköpostisi ja seuraa sen sisältämää linkkiä. Kun olet valmis, paina jatka.",
+ "Power level must be positive integer.": "Oikeustason pitää olla positiivinen kokonaisluku.",
+ "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Salasanan uudelleenalustus uudelleenalustaa myös päästä päähän-salausavaimet kaikilla laitteilla, jolloin vanhojen viestien lukeminen ei ole enään mahdollista, ellet ensin vie huoneavaimet ja tuo ne takaisin jälkeenpäin. Tämä tulee muuttumaan tulevaisuudessa.",
+ "Server may be unavailable, overloaded, or search timed out :(": "Palvelin saattaa olla saavuttamattomissa, ylikuormitettu tai haku kesti liian kauan :(",
+ "Server may be unavailable, overloaded, or the file too big": "Palvelin saattaa olla saavuttamattomissa, ylikuormitettu, tai tiedosto on liian suuri",
+ "Server may be unavailable, overloaded, or you hit a bug.": "Palvelin saattaa olla saavuttamattomissa, ylikuormitettu tai olet törmännyt virheeseen.",
+ "Server unavailable, overloaded, or something else went wrong.": "Palvelin on saavuttamattomissa, ylikuormitettu tai jokin muu meni vikaan.",
+ "Sorry, this homeserver is using a login which is not recognised ": "Valitettavasti tämä palvelin käyttää kirjautumista joka ei ole tuettu ",
+ "The email address linked to your account must be entered.": "Sinun pitää syöttää tiliisi liitetty sähköpostiosoite.",
+ "The visibility of existing history will be unchanged": "Olemassaolevan viestihistorian näkyvyys ei muutu",
+ "To get started, please pick a username!": "Valitse käyttäjänimi aloittaaksesi!",
+ "To use it, just wait for autocomplete results to load and tab through them.": "Käyttääksesi sitä odota vain automaattitäydennyksiä ja selaa niiden läpi.",
+ "To reset your password, enter the email address linked to your account": "Syötä tiliisi liitetty sähköpostiosoite uudelleenalustaaksesi salasanasi",
+ "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Aikajanan tietty hetki yritettiin ladata, mutta sinulla ei ole oikeutta nähdä kyseistä viestiä.",
+ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Aikajanan tietty hetki yritettiin ladata, mutta se ei löytynyt.",
+ "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Ei ole mahdollista varmistaa että sähköposti johon tämä kutsu lähetettiin vastaa sinun tiliisi liittettyä osoitetta.",
+ "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (oikeustaso %(powerLevelNumber)s)",
+ "Verification Pending": "Varmennus on vireillä",
+ "(could not connect media)": "(mediaa ei voitu yhdistää)",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "VAROITUS: Laite on jo varmennettu mutta avaimet eivät vastaa toisiaan!",
+ "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "VAROITUS: AVAIMEN VARMENNUS EPÄONNISTUI! Käyttäjän %(userId)s ja laitteen %(deviceId)s allekirjoitusavain on \"%(fprint)s\" joka ei vastaa annettua avainta \"%(fingerprint)s\". Tämä saattaa tarkoittaa että viestintäsi siepataan!",
+ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s veti takaisin käyttäjän %(targetName)s kutsun.",
+ "You're not in any rooms yet! Press to make a room or to browse the directory": "Et ole vielä missään huoneessa! Paina luodaksesi huoneen tai selatakseski hakemistoa",
+ "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Sinut on kirjattu ulos kaikista laitteista etkä enää saa Push-ilmoituksia. Jotta saisit jälleen ilmoituksia pitää sinun jälleen kirjautua sisään jokaisella laitteella",
+ "You may wish to login with a different account, or add this email to this account.": "Haluat ehkä kirjautua toiseen tiliin tai lisätä tämä sähköpostiosoite tähän tiliin.",
+ "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Salasanan muuttaminen onnistui. Et saa enää push-ilmoituksia muilla laitteilla kunnes olet uudelleen kirjautunut sisään niillä",
+ "You seem to be in a call, are you sure you want to quit?": "Sinulla näyttää olevan puhelu kesken. Haluatko varmasti lopettaa?",
+ "You seem to be uploading files, are you sure you want to quit?": "Näytät lataavan tiedostoja. Oletko varma että haluat lopettaa?",
+ "Jan": "tammikuu",
+ "Feb": "helmikuu",
+ "Mar": "maaliskuu",
+ "Apr": "huhtikuu",
+ "May": "toukokuu",
+ "Jun": "kesäkuu",
+ "Jul": "heinäkuu",
+ "Aug": "elokuu",
+ "Sep": "syyskuu",
+ "Oct": "lokakuu",
+ "Nov": "marraskuu",
+ "Dec": "jolukuu",
+ "User names may only contain letters, numbers, dots, hyphens and underscores.": "Käyttäjänimet voivat sisältää vain kirjaimia, numeroita, pisteitä, viivoja ja alaviivoja.",
+ "To continue, please enter your password.": "Ole hyvä ja syötä salasanasi jatkaaksesi.",
+ "Verifies a user, device, and pubkey tuple": "Varmentaa käyttäjän, laitteen ja julkisen avaimen kolmikon",
+ "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" sisältä laitteita joita et ole nähnyt aikaisemmin.",
+ "Unknown devices": "Tuntemattomia laitteita",
+ "Unknown Address": "Tuntematon osoite",
+ "Unverify": "Kumoa varmennus",
+ "Verify...": "Varmenna...",
+ "ex. @bob:example.com": "esim. @bob:example.com",
+ "Add User": "Lisää käyttäjä",
+ "This Home Server would like to make sure you are not a robot": "Tämä kotipalvelin haluaa varmistaa että et ole robotti",
+ "A text message has been sent to": "Tekstiviesti on lähetetty numeroon",
+ "Please enter the code it contains:": "Ole hyvä ja syötä sen sisältämä koodi:",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Jos et syötä sähköpostiosoitetta et voi uudelleenalustaa salasanasi myöhemmin. Oletko varma?",
+ "Default server": "Oletuspalvelin",
+ "Home server URL": "Kotipalvelimen URL",
+ "Identity server URL": "Identiteettipalvelimen URL",
+ "What does this mean?": "Mitä tämä tarkoittaa?",
+ "Error decrypting audio": "Äänen salauksen purku epäonnistui",
+ "Error decrypting image": "Kuvan salauksen purku epäonnistui",
+ "Image '%(Body)s' cannot be displayed.": "Kuva '%(Body)s' ei voida näyttää.",
+ "This image cannot be displayed.": "Tätä kuvaa ei voida näyttää.",
+ "Error decrypting video": "Videon salauksen purku epäonnistui",
+ "Add an Integration": "Lisää integraatio",
+ "Removed or unknown message type": "Poistettu tai tuntematon viestityyppi",
+ "URL Previews": "URL esikatselut",
+ "Drop file here to upload": "Pudota tiedosto tähän ladataksesi sen palvelimelle",
+ " (unsupported)": " (ei tuettu)",
+ "Updates": "Päivitykset",
+ "Check for update": "Tarkista päivitykset",
+ "Start chatting": "Aloita keskustelu",
+ "Start Chatting": "Aloita keskustelu",
+ "Click on the button below to start chatting!": "Paina nappia alla aloittaaksesi keskustelu!",
+ "Username available": "Käyttäjänimi saatavissa",
+ "Username not available": "Käyttäjänimi ei ole saatavissa",
+ "Something went wrong!": "Jokin meni vikaan!",
+ "This will be your account name on the homeserver, or you can pick a different server.": "Tämä on tilisi -kotipalvelimella, tai voit valita toisen palvelimen.",
+ "If you already have a Matrix account you can log in instead.": "Jos sinulla on jo Matrix-tili voit kirjautua.",
+ "Your browser does not support the required cryptography extensions": "Selaimesi ei tue vaadittuja kryptografisia laajennuksia",
+ "Not a valid Riot keyfile": "Virheellinen Riot avaintiedosto",
+ "Authentication check failed: incorrect password?": "Autentikointi epäonnistui: virheellinen salasana?",
+ "Do you want to set an email address?": "Haluatko asettaa sähköpostiosoitteen?",
+ "This will allow you to reset your password and receive notifications.": "Tämä sallii sinun uudelleenalustaa salasanasi ja vastaanottaa ilmoituksia.",
+ "To return to your account in future you need to set a password": "Päästäksesi uudestaan tiliisi myöhemmin sinun täytyy asettaa salasana",
+ "Skip": "Hyppää yli",
+ "Start verification": "Aloita varmennus",
+ "Share without verifying": "Jaa ilman varmennusta",
+ "Ignore request": "Jätä pyyntö huomioimatta",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "Lisäsit laitteen '%(displayName)s' joka pyytää salausavaimia.",
+ "Your unverified device '%(displayName)s' is requesting encryption keys.": "Sinun varmentamaton laitteesi '%(displayName)s' pyytää salausavaimia.",
+ "Encryption key request": "Salausavainpyyntö",
+ "Loading device info...": "Ladataan laitetiedot...",
+ "Example": "Esimerkki",
+ "Create": "Luo",
+ "Room creation failed": "Huoneen luonti epäonnistui",
+ "Failed to upload image": "Kuvan lataaminen epäonnistui",
+ "Robot check is currently unavailable on desktop - please use a web browser": "Robottitarkistus ei tällä hetkellä toimi työpöytäversiossa. Ole hyvä ja käytä nettiselainta",
+ "Add a widget": "Lisää sovelma",
+ "Cannot add any more widgets": "Lisää sovelmia ei voida enää lisätä",
+ "Delete widget": "Poista sovelma",
+ "Do you want to load widget from URL:": "Haluatko ladata sovelman URL-osoitteesta:",
+ "The maximum permitted number of widgets have already been added to this room.": "Maksimimäärä sovelmia on jo lisätty tähän huoneeseen.",
+ "Unable to create widget.": "Sovelman luominen epäonnistui.",
+ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Et voi kumota tätä toimintoa koska olet antamassa käyttäjälle saman oikeustason kuin sinullakin on.",
+ "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Tämä prosessi mahdollistaa salatuissa huoneissa vastaanottamasi viestien salausavainten vieminen tiedostoon. Voit sitten myöhemmin tuoda ne toiseen Matrix-asiakasohjelmaan niin että myös se ohjema voi purkaa viestit.",
+ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Tämän tiedoston avulla kuka tahansa pystyy purkamaan kaikki salatut viestit jotka sinä voit nähdä, joten sinun täytyy säilyttää se turvallisesti. Helpottaaksesi tätä sinun pitäisi syötää salasana alla jonka avulla tiedosto salataan. Käyttäen samaa salasanaa voit myöhemmin tuoda tiedot ohjelmaan.",
+ "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Tämä prosessi mahdollistaa aiemmin tallennettujen salausavainten tuominen toiseen Matrix-asiakasohjelmaan. Tämän jälkeen voit purkaa kaikki salatut viestit jotka toinen asiakasohjelma pystyisi purkamaan."
}
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 3faaed8f51..a9b7232e29 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1,45 +1,37 @@
{
- "Direct chats": "Conversations directes",
- "Disable inline URL previews by default": "Désactiver l’aperçu des URLs",
+ "Direct chats": "Discussions directes",
+ "Disable inline URL previews by default": "Désactiver l’aperçu des liens",
"Disinvite": "Désinviter",
- "Display name": "Nom d'affichage",
+ "Display name": "Nom affiché",
"Displays action": "Affiche l'action",
"Don't send typing notifications": "Ne pas envoyer les notifications de saisie",
"Download %(text)s": "Télécharger %(text)s",
"Drop here %(toAction)s": "Déposer ici %(toAction)s",
- "Drop here to tag %(section)s": "Déposer ici pour marquer comme %(section)s",
+ "Drop here to tag %(section)s": "Déposer ici pour étiqueter comme %(section)s",
"Ed25519 fingerprint": "Empreinte Ed25519",
- "Email Address": "Adresse e-mail",
"Email, name or matrix ID": "E-mail, nom ou identifiant Matrix",
- "Emoji": "Emoticône",
+ "Emoji": "Émoticône",
"Enable encryption": "Activer le chiffrement",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "Les messages chiffrés ne seront pas visibles dans les clients qui n’implémentent pas encore le chiffrement",
"Encrypted room": "Salon chiffré",
"%(senderName)s ended the call.": "%(senderName)s a terminé l’appel.",
- "End-to-end encryption information": "Information sur le chiffrement de bout-en-bout",
- "End-to-end encryption is in beta and may not be reliable": "Le chiffrement de bout-en-bout est en bêta et risque de ne pas être fiable",
- "Enter Code": "Entrer le code",
+ "End-to-end encryption information": "Informations sur le chiffrement de bout en bout",
+ "End-to-end encryption is in beta and may not be reliable": "Le chiffrement de bout en bout est en bêta et risque de ne pas être fiable",
+ "Enter Code": "Saisir le code",
"Error": "Erreur",
- "Event information": "Information de l'événement",
+ "Event information": "Informations de l'événement",
"Existing Call": "Appel en cours",
- "Export E2E room keys": "Exporter les clés de chiffrement du salon",
- "Failed to ban user": "Échec lors du bannissement de l'utilisateur",
+ "Export E2E room keys": "Exporter les clés de chiffrement de salon",
+ "Failed to ban user": "Échec du bannissement de l'utilisateur",
"Failed to change password. Is your password correct?": "Échec du changement de mot de passe. Votre mot de passe est-il correct ?",
- "Failed to change power level": "Échec du changement de niveau d'autorité",
+ "Failed to change power level": "Échec du changement de rang",
"Failed to delete device": "Échec de la suppression de l'appareil",
- "Failed to forget room %(errCode)s": "Échec lors de l'oubli du salon %(errCode)s",
+ "Failed to forget room %(errCode)s": "Échec de l'oubli du salon %(errCode)s",
"Remove": "Supprimer",
"was banned": "a été banni(e)",
"was invited": "a été invité(e)",
- "was kicked": "a été expulsé(e)",
- "was unbanned": "a été amnistié(e)",
- "Monday": "Lundi",
- "Tuesday": "Mardi",
- "Wednesday": "Mercredi",
- "Thursday": "Jeudi",
- "Friday": "Vendredi",
- "Saturday": "Samedi",
- "Sunday": "Dimanche",
+ "was kicked": "a été exclu(e)",
+ "was unbanned": "a vu son bannissement révoqué",
"bold": "gras",
"italic": "italique",
"strike": "barré",
@@ -47,56 +39,50 @@
"Favourite": "Favoris",
"Notifications": "Notifications",
"Settings": "Paramètres",
- "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un message texte a été envoyé à +%(msisdn)s. Merci d'entrer le code de vérification qu'il contient",
- "accept": "Accepter",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un SMS a été envoyé à +%(msisdn)s. Merci de saisir le code de vérification qu'il contient",
"%(targetName)s accepted an invitation.": "%(targetName)s a accepté une invitation.",
"Account": "Compte",
"Add email address": "Ajouter une adresse e-mail",
- "Add phone number": "Ajouter un numéro",
- "Admin": "Admin",
+ "Add phone number": "Ajouter un numéro de téléphone",
+ "Admin": "Administrateur",
"Advanced": "Avancé",
"Algorithm": "Algorithme",
- "an address": "une adresse",
- "and": "et",
"%(items)s and %(remaining)s others": "%(items)s et %(remaining)s autres",
"%(items)s and one other": "%(items)s et un autre",
"%(items)s and %(lastItem)s": "%(items)s et %(lastItem)s",
- "%(names)s and %(lastPerson)s are typing": "%(names)s et %(lastPerson)s sont en train d'écrire",
- "%(names)s and one other are typing": "%(names)s et un autre sont en train d'écrire",
- "%(names)s and %(count)s others are typing": "%(names)s et %(count)s d'autres sont en train d'écrire",
+ "%(names)s and %(lastPerson)s are typing": "%(names)s et %(lastPerson)s écrivent",
+ "%(names)s and one other are typing": "%(names)s et un autre écrivent",
"and %(count)s others...|other": "et %(count)s autres...",
"and %(count)s others...|one": "et un autre...",
"An email has been sent to": "Un e-mail a été envoyé à",
- "A new password must be entered.": "Un nouveau mot de passe doit être entré.",
- "Anyone who knows the room's link, apart from guests": "Tout ceux qui connaissent le lien du salon, à part les visiteurs",
- "Anyone who knows the room's link, including guests": "Tout ceux qui connaissent le lien du salon, y compris les visiteurs",
- "Are you sure?": "Êtes-vous sûr ?",
- "Are you sure you want to reject the invitation?": "Êtes-vous sûr de vouloir rejeter l'invitation ?",
- "Are you sure you want to upload the following files?": "Êtes-vous sûr de vouloir télécharger les fichiers suivants ?",
+ "A new password must be entered.": "Un nouveau mot de passe doit être saisi.",
+ "Anyone who knows the room's link, apart from guests": "Tous ceux qui connaissent le lien du salon, à part les visiteurs",
+ "Anyone who knows the room's link, including guests": "Tous ceux qui connaissent le lien du salon, y compris les visiteurs",
+ "Are you sure?": "Êtes-vous sûr(e) ?",
+ "Are you sure you want to reject the invitation?": "Voulez-vous vraiment rejeter l'invitation ?",
+ "Are you sure you want to upload the following files?": "Voulez-vous vraiment envoyer les fichiers suivants ?",
"Attachment": "Pièce jointe",
- "Autoplay GIFs and videos": "Jouer automatiquement les GIFs et vidéos",
+ "Autoplay GIFs and videos": "Jouer automatiquement les GIFs et les vidéos",
"%(senderName)s banned %(targetName)s.": "%(senderName)s a banni %(targetName)s.",
"Ban": "Bannir",
"Banned users": "Utilisateurs bannis",
- "Bans user with given id": "Bannit l'utilisateur avec un identifiant donné",
+ "Bans user with given id": "Bannit l'utilisateur à partir de son identifiant",
"Blacklisted": "Sur liste noire",
"Bug Report": "Rapport d'erreur",
"Call Timeout": "Délai d’appel expiré",
- "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Connexion au Home Server impossible - merci de vérifier votre connectivité et que le certificat SSL de votre Home Server est de confiance.",
- "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Impossible de se connecter au homeserver en HTTP si l'URL dans la barre de votre explorateur est en HTTPS. Utilisez HTTPS ou activez le support des scripts non-vérifiés.",
- "Can't load user settings": "Impossible de charger les paramètres utilisateur",
+ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Impossible de se connecter au serveur d'accueil en HTTP si l'URL dans la barre de votre explorateur est en HTTPS. Utilisez HTTPS ou activez le support des scripts non-vérifiés.",
+ "Can't load user settings": "Impossible de charger les paramètres de l'utilisateur",
"Change Password": "Changer le mot de passe",
- "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s a changé son nom d’affichage de %(oldDisplayName)s en %(displayName)s.",
- "%(senderName)s changed their profile picture.": "%(senderName)s a changé sa photo de profil.",
- "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s a changé le niveau de pouvoir de %(powerLevelDiffText)s.",
+ "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s a changé son nom affiché de %(oldDisplayName)s en %(displayName)s.",
+ "%(senderName)s changed their profile picture.": "%(senderName)s a changé son image de profil.",
+ "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s a changé le rang de %(powerLevelDiffText)s.",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s a changé le nom du salon en %(roomName)s.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s a changé le sujet du salon en \"%(topic)s\".",
- "Changes to who can read history will only apply to future messages in this room": "Les changements de visibilité de l’historique de ce salon ne s’appliquent qu’aux messages futurs",
- "Changes your display nickname": "Change votre nom d'affichage",
- "Claimed Ed25519 fingerprint key": "Clé empreinte Ed25519 revendiquée",
+ "Changes to who can read history will only apply to future messages in this room": "Les changements de visibilité de l’historique de ce salon ne s’appliquent qu’aux futurs messages",
+ "Changes your display nickname": "Change votre nom affiché",
+ "Claimed Ed25519 fingerprint key": "Clé d'empreinte Ed25519 déclarée",
"Clear Cache and Reload": "Vider le cache et rafraîchir",
"Clear Cache": "Vider le cache",
- "Click here": "Cliquer ici",
"Click here to fix": "Cliquer ici pour réparer",
"Click to mute audio": "Cliquer pour couper le son",
"Click to mute video": "Cliquer ici pour couper la vidéo",
@@ -105,10 +91,10 @@
"Click to unmute audio": "Cliquer pour rétablir le son",
"Command error": "Erreur de commande",
"Commands": "Commandes",
- "Conference call failed.": "Échec de la conférence.",
- "Conference calling is in development and may not be reliable.": "Les appels en conférence sont encore en développement et sont potentiellement peu fiables.",
- "Conference calls are not supported in encrypted rooms": "Les appels en conférence ne sont pas supportés dans les salons chiffrés",
- "Conference calls are not supported in this client": "Les appels en conférence ne sont pas supportés avec ce client",
+ "Conference call failed.": "Échec de la téléconférence.",
+ "Conference calling is in development and may not be reliable.": "Les appels en téléconférence sont encore en développement et sont potentiellement peu fiables.",
+ "Conference calls are not supported in encrypted rooms": "Les appels en téléconférence ne sont pas supportés dans les salons chiffrés",
+ "Conference calls are not supported in this client": "Les appels en téléconférence ne sont pas supportés par ce client",
"Confirm password": "Confirmer le mot de passe",
"Confirm your new password": "Confirmer votre nouveau mot de passe",
"Continue": "Continuer",
@@ -121,30 +107,27 @@
"/ddg is not a command": "/ddg n'est pas une commande",
"Deactivate Account": "Supprimer le compte",
"Deactivate my account": "Supprimer mon compte",
- "decline": "décliner",
"Decrypt %(text)s": "Déchiffrer %(text)s",
"Decryption error": "Erreur de déchiffrement",
"Delete": "Supprimer",
- "demote": "rétrograder",
- "Deops user with given id": "Retire les privilèges d’opérateur d’un utilisateur avec un ID donné",
+ "Deops user with given id": "Retire le rang d’opérateur d’un utilisateur à partir de son identifiant",
"Device ID": "Identifiant de l'appareil",
"Devices": "Appareils",
- "Devices will not yet be able to decrypt history from before they joined the room": "Les appareils ne seront pas capables de déchiffrer l’historique précédant leur adhésion au salon",
- "ml": "Malayalam",
- "Failed to join room": "Échec lors de l’adhésion au salon",
- "Failed to kick": "Échec lors de l'expulsion",
- "Failed to leave room": "Échec du départ",
- "Failed to load timeline position": "Erreur lors du chargement de la position dans la chronologie",
- "Failed to lookup current room": "Échec lors de la recherche du salon actuel",
- "Failed to mute user": "Échec lors de l'interruption de l'utilisateur",
- "Failed to reject invite": "Échec lors du rejet de l'invitation",
- "Failed to reject invitation": "Échec lors du rejet de l'invitation",
- "Failed to save settings": "Échec lors de la sauvegarde des paramètres",
- "Failed to send email": "Échec lors de l’envoi de l’e-mail",
- "Failed to send request.": "Erreur lors de l'envoi de la requête.",
- "Failed to set display name": "Échec lors de l'enregistrement du nom d'affichage",
- "Failed to set up conference call": "Échec lors de l’établissement de l’appel",
- "Failed to toggle moderator status": "Échec lors de l’activation du statut de modérateur",
+ "Devices will not yet be able to decrypt history from before they joined the room": "Les appareils ne pourront pas encore déchiffrer l'historique de messages d'avant leur arrivée sur le salon",
+ "Failed to join room": "Échec de l’inscription au salon",
+ "Failed to kick": "Échec de l'exclusion",
+ "Failed to leave room": "Échec du départ du salon",
+ "Failed to load timeline position": "Échec du chargement de la position dans l'historique",
+ "Failed to lookup current room": "Échec de la recherche du salon actuel",
+ "Failed to mute user": "Échec de la mise en sourdine de l'utilisateur",
+ "Failed to reject invite": "Échec du rejet de l'invitation",
+ "Failed to reject invitation": "Échec du rejet de l'invitation",
+ "Failed to save settings": "Échec de la sauvegarde des paramètres",
+ "Failed to send email": "Échec de l’envoi de l’e-mail",
+ "Failed to send request.": "Échec de l'envoi de la requête.",
+ "Failed to set display name": "Échec de l'enregistrement du nom affiché",
+ "Failed to set up conference call": "Échec de l’établissement de la téléconférence",
+ "Failed to toggle moderator status": "Échec de l’activation du statut de modérateur",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s a accepté l’invitation de %(displayName)s.",
"Access Token:": "Jeton d’accès :",
"Always show message timestamps": "Toujours afficher l'heure des messages",
@@ -152,60 +135,52 @@
"%(senderName)s answered the call.": "%(senderName)s a répondu à l’appel.",
"An error has occurred.": "Une erreur est survenue.",
"Email": "E-mail",
- "Failed to unban": "Échec de l'amnistie",
- "Failed to upload file": "Échec du téléchargement",
+ "Failed to unban": "Échec de la révocation du bannissement",
+ "Failed to upload file": "Échec de l'envoi du fichier",
"Failed to verify email address: make sure you clicked the link in the email": "Échec de la vérification de l’adresse e-mail : vérifiez que vous avez bien cliqué sur le lien dans l’e-mail",
"Failure to create room": "Échec de la création du salon",
- "favourite": "favoris",
"Favourites": "Favoris",
"Fill screen": "Plein écran",
"Filter room members": "Filtrer les membres du salon",
"Forget room": "Oublier le salon",
- "Forgot your password?": "Mot de passe perdu ?",
- "For security, this session has been signed out. Please sign in again.": "Par sécurité, la session a expiré. Merci de vous authentifier à nouveau.",
- "Found a bug?": "Trouvé un problème ?",
+ "Forgot your password?": "Mot de passe oublié ?",
+ "For security, this session has been signed out. Please sign in again.": "Par mesure de sécurité, la session a expiré. Merci de vous authentifier à nouveau.",
+ "Found a bug?": "Vous avez trouvé un problème ?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s à %(toPowerLevel)s",
- "had": "avait",
"Hangup": "Raccrocher",
"Hide read receipts": "Cacher les accusés de lecture",
"Hide Text Formatting Toolbar": "Cacher la barre de formatage de texte",
"Historical": "Historique",
- "Homeserver is": "Le homeserver est",
+ "Homeserver is": "Le serveur d'accueil est",
"Identity Server is": "Le serveur d'identité est",
"I have verified my email address": "J’ai vérifié mon adresse e-mail",
- "Import E2E room keys": "Importer les clés de chiffrement de bout-en-bout",
+ "Import E2E room keys": "Importer les clés de chiffrement de bout en bout",
"Incorrect verification code": "Code de vérification incorrect",
"Interface Language": "Langue de l'interface",
- "Invalid alias format": "Format de l'alias invalide",
- "Invalid address format": "Format d'adresse invalide",
- "Invalid Email Address": "Adresse e-mail invalide",
+ "Invalid alias format": "Format d'alias non valide",
+ "Invalid address format": "Format d'adresse non valide",
+ "Invalid Email Address": "Adresse e-mail non valide",
"%(senderName)s invited %(targetName)s.": "%(senderName)s a invité %(targetName)s.",
"Invite new room members": "Inviter de nouveaux membres",
"Invited": "Invités",
"Invites": "Invitations",
- "Invites user with given id to current room": "Inviter l’utilisateur avec un ID donné dans le salon actuel",
- "is a": "est un",
+ "Invites user with given id to current room": "Invite un utilisateur dans le salon actuel à partir de son identifiant",
"'%(alias)s' is not a valid format for an address": "'%(alias)s' n'est pas un format valide pour une adresse",
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' n'est pas un format valide pour un alias",
- "%(displayName)s is typing": "%(displayName)s est en train d'écrire",
- "Sign in with": "Je veux m'identifier avec",
+ "%(displayName)s is typing": "%(displayName)s écrit",
+ "Sign in with": "Se connecter avec",
"Join Room": "Rejoindre le salon",
- "joined and left": "a rejoint et quitté",
- "joined": "a rejoint",
"%(targetName)s joined the room.": "%(targetName)s a rejoint le salon.",
- "Joins room with given alias": "Rejoint le salon avec l'alias défini",
- "%(senderName)s kicked %(targetName)s.": "%(senderName)s a expulsé %(targetName)s.",
- "Kick": "Expulser",
- "Kicks user with given id": "Expulse l'utilisateur avec l'ID donné",
+ "Joins room with given alias": "Rejoint le salon avec l'alias renseigné",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s a exclu %(targetName)s.",
+ "Kick": "Exclure",
+ "Kicks user with given id": "Exclut l'utilisateur à partir de son identifiant",
"Labs": "Laboratoire",
"Leave room": "Quitter le salon",
- "left and rejoined": "a quitté et rejoint",
- "left": "a quitté",
"%(targetName)s left the room.": "%(targetName)s a quitté le salon.",
- "Level": "Niveau",
- "Local addresses for this room:": "Adresse locale pour ce salon :",
+ "Local addresses for this room:": "Adresses locales pour ce salon :",
"Logged in as:": "Identifié en tant que :",
- "Login as guest": "S'identifier en tant que visiteur",
+ "Login as guest": "Se connecter en tant que visiteur",
"Logout": "Se déconnecter",
"Low priority": "Priorité basse",
"%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s a rendu l'historique visible à tous les membres du salon, depuis le moment où ils ont été invités.",
@@ -214,11 +189,11 @@
"%(senderName)s made future room history visible to anyone.": "%(senderName)s a rendu l'historique visible à n'importe qui.",
"%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s a rendu l'historique visible à inconnu (%(visibility)s).",
"Manage Integrations": "Gestion des intégrations",
- "Markdown is disabled": "Le formatage \"Markdown\" est désactivé",
- "Markdown is enabled": "Le formatage “Markdown” est activé",
- "matrix-react-sdk version:": "Version du matrix-react-sdk :",
+ "Markdown is disabled": "Le formatage Markdown est désactivé",
+ "Markdown is enabled": "Le formatage Markdown est activé",
+ "matrix-react-sdk version:": "Version de matrix-react-sdk :",
"Members only": "Membres uniquement",
- "Message not sent due to unknown devices being present": "Message non-envoyé à cause de la présence d’appareils non-vérifiés",
+ "Message not sent due to unknown devices being present": "Message non envoyé à cause de la présence d’appareils inconnus",
"Missing room_id in request": "Absence du room_id dans la requête",
"Missing user_id in request": "Absence du user_id dans la requête",
"Mobile phone number": "Numéro de téléphone mobile",
@@ -226,9 +201,8 @@
"Must be viewing a room": "Doit être en train de visualiser un salon",
"%(serverName)s Matrix ID": "%(serverName)s identifiant Matrix",
"Name": "Nom",
- "Never send encrypted messages to unverified devices from this device": "Ne jamais envoyer de message chiffré aux appareils non-vérifiés depuis cet appareil",
- "Never send encrypted messages to unverified devices in this room": "Ne jamais envoyer de message chiffré aux appareils non-vérifiés dans ce salon",
- "Never send encrypted messages to unverified devices in this room from this device": "Ne jamais envoyer de message chiffré aux appareils non-vérifiés dans ce salon depuis cet appareil",
+ "Never send encrypted messages to unverified devices from this device": "Ne jamais envoyer de message chiffré aux appareils non vérifiés depuis cet appareil",
+ "Never send encrypted messages to unverified devices in this room from this device": "Ne jamais envoyer de message chiffré aux appareils non vérifiés dans ce salon depuis cet appareil",
"New address (e.g. #foo:%(localDomain)s)": "Nouvelle adresse (par ex. #foo:%(localDomain)s)",
"New password": "Nouveau mot de passe",
"New passwords don't match": "Les mots de passe ne correspondent pas",
@@ -241,12 +215,11 @@
"NOT verified": "NON vérifié",
"No devices with registered encryption keys": "Pas d’appareil avec des clés de chiffrement enregistrées",
"No more results": "Fin des résultats",
- "No results": "Pas de résultats",
- "unknown error code": "Code erreur inconnu",
+ "No results": "Pas de résultat",
+ "unknown error code": "Code d'erreur inconnu",
"OK": "OK",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Une fois le chiffrement activé dans un salon il ne peut pas être désactivé (pour le moment)",
"Only people who have been invited": "Seul les personnes ayant été invitées",
- "or": "ou",
"Password": "Mot de passe",
"Passwords can't be empty": "Le mot de passe ne peut pas être vide",
"People": "Personnes",
@@ -254,51 +227,49 @@
"Phone": "Numéro de téléphone",
"Operation failed": "L'opération a échoué",
"Bulk Options": "Options de masse",
- "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Changer le mot de passe réinitialise actuellement les clés de chiffrement sur tous les appareils, rendant l’historique chiffré illisible, à moins d’exporter les clés du salon en avance de phase puis de les ré-importer. Ceci sera amélioré prochainement.",
+ "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Pour le moment, changer le mot de passe réinitialise les clés de chiffrement sur tous les appareils, rendant l’historique des discussions chiffrées illisible, à moins d’exporter d'abord les clés de salon puis de les ré-importer. Ceci sera amélioré prochainement.",
"Default": "Par défaut",
"Email address": "Adresse e-mail",
"Error decrypting attachment": "Erreur lors du déchiffrement de la pièce jointe",
- "Failed to set avatar.": "Erreur lors de la définition de la photo de profil.",
- "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Par sécurité une déconnexion supprimera toutes les clés de chiffrement de ce navigateur. Si vous voulez être capable de déchiffrer l’historique de votre conversation lors de sessions futures de Riot, merci d’exporter les clés pour le salon.",
- "Guests cannot join this room even if explicitly invited.": "Les visiteurs ne peuvent rejoindre ce salon, même si explicitement invités.",
- "Invalid file%(extra)s": "Fichier %(extra)s invalide",
- "Mute": "Couper le son",
+ "Failed to set avatar.": "Échec de la définition de l'avatar.",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Par mesure de sécurité une déconnexion supprimera toutes les clés de chiffrement de ce navigateur. Si vous voulez être capable de déchiffrer l’historique de votre conversation lors des prochaines sessions de Riot, veuillez exporter les clés de salon pour les garder en lieu sûr.",
+ "Guests cannot join this room even if explicitly invited.": "Les visiteurs ne peuvent pas rejoindre ce salon, même s'ils ont été explicitement invités.",
+ "Invalid file%(extra)s": "Fichier %(extra)s non valide",
+ "Mute": "Mettre en sourdine",
"No users have specific privileges in this room": "Aucun utilisateur n’a de privilège spécifique dans ce salon",
"olm version:": "version de olm :",
"Once you've followed the link it contains, click below": "Une fois que vous aurez suivi le lien qu’il contient, cliquez ci-dessous",
- "%(senderName)s placed a %(callType)s call.": "%(senderName)s a placé un appel %(callType)s.",
+ "%(senderName)s placed a %(callType)s call.": "%(senderName)s a passé un appel %(callType)s.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Veuillez vérifier vos e-mails et cliquer sur le lien que vous avez reçu. Puis cliquez sur continuer.",
"Power level must be positive integer.": "Le niveau d'autorité doit être un entier positif.",
"Privacy warning": "Alerte de confidentialité",
- "Privileged Users": "Utilisateur privilégié",
+ "Privileged Users": "Utilisateurs privilégiés",
"Profile": "Profil",
"Reason": "Raison",
"Revoke Moderator": "Révoquer le modérateur",
"Refer a friend to Riot:": "Recommander Riot à un ami :",
- "rejected": "rejeté",
"%(targetName)s rejected the invitation.": "%(targetName)s a rejeté l’invitation.",
"Reject invitation": "Rejeter l'invitation",
"Remove Contact Information?": "Supprimer les informations du contact ?",
- "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s a supprimé son nom d’affichage (%(oldDisplayName)s).",
- "%(senderName)s removed their profile picture.": "%(senderName)s a supprimé sa photo de profil.",
+ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s a supprimé son nom affiché (%(oldDisplayName)s).",
+ "%(senderName)s removed their profile picture.": "%(senderName)s a supprimé son image de profil.",
"Remove %(threePid)s?": "Supprimer %(threePid)s ?",
- "%(senderName)s requested a VoIP conference.": "%(senderName)s a demandé une conférence audio.",
+ "%(senderName)s requested a VoIP conference.": "%(senderName)s a demandé une téléconférence audio.",
"Report it": "Le signaler",
- "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Réinitialiser le mot de passe va réinitialiser les clés de chiffrement sur tous les appareils, rendant l’historique chiffré illisible, à moins que vous ayez exporté les clés du salon en avance de phase puis que vous les ré-importiez. Cela sera amélioré prochainement.",
- "restore": "restaurer",
+ "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Pour le moment, réinitialiser le mot de passe va réinitialiser les clés de chiffrement sur tous les appareils, rendant l’historique des salons chiffrés illisible, à moins que vous exportiez d'abord les clés de salon puis que vous les ré-importiez après. Cela sera amélioré prochainement.",
"Return to app": "Retourner à l’application",
- "Return to login screen": "Retourner à l’écran d’identification",
+ "Return to login screen": "Retourner à l’écran de connexion",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot n’a pas la permission de vous envoyer des notifications - merci de vérifier les paramètres de votre navigateur",
- "Riot was not given permission to send notifications - please try again": "Riot n’a pas reçu la permission de vous envoyer des notifications - merci d’essayer à nouveau",
+ "Riot was not given permission to send notifications - please try again": "Riot n’a pas reçu la permission de vous envoyer des notifications - veuillez réessayer",
"riot-web version:": "Version de riot-web :",
"Room %(roomId)s not visible": "Le salon %(roomId)s n'est pas visible",
"Room Colour": "Couleur du salon",
"Room name (optional)": "Nom du salon (facultatif)",
"Rooms": "Salons",
"Scroll to bottom of page": "Aller en bas de la page",
- "Scroll to unread messages": "Aller aux messages non-lus",
+ "Scroll to unread messages": "Aller aux messages non lus",
"Search": "Rechercher",
- "Search failed": "Erreur lors de la recherche",
+ "Search failed": "Échec de la recherche",
"Searches DuckDuckGo for results": "Recherche des résultats dans DuckDuckGo",
"Send a message (unencrypted)": "Envoyer un message (non chiffré)",
"Send an encrypted message": "Envoyer un message chiffré",
@@ -313,56 +284,48 @@
"Server may be unavailable or overloaded": "Le serveur semble être inaccessible ou surchargé",
"Server may be unavailable, overloaded, or search timed out :(": "Le serveur semble être inaccessible, surchargé ou la recherche a expiré :(",
"Server may be unavailable, overloaded, or the file too big": "Le serveur semble être inaccessible, surchargé ou le fichier est trop volumineux",
- "Server may be unavailable, overloaded, or you hit a bug.": "Le serveur semble être indisponible, surchargé, ou vous avez rencontré un problème.",
+ "Server may be unavailable, overloaded, or you hit a bug.": "Le serveur semble être indisponible, surchargé ou vous avez rencontré un problème.",
"Server unavailable, overloaded, or something else went wrong.": "Le serveur semble être inaccessible, surchargé ou quelque chose s'est mal passé.",
"Session ID": "Identifiant de session",
- "%(senderName)s set a profile picture.": "%(senderName)s a défini une photo de profil.",
- "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s a défini son nom d’affichage comme %(displayName)s.",
+ "%(senderName)s set a profile picture.": "%(senderName)s a défini une image de profil.",
+ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s a défini son nom affiché comme %(displayName)s.",
"Show panel": "Dévoiler le panneau",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Afficher l’heure au format am/pm (par ex. 2:30pm)",
"Signed Out": "Déconnecté",
- "Sign in": "S'identifier",
+ "Sign in": "Se connecter",
"Sign out": "Se déconnecter",
"since the point in time of selecting this option": "depuis le moment où cette option a été sélectionnée",
"since they joined": "depuis qu’ils ont rejoint le salon",
"since they were invited": "depuis qu’ils ont été invités",
"Some of your messages have not been sent.": "Certains de vos messages n’ont pas été envoyés.",
"Someone": "Quelqu'un",
- "Sorry, this homeserver is using a login which is not recognised ": "Désolé, ce homeserver utilise un identifiant qui n’est pas reconnu ",
- "Start a chat": "Démarrer une discussion",
- "Start Chat": "Démarrer une discussion",
+ "Sorry, this homeserver is using a login which is not recognised ": "Désolé, ce serveur d'accueil utilise un identifiant qui n’est pas reconnu ",
+ "Start a chat": "Commencer une discussion",
+ "Start Chat": "Commencer une discussion",
"Submit": "Soumettre",
"Success": "Succès",
- "tag direct chat": "marquer comme discussion directe",
"The default role for new room members is": "Le rôle par défaut des nouveaux membres est",
"The main address for this room is": "L'adresse principale pour ce salon est",
"This email address is already in use": "Cette adresse e-mail est déjà utilisée",
"This email address was not found": "Cette adresse e-mail n’a pas été trouvée",
"%(actionVerb)s this person?": "%(actionVerb)s cette personne ?",
- "The email address linked to your account must be entered.": "L’adresse e-mail liée à votre compte doit être entrée.",
- "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Le fichier '%(fileName)s' dépasse la taille limite autorisée pour les téléchargements sur ce homeserver",
- "The file '%(fileName)s' failed to upload": "Le fichier '%(fileName)s' n’a pas pu être téléchargé",
+ "The email address linked to your account must be entered.": "L’adresse e-mail liée à votre compte doit être renseignée.",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Le fichier '%(fileName)s' dépasse la taille limite autorisée pour les envois sur ce serveur d'accueil",
+ "The file '%(fileName)s' failed to upload": "Le fichier '%(fileName)s' n’a pas pu être envoyé",
"The remote side failed to pick up": "Le correspondant n’a pas décroché",
"This room has no local addresses": "Ce salon n'a pas d'adresse locale",
- "This room is not recognised.": "Ce salon n'a pas été reconnu.",
- "These are experimental features that may break in unexpected ways": "Ces fonctionnalités sont expérimentales et risquent de mal fonctionner",
- "The visibility of existing history will be unchanged": "La visibilité de l’historique existant sera inchangée",
- "This doesn't appear to be a valid email address": "Cette adresse n’a pas l’air d’être valide",
- "this invitation?": "cette invitation ?",
+ "This room is not recognised.": "Ce salon n'est pas reconnu.",
+ "These are experimental features that may break in unexpected ways": "Ce sont des fonctionnalités expérimentales qui peuvent créer des problèmes inattendus",
+ "The visibility of existing history will be unchanged": "La visibilité de l’historique existant restera inchangée",
+ "This doesn't appear to be a valid email address": "Cette adresse e-mail ne semble pas valide",
"This is a preview of this room. Room interactions have been disabled": "Ceci est un aperçu du salon. Les interactions avec le salon ont été désactivées",
- "This phone number is already in use": "Ce numéro de téléphone est déja utilisé",
+ "This phone number is already in use": "Ce numéro de téléphone est déjà utilisé",
"This room is not accessible by remote Matrix servers": "Ce salon n’est pas accessible par les serveurs Matrix distants",
"This room's internal ID is": "L'identifiant interne de ce salon est",
- "times": "fois",
- "to browse the directory": "pour parcourir le répertoire",
"to demote": "pour réduire la priorité",
"to favourite": "pour marquer comme favori",
- "to join the discussion": "pour rejoindre la discussion",
- "To link to a room it must have": "Pour avoir un lien vers un salon, il doit avoir",
- "to make a room or": "pour créer un salon ou",
"To reset your password, enter the email address linked to your account": "Pour réinitialiser votre mot de passe, merci d’entrer l’adresse e-mail liée à votre compte",
"to restore": "pour restaurer",
- "to start a chat with someone": "pour démarrer une discussion avec quelqu’un",
"to tag direct chat": "pour marquer comme conversation directe",
"To use it, just wait for autocomplete results to load and tab through them.": "Pour l’utiliser, attendez simplement que les résultats de l’auto-complétion s’affichent et défilez avec la touche Tab.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Un instant donné de la chronologie n’a pu être chargé car vous n’avez pas la permission de le visualiser.",
@@ -373,11 +336,11 @@
"Unable to add email address": "Impossible d'ajouter l'adresse e-mail",
"Unable to remove contact information": "Impossible de supprimer les informations du contact",
"Unable to verify email address.": "Impossible de vérifier l’adresse e-mail.",
- "Unban": "Amnistier (annuler le bannissement)",
- "%(senderName)s unbanned %(targetName)s.": "%(senderName)s a amnistié %(targetName)s.",
+ "Unban": "Révoquer le bannissement",
+ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s a révoqué le bannissement de %(targetName)s.",
"Unable to capture screen": "Impossible de capturer l'écran",
"Unable to enable Notifications": "Impossible d'activer les notifications",
- "Unable to load device list": "Impossible de charger la liste d'appareils",
+ "Unable to load device list": "Impossible de charger la liste des appareils",
"Unencrypted room": "Salon non chiffré",
"unencrypted": "non chiffré",
"unknown device": "appareil inconnu",
@@ -395,43 +358,39 @@
"User name": "Nom d'utilisateur",
"Users": "Utilisateurs",
"User": "Utilisateur",
- "Verification Pending": "Vérification en cours",
+ "Verification Pending": "Vérification en attente",
"Verification": "Vérification",
"verified": "vérifié",
"Video call": "Appel vidéo",
"Voice call": "Appel vocal",
- "VoIP conference finished.": "Conférence audio terminée.",
- "VoIP conference started.": "Conférence audio démarrée.",
- "VoIP is unsupported": "Appels voix non supportés",
- "(warning: cannot be disabled again!)": "(attention : ne peut être désactivé !)",
+ "VoIP conference finished.": "Téléconférence VoIP terminée.",
+ "VoIP conference started.": "Téléconférence VoIP démarrée.",
+ "VoIP is unsupported": "Voix sur IP non supportée",
+ "(warning: cannot be disabled again!)": "(attention : ne peut pas être désactivé !)",
"Warning!": "Attention !",
"Who can access this room?": "Qui peut accéder au salon ?",
"Who can read history?": "Qui peut lire l'historique ?",
- "Who would you like to add to this room?": "Qui voulez-vous inviter dans ce salon ?",
+ "Who would you like to add to this room?": "Qui voulez-vous ajouter à ce salon ?",
"Who would you like to communicate with?": "Avec qui voulez-vous communiquer ?",
- "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s a révoqué l’invitation de %(targetName)s.",
- "Would you like to": "Voulez-vous",
- "You are already in a call.": "Vous êtes déjà dans un appel.",
- "You're not in any rooms yet! Press": "Vous n’êtes dans aucun salon ! Cliquez",
+ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s a annulé l’invitation de %(targetName)s.",
+ "You are already in a call.": "Vous avez déjà un appel en cours.",
"You are trying to access %(roomName)s.": "Vous essayez d'accéder à %(roomName)s.",
"You cannot place a call with yourself.": "Vous ne pouvez pas passer d'appel avec vous-même.",
- "You cannot place VoIP calls in this browser.": "Vous ne pouvez pas passer d'appel vocal dans ce navigateur.",
+ "You cannot place VoIP calls in this browser.": "Vous ne pouvez pas passer d'appel en Voix sur IP dans ce navigateur.",
"You do not have permission to post to this room": "Vous n’avez pas la permission de poster dans ce salon",
- "You have been invited to join this room by %(inviterName)s": "Vous avez été invité à joindre ce salon par %(inviterName)s",
- "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Vous avez été déconnecté de tous vos appareils et ne recevrez plus de notifications. Pour réactiver les notifications, identifiez vous à nouveau sur tous les appareils",
- "You have no visible notifications": "Vous n'avez pas de notifications visibles",
- "you must be a": "vous devez être un",
+ "You have been invited to join this room by %(inviterName)s": "Vous avez été invité(e) à rejoindre ce salon par %(inviterName)s",
+ "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Vous avez été déconnecté de tous vos appareils et ne recevrez plus de notifications. Pour réactiver les notifications, reconnectez-vous sur tous les appareils",
+ "You have no visible notifications": "Vous n'avez pas de notification visible",
"You need to be able to invite users to do that.": "Vous devez être capable d’inviter des utilisateurs pour faire ça.",
"You need to be logged in.": "Vous devez être identifié.",
"You need to enter a user name.": "Vous devez entrer un nom d’utilisateur.",
- "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Vous devez vous connecter à nouveau pour générer les clés de chiffrement pour cet appareil, et soumettre la clé publique à votre homeserver. Cette action ne se reproduira pas ; veuillez nous excuser pour la gêne occasionnée.",
- "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Votre adresse e-mail ne semble pas associée à un identifiant Matrix sur ce homeserver.",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Votre adresse e-mail ne semble pas être associée à un identifiant Matrix sur ce serveur d'accueil.",
"Your password has been reset": "Votre mot de passe a été réinitialisé",
- "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Votre mot de passe a été mis à jour avec succès. Vous ne recevrez plus de notification sur vos appareils jusqu’à ce que vous vous identifiez à nouveau",
- "You seem to be in a call, are you sure you want to quit?": "Vous semblez avoir un appel en cours, êtes-vous sûr(e) de vouloir quitter ?",
- "You seem to be uploading files, are you sure you want to quit?": "Vous semblez être en train de télécharger des fichiers, êtes-vous sûr(e) de vouloir quitter ?",
+ "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Votre mot de passe a été mis à jour avec succès. Vous ne recevrez plus de notification sur vos autres appareils jusqu’à ce que vous vous identifiez à nouveau",
+ "You seem to be in a call, are you sure you want to quit?": "Vous semblez avoir un appel en cours, voulez-vous vraiment partir ?",
+ "You seem to be uploading files, are you sure you want to quit?": "Vous semblez être en train d'envoyer des fichiers, voulez-vous vraiment partir ?",
"You should not yet trust it to secure data": "Vous ne pouvez pas encore lui faire confiance pour sécuriser vos données",
- "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Vous ne pourrez pas annuler ce changement car vous promouvez l’utilisateur au même niveau d'autorité que le vôtre.",
+ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Vous ne pourrez pas annuler cette modification car vous promouvez l’utilisateur au même rang que le vôtre.",
"Sun": "Dim",
"Mon": "Lun",
"Tue": "Mar",
@@ -440,29 +399,29 @@
"Fri": "Ven",
"Sat": "Sam",
"Jan": "Jan",
- "Feb": "Fev",
+ "Feb": "Fév",
"Mar": "Mar",
"Apr": "Avr",
"May": "Mai",
- "Jun": "Jun",
- "Jul": "Jul",
- "Aug": "Aou",
+ "Jun": "Juin",
+ "Jul": "Juil",
+ "Aug": "Aoû",
"Sep": "Sep",
"Oct": "Oct",
"Nov": "Nov",
- "Dec": "Dec",
+ "Dec": "Déc",
"%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s %(day)s %(monthName)s %(time)s",
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s %(day)s %(monthName)s %(fullYear)s %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
- "Set a display name:": "Définir un nom d’affichage :",
- "Upload an avatar:": "Télécharger une photo de profil :",
- "This server does not support authentication with a phone number.": "Ce serveur ne supporte pas l’identification avec un numéro de téléphone.",
+ "Set a display name:": "Définir le nom affiché :",
+ "Upload an avatar:": "Envoyer un avatar :",
+ "This server does not support authentication with a phone number.": "Ce serveur ne prend pas en charge l’authentification avec un numéro de téléphone.",
"Missing password.": "Mot de passe manquant.",
"Passwords don't match.": "Les mots de passe ne correspondent pas.",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Mot de passe trop court (min %(MIN_PASSWORD_LENGTH)s).",
- "This doesn't look like a valid email address.": "Cela ne semble pas être une adresse e-mail valide.",
- "This doesn't look like a valid phone number.": "Cela ne semble pas être un numéro de téléphone valide.",
- "User names may only contain letters, numbers, dots, hyphens and underscores.": "Les noms d’utilisateurs ne peuvent contenir que des lettres, chiffres, points et tirets hauts ou bas.",
+ "This doesn't look like a valid email address.": "Cette adresse e-mail ne semble pas valide.",
+ "This doesn't look like a valid phone number.": "Ce numéro de téléphone ne semble pas valide.",
+ "User names may only contain letters, numbers, dots, hyphens and underscores.": "Les noms d’utilisateurs ne peuvent contenir que des lettres, des chiffres, des points, des traits d'union et des tirets bas.",
"An unknown error occurred.": "Une erreur inconnue est survenue.",
"I already have an account": "J’ai déjà un compte",
"An error occurred: %(error_string)s": "Une erreur est survenue : %(error_string)s",
@@ -474,16 +433,12 @@
"There are no visible files in this room": "Il n'y a pas de fichier visible dans ce salon",
"Room": "Salon",
"Connectivity to the server has been lost.": "La connectivité au serveur a été perdue.",
- "Sent messages will be stored until your connection has returned.": "Les messages envoyés seront stockés jusqu’à ce que votre connection revienne.",
- "Resend all": "Tout renvoyer",
- "(~%(searchCount)s results)": "(~%(searchCount)s résultats)",
+ "Sent messages will be stored until your connection has returned.": "Les messages envoyés seront stockés jusqu’à ce que votre connexion revienne.",
"Cancel": "Annuler",
- "cancel all": "tout annuler",
- "now. You can also select individual messages to resend or cancel.": "maintenant. Vous pouvez aussi sélectionner individuellement les messages que vous voulez renvoyer ou annuler.",
"Active call": "Appel en cours",
"code": "code",
"quote": "citer",
- "bullet": "puce",
+ "bullet": "liste à puces",
"numbullet": "liste numérotée",
"%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)sont rejoint le salon %(repeats)s fois",
"%(oneUser)sjoined %(repeats)s times": "%(oneUser)sa rejoint le salon %(repeats)s fois",
@@ -492,80 +447,80 @@
"%(severalUsers)sleft %(repeats)s times": "%(severalUsers)sont quitté le salon %(repeats)s fois",
"%(oneUser)sleft %(repeats)s times": "%(oneUser)sa quitté le salon %(repeats)s fois",
"%(severalUsers)sleft": "%(severalUsers)sont quitté le salon",
- "%(oneUser)sleft": "%(oneUser)sont quitté le salon",
+ "%(oneUser)sleft": "%(oneUser)sa quitté le salon",
"%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers)sont rejoint et quitté le salon %(repeats)s fois",
"%(oneUser)sjoined and left %(repeats)s times": "%(oneUser)sa rejoint et quitté le salon%(repeats)s fois",
"%(severalUsers)sjoined and left": "%(severalUsers)sont rejoint et quitté le salon",
"%(oneUser)sjoined and left": "%(oneUser)sa rejoint et quitté le salon",
- "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)sont quitté et à nouveau joint le salon %(repeats)s fois",
- "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)sa quitté et à nouveau joint le salon %(repeats)s fois",
- "%(severalUsers)sleft and rejoined": "%(severalUsers)sont quitté et à nouveau joint le salon",
- "%(oneUser)sleft and rejoined": "%(oneUser)sa quitté et à nouveau joint le salon",
- "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)sont rejeté leurs invitations %(repeats)s fois",
+ "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)sont quitté et sont revenus dans le salon %(repeats)s fois",
+ "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)sa quitté et est revenu dans le salon %(repeats)s fois",
+ "%(severalUsers)sleft and rejoined": "%(severalUsers)sont quitté et sont revenus dans le salon",
+ "%(oneUser)sleft and rejoined": "%(oneUser)sa quitté et est revenu dans le salon",
+ "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)sont rejeté leur invitation %(repeats)s fois",
"%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)sa rejeté son invitation %(repeats)s fois",
"%(severalUsers)srejected their invitations": "%(severalUsers)sont rejeté leur invitation",
"%(oneUser)srejected their invitation": "%(oneUser)sa rejeté son invitation",
- "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)sont vu leur invitation rétractée %(repeats)s fois",
- "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)sa vu son invitation rétractée %(repeats)s fois",
- "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)sont vu leur invitation rétractée",
- "%(oneUser)shad their invitation withdrawn": "%(oneUser)sa vu son invitation rétractée",
+ "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)sont vu leur invitation révoquée %(repeats)s fois",
+ "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)sa vu son invitation révoquée %(repeats)s fois",
+ "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)sont vu leur invitation révoquée",
+ "%(oneUser)shad their invitation withdrawn": "%(oneUser)sa vu son invitation révoquée",
"were invited %(repeats)s times": "ont été invité(e)s %(repeats)s fois",
"was invited %(repeats)s times": "a été invité(e) %(repeats)s fois",
"were invited": "ont été invité(e)s",
"were banned %(repeats)s times": "ont été banni(e)s %(repeats)s fois",
- "was banned %(repeats)s times": "été banni(e) %(repeats)s fois",
+ "was banned %(repeats)s times": "a été banni(e) %(repeats)s fois",
"were banned": "ont été banni(e)s",
- "were unbanned %(repeats)s times": "ont été amnistié(e)s %(repeats)s fois",
- "was unbanned %(repeats)s times": "a été amnistié(e) %(repeats)s fois",
- "were unbanned": "ont été amnistié(e)s",
- "were kicked %(repeats)s times": "ont été expulsé(e)s %(repeats)s fois",
- "was kicked %(repeats)s times": "a été expulsé(e) %(repeats)s fois",
- "were kicked": "ont été expulsé(e)s",
+ "were unbanned %(repeats)s times": "ont vu leur bannissement révoqué %(repeats)s fois",
+ "was unbanned %(repeats)s times": "a vu son bannissement révoqué %(repeats)s fois",
+ "were unbanned": "ont vu leur bannissement révoqué",
+ "were kicked %(repeats)s times": "ont été exclu(e)s %(repeats)s fois",
+ "was kicked %(repeats)s times": "a été exclu(e) %(repeats)s fois",
+ "were kicked": "ont été exclu(e)s",
"%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)sont changé leur nom %(repeats)s fois",
"%(oneUser)schanged their name %(repeats)s times": "%(oneUser)sa changé son nom %(repeats)s fois",
"%(severalUsers)schanged their name": "%(severalUsers)sont changé leur nom",
"%(oneUser)schanged their name": "%(oneUser)sa changé son nom",
- "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)sont changé leur photo de profil %(repeats)s fois",
- "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)sa changé sa photo de profil %(repeats)s fois",
- "%(severalUsers)schanged their avatar": "%(severalUsers)sont changé leur photo de profil",
- "%(oneUser)schanged their avatar": "%(oneUser)sa changé sa photo de profil",
- "Please select the destination room for this message": "Merci de sélectionner un salon de destination pour ce message",
+ "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)sont changé leur avatar %(repeats)s fois",
+ "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)sa changé son avatar %(repeats)s fois",
+ "%(severalUsers)schanged their avatar": "%(severalUsers)sont changé leur avatar",
+ "%(oneUser)schanged their avatar": "%(oneUser)sa changé son avatar",
+ "Please select the destination room for this message": "Merci de sélectionner le salon de destination pour ce message",
"%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s a supprimé le nom du salon.",
- "Analytics": "Outils d'analyse",
- "Opt out of analytics": "Refuser de participer",
- "Riot collects anonymous analytics to allow us to improve the application.": "Riot recueille des données anonymes qui nous permettent d’analyser et améliorer l’application.",
- "Passphrases must match": "Les phrases secrètes doivent être identiques",
- "Passphrase must not be empty": "La phrase secrète ne doit pas être vide",
- "Export room keys": "Exporter les clés du salon",
- "Enter passphrase": "Entrer la phrase secrète",
- "Confirm passphrase": "Confirmer la phrase secrète",
- "Import room keys": "Importer les clés du salon",
+ "Analytics": "Collecte de données",
+ "Opt out of analytics": "Ne pas envoyer ses données",
+ "Riot collects anonymous analytics to allow us to improve the application.": "Riot collecte des données anonymes qui nous permettent d’améliorer l’application.",
+ "Passphrases must match": "Les phrases de passe doivent être identiques",
+ "Passphrase must not be empty": "La phrase de passe ne peut pas être vide",
+ "Export room keys": "Exporter les clés de salon",
+ "Enter passphrase": "Saisir la phrase de passe",
+ "Confirm passphrase": "Confirmer la phrase de passe",
+ "Import room keys": "Importer les clés de salon",
"File to import": "Fichier à importer",
"This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Ce processus vous permet d’exporter dans un fichier local les clés pour les messages que vous avez reçus dans des salons chiffrés. Il sera ensuite possible d’importer ce fichier dans un autre client Matrix, afin de permettre à ce client de pouvoir déchiffrer ces messages.",
- "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Le fichier exporté permettra à tout ceux qui peuvent le lire de déchiffrer tous les messages chiffrés auxquels vous avez accès, vous devez donc être vigilant et le stocker dans un endroit sûr. Afin de protéger ce fichier, entrez ci-dessous une phrase secrète qui sera utilisée pour chiffrer les données exportées. Seule l’utilisation de la même phrase secrète permettra de déchiffrer et importer les données.",
- "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Ce processus vous permet d’importer les clés de chiffrement que vous avez précédemment exportées depuis un autre client Matrix. Vous serez alors capable de déchiffrer n’importe quel messages que l’autre client peut déchiffer.",
- "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Le fichier exporté est protégé par une phrase secrète. Vous devez entrer cette phrase secrète ici pour déchiffrer le fichier.",
- "You must join the room to see its files": "Vous devez joindre le salon pour voir ses fichiers",
+ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Le fichier exporté permettra à tous ceux qui peuvent le lire de déchiffrer tous les messages chiffrés auxquels vous avez accès, vous devez donc être vigilant et le stocker dans un endroit sûr. Afin de protéger ce fichier, saisissez ci-dessous une phrase secrète qui sera utilisée pour chiffrer les données exportées. Seule l’utilisation de la même phrase secrète permettra de déchiffrer et importer les données.",
+ "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Ce processus vous permet d’importer les clés de chiffrement que vous avez précédemment exportées depuis un autre client Matrix. Vous serez alors capable de déchiffrer n’importe quel message que l’autre client pouvait déchiffrer.",
+ "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Le fichier exporté est protégé par une phrase de passe. Vous devez saisir cette phrase de passe ici pour déchiffrer le fichier.",
+ "You must join the room to see its files": "Vous devez rejoindre le salon pour voir ses fichiers",
"Reject all %(invitedRooms)s invites": "Rejeter la totalité des %(invitedRooms)s invitations",
"Start new chat": "Démarrer une nouvelle discussion",
"Failed to invite": "Echec de l'invitation",
"Failed to invite user": "Echec lors de l'invitation de l'utilisateur",
"Failed to invite the following users to the %(roomName)s room:": "Echec lors de l’invitation des utilisateurs suivants dans le salon %(roomName)s :",
"Confirm Removal": "Confirmer la suppression",
- "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Êtes vous sûr de vouloir supprimer cet événement ? Notez que si vous supprimez le changement de nom d’un salon ou la mise à jour du sujet d’un salon, il est possible que le changement soit annulé.",
+ "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Voulez-vous vraiment supprimer cet événement ? Notez que si vous supprimez le changement du nom ou du sujet d’un salon, il est possible que ce changement soit annulé.",
"Unknown error": "Erreur inconnue",
"Incorrect password": "Mot de passe incorrect",
- "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Ceci rendra votre compte inutilisable de manière permanente. Vous ne pourrez pas enregistrer à nouveau le même identifiant utilisateur.",
+ "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Ceci rendra votre compte inutilisable de manière permanente. Vous ne pourrez pas vous réinscrire avec le même identifiant utilisateur.",
"This action is irreversible.": "Cette action est irréversible.",
- "To continue, please enter your password.": "Pour continuer, merci d'entrer votre mot de passe.",
+ "To continue, please enter your password.": "Pour continuer, veuillez saisir votre mot de passe.",
"To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Pour vérifier que vous pouvez faire confiance à cet appareil, merci de contacter son propriétaire par un autre moyen (par ex. en personne ou par téléphone) et demandez lui si la clé qu’il/elle voit dans ses Paramètres Utilisateur pour cet appareil correspond à la clé ci-dessous :",
"Device name": "Nom de l'appareil",
"Device key": "Clé de l'appareil",
- "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Si les clés correspondent, cliquer sur le bouton ’Vérifier’ ci-dessous. Si non, alors quelqu’un d’autre est en train d’intercepter cet appareil et vous devriez certainement cliquer sur le bouton ’Blacklister' (Ajouter à la liste noire) à la place.",
- "In future this verification process will be more sophisticated.": "À l’avenir ce processus de vérification sera simplifié et plus sophistiqué.",
+ "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Si les clés correspondent, cliquer sur le bouton \"Vérifier\" ci-dessous. Sinon quelqu’un d’autre est en train d’intercepter cet appareil et vous devriez certainement cliquer sur le bouton \"Ajouter à la liste noire\" à la place.",
+ "In future this verification process will be more sophisticated.": "À l’avenir ce processus de vérification sera plus sophistiqué.",
"Verify device": "Vérifier cet appareil",
"I verify that the keys match": "J’ai vérifié que les clés correspondaient",
- "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Nous avons rencontré une erreur en essayant de rétablir votre session précédente. Si vous continuez, vous devrez vous identifier à nouveau et l’historique chiffré de vos conversations sera illisible.",
+ "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Nous avons rencontré une erreur en essayant de rétablir votre session précédente. Si vous continuez, vous devrez vous identifier à nouveau et l’historique de vos discussions chiffrées sera illisible.",
"Unable to restore session": "Impossible de restaurer la session",
"If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si vous avez utilisé une version plus récente de Riot précédemment, votre session risque d’être incompatible avec cette version. Fermez cette fenêtre et retournez à la version plus récente.",
"Continue anyway": "Continuer quand même",
@@ -574,53 +529,53 @@
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contient des appareils que vous n'avez encore jamais vus.",
"Unknown devices": "Appareils inconnus",
"Unknown Address": "Adresse inconnue",
- "Unblacklist": "Réhabiliter",
- "Blacklist": "Blacklister",
- "Unverify": "Non-vérifié",
+ "Unblacklist": "Supprimer de la liste noire",
+ "Blacklist": "Ajouter à la liste noire",
+ "Unverify": "Annuler la vérification",
"Verify...": "Vérifier...",
"ex. @bob:example.com": "ex. @bob:exemple.com",
"Add User": "Ajouter l'utilisateur",
- "This Home Server would like to make sure you are not a robot": "Ce homeserver veut vérifier que vous n’êtes pas un robot",
+ "This Home Server would like to make sure you are not a robot": "Ce serveur d'accueil veut vérifier que vous n’êtes pas un robot",
"Sign in with CAS": "S'identifier avec CAS",
"Custom Server Options": "Options de serveur personnalisées",
- "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Vous pouvez utiliser les options de serveur personnalisées pour vous identifier auprès d’un autre serveur Matrix en spécifiant l’URL d’un homeserver différent.",
- "This allows you to use this app with an existing Matrix account on a different home server.": "Cela vous permet d’utiliser l’application avec un compte Matrix existant sur un homeserver différent.",
- "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Vous pouvez également configurer un serveur d’identité différent mais cela risque entre autres d’empêcher les interactions par e-mail avec les autres utilisateurs.",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Vous pouvez utiliser les options de serveur personnalisées pour vous identifier auprès d’un autre serveur Matrix en spécifiant l’URL d’un serveur d'accueil différent.",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "Cela vous permet d’utiliser l’application avec un compte Matrix existant sur un serveur d'accueil différent.",
+ "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Vous pouvez également configurer un serveur d’identité différent mais cela risque entre autres d’empêcher les interactions basées sur l'adresse e-mail avec les autres utilisateurs.",
"Dismiss": "Ignorer",
"Please check your email to continue registration.": "Merci de vérifier votre e-mail afin de continuer votre inscription.",
"Token incorrect": "Jeton incorrect",
- "A text message has been sent to": "Un message texte a été envoyé au",
- "Please enter the code it contains:": "Merci d'entre le code qu'il contient :",
+ "A text message has been sent to": "Un SMS a été envoyé au",
+ "Please enter the code it contains:": "Merci de saisir le code qu'il contient :",
"powered by Matrix": "propulsé par Matrix",
- "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Si vous n’entrez pas d’adresse e-mail, vous ne pourrez pas réinitialiser votre mot de passe. Êtes vous sûr ?",
- "You are registering with %(SelectedTeamName)s": "Vous vous enregistrez auprès de %(SelectedTeamName)s",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Si vous ne renseignez pas d’adresse e-mail, vous ne pourrez pas réinitialiser votre mot de passe. En êtes vous sûr(e) ?",
+ "You are registering with %(SelectedTeamName)s": "Vous vous inscrivez auprès de %(SelectedTeamName)s",
"Default server": "Serveur par défaut",
"Custom server": "Serveur personnalisé",
- "Home server URL": "URL du homeserver",
+ "Home server URL": "URL du serveur d'accueil",
"Identity server URL": "URL du serveur d’identité",
"What does this mean?": "Qu’est ce que cela signifie ?",
"Error decrypting audio": "Erreur lors du déchiffrement de l’audio",
"Error decrypting image": "Erreur lors du déchiffrement de l’image",
- "Image '%(Body)s' cannot be displayed.": "L'image '%(Body)s' ne peut être affichée.",
- "This image cannot be displayed.": "Cette image ne peut être affichée.",
+ "Image '%(Body)s' cannot be displayed.": "L'image \"%(Body)s\" ne peut pas être affichée.",
+ "This image cannot be displayed.": "Cette image ne peut pas être affichée.",
"Error decrypting video": "Erreur lors du déchiffrement de la vidéo",
"Add an Integration": "Ajouter une intégration",
- "URL Previews": "Aperçus d'URL",
- "Disable URL previews by default for participants in this room": "Désactiver les aperçus d'URL par défaut pour les participants de ce salon",
- "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "Les aperçus d'URL sont %(globalDisableUrlPreview)s par défaut pour les participants de ce salon.",
- "Enable URL previews for this room (affects only you)": "Activer les aperçus d'URL pour ce salon (n'affecte que vous)",
- "Drop file here to upload": "Déposer le fichier ici pour le télécharger",
- " (unsupported)": " (non supporté)",
- "Ongoing conference call%(supportedText)s.": "Appel conférence en cours%(supportedText)s.",
+ "URL Previews": "Aperçus des liens",
+ "Disable URL previews by default for participants in this room": "Désactiver les aperçus des liens par défaut pour les participants de ce salon",
+ "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "Les aperçus des liens sont %(globalDisableUrlPreview)s par défaut pour les participants de ce salon.",
+ "Enable URL previews for this room (affects only you)": "Activer les aperçus des liens pour ce salon (n'affecte que vous)",
+ "Drop file here to upload": "Déposer le fichier ici pour l'envoyer",
+ " (unsupported)": " (pas pris en charge)",
+ "Ongoing conference call%(supportedText)s.": "Téléconférence en cours%(supportedText)s.",
"Online": "En ligne",
- "Offline": "Déconnecté",
- "Disable URL previews for this room (affects only you)": "Désactiver les aperçus d'URL pour ce salon (n'affecte que vous)",
+ "Offline": "Hors ligne",
+ "Disable URL previews for this room (affects only you)": "Désactiver les aperçus des liens pour ce salon (n'affecte que vous)",
"Desktop specific": "Spécifique à l'application de bureau",
"Start automatically after system login": "Démarrer automatiquement après la phase d'authentification du système",
"Idle": "Inactif",
- "Jump to first unread message.": "Aller au premier message non-lu.",
+ "Jump to first unread message.": "Aller au premier message non lu.",
"Options": "Options",
- "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Vous êtes sur le point d’accéder à un site tiers afin de pouvoir vous identifier pour utiliser %(integrationsUrl)s. Voulez vous continuer ?",
+ "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Vous êtes sur le point d’accéder à un site tiers afin de pouvoir vous identifier pour utiliser %(integrationsUrl)s. Voulez-vous continuer ?",
"Removed or unknown message type": "Type de message inconnu ou supprimé",
"disabled": "désactivé",
"enabled": "activé",
@@ -628,22 +583,21 @@
"for %(amount)sm": "depuis %(amount)sm",
"for %(amount)sh": "depuis %(amount)sh",
"for %(amount)sd": "depuis %(amount)sj",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName a changé l’image de profil du salon en
",
- "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s a supprimé l’image de profil du salon.",
- "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s a changé l’image de profil de %(roomName)s",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s a changé l’avatar du salon en
",
+ "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s a supprimé l'avatar du salon.",
+ "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s a changé l’avatar de %(roomName)s",
"Device already verified!": "Appareil déjà vérifié !",
"Export": "Exporter",
- "Failed to register as guest:": "Échec de l’inscription en tant que visiteur :",
- "Guest access is disabled on this Home Server.": "L’accès en tant que visiteur est désactivé sur ce homeserver.",
+ "Guest access is disabled on this Home Server.": "L’accès en tant que visiteur est désactivé sur ce serveur d'accueil.",
"Import": "Importer",
"Incorrect username and/or password.": "Nom d’utilisateur et/ou mot de passe incorrect.",
"Results from DuckDuckGo": "Résultats de DuckDuckGo",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Les clés de signature que vous avez transmises correspondent aux clés que vous avez reçues de l’appareil %(deviceId)s de %(userId)s. L’appareil est vérifié.",
"This Home Server does not support login using email address.": "Ce serveur ne supporte pas l’identification par e-mail.",
"Unknown (user, device) pair:": "Couple (utilisateur, appareil) inconnu :",
- "Unrecognised command:": "Commande non-reconnue :",
- "Unrecognised room alias:": "Alias de salon non-reconnu :",
- "Use compact timeline layout": "Utiliser l'affichage compact",
+ "Unrecognised command:": "Commande non reconnue :",
+ "Unrecognised room alias:": "Alias de salon non reconnu :",
+ "Use compact timeline layout": "Utiliser l'affichage compact de l'historique",
"Verified key": "Clé vérifiée",
"WARNING: Device already verified, but keys do NOT MATCH!": "ATTENTION : appareil déjà vérifié mais les clés NE CORRESPONDENT PAS !",
"WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ATTENTION : ERREUR DE VÉRIFICATION DES CLÉS ! La clé de signature pour %(userId)s et l'appareil %(deviceId)s est “%(fprint)s” et ne correspond pas à la clé “%(fingerprint)s” qui a été fournie. Cela peut signifier que vos communications sont interceptées !",
@@ -652,22 +606,22 @@
"No Microphones detected": "Aucun micro détecté",
"No Webcams detected": "Aucune webcam détectée",
"No media permissions": "Pas de permission pour les médias",
- "You may need to manually permit Riot to access your microphone/webcam": "Il est possible que vous deviez manuellement permettre à Riot d’accéder à votre micro/webcam",
+ "You may need to manually permit Riot to access your microphone/webcam": "Il est possible que vous deviez manuellement autoriser Riot à accéder à votre micro/webcam",
"Default Device": "Appareil par défaut",
"Microphone": "Micro",
"Camera": "Caméra",
"Add a topic": "Ajouter un sujet",
"Anyone": "N'importe qui",
- "Are you sure you want to leave the room '%(roomName)s'?": "Êtes-vous sûr de vouloir quitter le salon '%(roomName)s' ?",
- "Custom level": "Niveau personnalisé",
+ "Are you sure you want to leave the room '%(roomName)s'?": "Voulez-vous vraiment quitter le salon \"%(roomName)s\" ?",
+ "Custom level": "Rang personnalisé",
"Device ID:": "Identifiant de l'appareil :",
- "device id: ": "identifiant appareil : ",
+ "device id: ": "identifiant de l'appareil : ",
"Device key:": "Clé de l’appareil :",
"Email address (optional)": "Adresse e-mail (facultatif)",
"Mobile phone number (optional)": "Numéro de téléphone (facultatif)",
"Password:": "Mot de passe :",
"Register": "S'inscrire",
- "Remote addresses for this room:": "Supprimer l'adresse pour ce salon :",
+ "Remote addresses for this room:": "Adresses distantes pour ce salon :",
"Save": "Enregistrer",
"Tagged as: ": "Étiquetter comme : ",
"You have disabled URL previews by default.": "Vous avez désactivé les aperçus d’URL par défaut.",
@@ -679,48 +633,46 @@
"Error: Problem communicating with the given homeserver.": "Erreur : problème de communication avec le homeserver.",
"Failed to fetch avatar URL": "Échec lors de la récupération de l’URL de l’avatar",
"The phone number entered looks invalid": "Le numéro de téléphone entré semble être invalide",
- "This room is private or inaccessible to guests. You may be able to join if you register.": "Ce salon est privé ou interdits aux visiteurs. Vous pourrez peut-être le joindre si vous vous enregistrez.",
- "Uploading %(filename)s and %(count)s others|zero": "Téléchargement de %(filename)s",
- "Uploading %(filename)s and %(count)s others|one": "Téléchargement de %(filename)s et %(count)s autre",
- "Uploading %(filename)s and %(count)s others|other": "Téléchargement de %(filename)s et %(count)s autres",
+ "Uploading %(filename)s and %(count)s others|zero": "Envoi de %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Envoi de %(filename)s et %(count)s autre",
+ "Uploading %(filename)s and %(count)s others|other": "Envoi de %(filename)s et %(count)s autres",
"You must register to use this functionality": "Vous devez vous inscrire pour utiliser cette fonctionnalité",
- "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Tout renvoyer ou tout annuler maintenant. Vous pouvez aussi sélectionner des messages individuels à envoyer ou annuler.",
+ "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Tout renvoyer ou tout annuler maintenant. Vous pouvez aussi sélectionner des messages individuels à renvoyer ou annuler.",
"Create new room": "Créer un nouveau salon",
"Room directory": "Répertoire des salons",
- "Start chat": "Démarrer une discussion",
+ "Start chat": "Commencer une discussion",
"New Password": "Nouveau mot de passe",
- "Start chatting": "Démarrer une discussion",
- "Start Chatting": "Démarrer une discussion",
+ "Start chatting": "Commencer une discussion",
+ "Start Chatting": "Commencer une discussion",
"Click on the button below to start chatting!": "Cliquer sur le bouton ci-dessous pour commencer une discussion !",
- "Create a new chat or reuse an existing one": "Démarrer une nouvelle discussion ou en réutiliser une existante",
- "You already have existing direct chats with this user:": "Vous avez déjà des discussions en cours avec cet utilisateur :",
+ "Create a new chat or reuse an existing one": "Commencer une nouvelle discussion ou en réutiliser une existante",
+ "You already have existing direct chats with this user:": "Vous avez déjà des discussions directes avec cet utilisateur :",
"Username available": "Nom d'utilisateur disponible",
"Username not available": "Nom d'utilisateur indisponible",
"Something went wrong!": "Quelque chose s’est mal passé !",
- "This will be your account name on the homeserver, or you can pick a different server.": "Cela sera le nom de votre compte sur le serveur , ou vous pouvez sélectionner un autre serveur.",
- "If you already have a Matrix account you can log in instead.": "Si vous avez déjà un compte Matrix vous pouvez vous identifier à la place.",
+ "This will be your account name on the homeserver, or you can pick a different server.": "Cela sera le nom de votre compte sur le serveur d'accueil , ou vous pouvez sélectionner un autre serveur.",
+ "If you already have a Matrix account you can log in instead.": "Si vous avez déjà un compte Matrix vous pouvez vous connecter à la place.",
"a room": "un salon",
"Accept": "Accepter",
"Active call (%(roomName)s)": "Appel en cours (%(roomName)s)",
- "Admin tools": "Outils d'administration",
"Alias (optional)": "Alias (facultatif)",
- "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Impossible de se connecter au homeserver - veuillez vérifier votre connexion, assurez vous que vous faites confiance au certificat SSL de votre homeserver, et qu'aucune extension de navigateur ne bloque les requêtes.",
- "Click here to join the discussion!": "Cliquer ici pour joindre la discussion !",
+ "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Impossible de se connecter au serveur d'accueil - veuillez vérifier votre connexion, assurez-vous que le certificat SSL de votre serveur d'accueil est un certificat de confiance, et qu'aucune extension du navigateur ne bloque les requêtes.",
+ "Click here to join the discussion!": "Cliquer ici pour rejoindre la discussion !",
"Close": "Fermer",
"Custom": "Personnaliser",
"Decline": "Refuser",
"Disable Notifications": "Désactiver les notifications",
"Drop File Here": "Déposer le fichier Ici",
"Enable Notifications": "Activer les notifications",
- "Failed to upload profile picture!": "Échec du téléchargement de la photo de profil !",
+ "Failed to upload profile picture!": "Échec de l'envoi de l'image de profil !",
"Incoming call from %(name)s": "Appel entrant de %(name)s",
"Incoming video call from %(name)s": "Appel vidéo entrant de %(name)s",
"Incoming voice call from %(name)s": "Appel vocal entrant de %(name)s",
- "No display name": "Pas de nom d'affichage",
+ "No display name": "Pas de nom affiché",
"Otherwise, click here to send a bug report.": "Sinon, cliquer ici pour envoyer un rapport d'erreur.",
- "Private Chat": "Conversation privée",
- "Public Chat": "Conversation publique",
- "Reason: %(reasonText)s": "Raison: %(reasonText)s",
+ "Private Chat": "Discussion privée",
+ "Public Chat": "Discussion publique",
+ "Reason: %(reasonText)s": "Raison : %(reasonText)s",
"Rejoin": "Rejoindre",
"Room contains unknown devices": "Le salon contient des appareils inconnus",
"%(roomName)s does not exist.": "%(roomName)s n'existe pas.",
@@ -728,23 +680,23 @@
"Seen by %(userName)s at %(dateTime)s": "Vu par %(userName)s à %(dateTime)s",
"Send anyway": "Envoyer quand même",
"Show Text Formatting Toolbar": "Afficher la barre de formatage de texte",
- "Start authentication": "Démarrer une authentification",
+ "Start authentication": "Commencer une authentification",
"This invitation was sent to an email address which is not associated with this account:": "Cette invitation a été envoyée à une adresse e-mail qui n'est pas associée avec ce compte :",
"This room": "Ce salon",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Impossible de vérifier que l'adresse à qui cette invitation a été envoyée correspond à celle associée à votre compte.",
"Undecryptable": "Indéchiffrable",
"Unencrypted message": "Message non chiffré",
"unknown caller": "appelant inconnu",
- "Unnamed Room": "Salon sans nom",
- "Unverified": "Non verifié",
+ "Unnamed Room": "Salon anonyme",
+ "Unverified": "Non vérifié",
"%(user)s is a": "%(user)s est un(e)",
- "Username invalid: %(errMessage)s": "Nom d'utilisateur invalide : %(errMessage)s",
- "Verified": "Verifié",
+ "Username invalid: %(errMessage)s": "Nom d'utilisateur non valide : %(errMessage)s",
+ "Verified": "Vérifié",
"Would you like to accept or decline this invitation?": "Souhaitez-vous accepter ou refuser cette invitation ?",
- "You have been banned from %(roomName)s by %(userName)s.": "Vous avez été bannis de %(roomName)s par %(userName)s.",
- "You have been kicked from %(roomName)s by %(userName)s.": "Vous avez été expulsé de %(roomName)s by %(userName)s.",
+ "You have been banned from %(roomName)s by %(userName)s.": "Vous avez été banni(e) de %(roomName)s par %(userName)s.",
+ "You have been kicked from %(roomName)s by %(userName)s.": "Vous avez été exclu de %(roomName)s par %(userName)s.",
"You may wish to login with a different account, or add this email to this account.": "Vous souhaiteriez peut-être vous identifier avec un autre compte, ou ajouter cette e-mail à votre compte.",
- "Your home server does not support device management.": "Votre homeserver ne supporte pas la gestion d'appareils.",
+ "Your home server does not support device management.": "Votre serveur d'accueil ne prend pas en charge la gestion d'appareils.",
"(~%(count)s results)|one": "(~%(count)s résultat)",
"(~%(count)s results)|other": "(~%(count)s résultats)",
"Device Name": "Nom de l'appareil",
@@ -754,85 +706,296 @@
"Encryption is not enabled in this room": "Le chiffrement n'est pas activé sur ce salon",
"Home": "Accueil",
"To link to a room it must have an address.": "Pour récupérer le lien vers un salon celui-ci doit avoir une adresse.",
- "Upload new:": "Télécharger un nouveau :",
- "And %(count)s more...": "Et %(count)s autres...",
- "Join as voice or video.": "Joindre avec audio ou vidéo.",
+ "Upload new:": "Envoyer un nouveau :",
+ "Join as voice or video.": "Rejoindre en audio ou en vidéo.",
"Last seen": "Vu pour la dernière fois",
"Level:": "Niveau :",
- "Set": "Défini",
- "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (pouvoir %(powerLevelNumber)s)",
+ "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (rang %(powerLevelNumber)s)",
"(could not connect media)": "(impossible de se connecter au média)",
"(no answer)": "(pas de réponse)",
"(unknown failure: %(reason)s)": "(erreur inconnue : %(reason)s)",
"Your browser does not support the required cryptography extensions": "Votre navigateur ne supporte pas les extensions cryptographiques nécessaires",
"Not a valid Riot keyfile": "Fichier de clé Riot non valide",
- "Authentication check failed: incorrect password?": "Erreur d’identification: mot de passe incorrect ?",
- "Disable Peer-to-Peer for 1:1 calls": "Désactiver les appels 1:1 pair-à-pair",
+ "Authentication check failed: incorrect password?": "Erreur d’authentification : mot de passe incorrect ?",
+ "Disable Peer-to-Peer for 1:1 calls": "Désactiver les appels 1 à 1 pair-à-pair",
"Do you want to set an email address?": "Souhaitez-vous configurer une adresse e-mail ?",
- "This will allow you to reset your password and receive notifications.": "Ceci va vous permettre de réinitialiser votre mot de passe et de recevoir des notifications.",
- "Press to start a chat with someone": "Cliquez sur pour entamer une discussion avec quelqu'un",
- "You're not in any rooms yet! Press to make a room or to browse the directory": "Vous n'avez pas encore rejoint de salon ! Cliquez sur pour créer un salon ou sur pour explorer le répertoire",
- "To return to your account in future you need to set a password": "Pour pouvoir accéder à votre compte dans le futur, vous devez enregistrer un mot de passe",
+ "This will allow you to reset your password and receive notifications.": "Ceci vous permettra de réinitialiser votre mot de passe et de recevoir des notifications.",
+ "Press to start a chat with someone": "Appuyez sur pour commencer une discussion avec quelqu'un",
+ "You're not in any rooms yet! Press to make a room or to browse the directory": "Vous n'avez pas encore rejoint de salon ! Appuyez sur pour créer un salon ou sur pour explorer le répertoire",
+ "To return to your account in future you need to set a password": "Pour pouvoir accéder à votre compte dans le futur, vous devez définir un mot de passe",
"Skip": "Passer",
"Start verification": "Commencer la vérification",
"Share without verifying": "Partager sans vérifier",
"Ignore request": "Ignorer la requête",
- "You added a new device '%(displayName)s', which is requesting encryption keys.": "Vous avez ajouté un nouvel appareil, '%(displayName)s', qui demande des clés de chiffrement.",
- "Your unverified device '%(displayName)s' is requesting encryption keys.": "Votre appareil non vérifié '%(displayName)s' demande des clés de chiffrement.",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "Vous avez ajouté un nouvel appareil, \"%(displayName)s\", qui demande des clés de chiffrement.",
+ "Your unverified device '%(displayName)s' is requesting encryption keys.": "Votre appareil non vérifié \"%(displayName)s\" demande des clés de chiffrement.",
"Encryption key request": "Requête de clé de chiffrement",
"Updates": "Mises à jour",
"Check for update": "Rechercher une mise à jour",
"Add a widget": "Ajouter un widget",
"Allow": "Autoriser",
- "Changes colour scheme of current room": "Change le jeu de couleur du salon",
+ "Changes colour scheme of current room": "Change le jeu de couleurs du salon",
"Delete widget": "Supprimer le widget",
- "Define the power level of a user": "Définir le niveau de privilèges d'un utilisateur",
+ "Define the power level of a user": "Définir le rang d'un utilisateur",
"Edit": "Modifier",
- "Enable automatic language detection for syntax highlighting": "Activer la détection automatique de langue pour la correction orthographique",
+ "Enable automatic language detection for syntax highlighting": "Activer la détection automatique de la langue pour la correction orthographique",
"Hide Apps": "Masquer les applications",
"Hide join/leave messages (invites/kicks/bans unaffected)": "Masquer les messages d'arrivée/départ (n'affecte pas les invitations/exclusions/bannissements)",
- "Hide avatar and display name changes": "Masquer les changements d'avatar et de nom",
- "Matrix Apps": "Matrix Apps",
- "Revoke widget access": "Désactiver les accès du widget",
- "Sets the room topic": "Configure le sujet du salon",
+ "Hide avatar and display name changes": "Masquer les changements d'avatar et de nom affiché",
+ "Revoke widget access": "Révoquer les accès du widget",
+ "Sets the room topic": "Défini le sujet du salon",
"Show Apps": "Afficher les applications",
- "To get started, please pick a username!": "Pour débuter, choisissez un nom d'utilisateur !",
+ "To get started, please pick a username!": "Pour commencer, choisissez un nom d'utilisateur !",
"Unable to create widget.": "Impossible de créer le widget.",
- "Unbans user with given id": "Amnistie l'utilisateur à partir de son identifiant",
+ "Unbans user with given id": "Révoque le bannissement de l'utilisateur à partir de son identifiant",
"You are not in this room.": "Vous n'êtes pas dans ce salon.",
"You do not have permission to do that in this room.": "Vous n'avez pas la permission d'effectuer cette action dans ce salon.",
- "Autocomplete Delay (ms):": "Délai pour l'autocomplétion (ms) :",
- "This Home server does not support groups": "Ce homeserver ne supporte pas les groupes",
- "Loading device info...": "Chargement des informations sur l'appareil...",
- "Groups": "Groupes",
- "Create a new group": "Créer un nouveau groupe",
- "Create Group": "Créer le groupe",
- "Group Name": "Nom du groupe",
+ "Autocomplete Delay (ms):": "Délai pour l'auto-complétion (ms) :",
+ "Loading device info...": "Chargement des informations de l'appareil...",
"Example": "Exemple",
"Create": "Créer",
- "Group ID": "Identifiant du groupe",
- "+example:%(domain)s": "+exemple:%(domain)s",
- "Group IDs must be of the form +localpart:%(domain)s": "Les identifiants de groupe doivent être au format +localpart:%(domain)s",
- "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Il n'est pas encore possible de créer des groupes sur votre propre homeserver : utilisez un identifiant de groupe terminant par %(domain)s",
- "Room creation failed": "Impossible de créer le salon",
- "You are a member of these groups:": "Vous êtes membre des groupes suivants :",
- "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Créez un groupe pour représenter votre communauté ! Définissez un jeu de salons et votre propre page d'accueil pour marquer votre espace dans l'univers Matrix.",
- "Join an existing group": "Rejoindre un groupe existant",
- "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Pour rejoindre un groupe existant, vous devez connaître l'identifiant de ce groupe ; il ressemblera à +exemple:matrix.org.",
+ "Room creation failed": "Échec de création du salon",
"Featured Rooms:": "Salons mis en avant :",
- "Error whilst fetching joined groups": "Erreur en récupérant la liste des groupes",
"Featured Users:": "Utilisateurs mis en avant :",
- "Edit Group": "Modifier le groupe",
- "Automatically replace plain text Emoji": "Remplacer automatiquement le texte par des Emoji",
- "Failed to upload image": "Impossible de télécharger l'image",
- "Failed to update group": "Impossible de modifier le groupe",
+ "Automatically replace plain text Emoji": "Remplacer automatiquement le texte par des Émoticônes",
+ "Failed to upload image": "Impossible d'envoyer l'image",
"Hide avatars in user and room mentions": "Masquer les avatars dans les mentions d'utilisateur et de salon",
- "Do you want to load widget from URL:": "Charger un widget venant de l’URL :",
- "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget ajouté par %(senderName)s",
- "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget supprimé par %(senderName)s",
- "Publish this room to the public in %(domain)s's room directory?": "Publier ce salon dans le l'annuaire public de %(domain)s ?",
+ "Do you want to load widget from URL:": "Voulez-vous charger le widget depuis l’URL :",
+ "%(widgetName)s widget added by %(senderName)s": "Widget %(widgetName)s ajouté par %(senderName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "Widget %(widgetName)s supprimé par %(senderName)s",
+ "Publish this room to the public in %(domain)s's room directory?": "Publier ce salon dans le répertoire de salons public de %(domain)s ?",
"Integrations Error": "Erreur d'intégration",
"Cannot add any more widgets": "Impossible d'ajouter plus de widgets",
"The maximum permitted number of widgets have already been added to this room.": "Le nombre maximum de widgets autorisés a déjà été atteint pour ce salon.",
- "NOTE: Apps are not end-to-end encrypted": "NOTE : Les applications ne sont pas chiffrées de bout en bout"
+ "NOTE: Apps are not end-to-end encrypted": "NOTE : Les applications ne sont pas chiffrées de bout en bout",
+ "AM": "AM",
+ "PM": "PM",
+ "Copied!": "Copié !",
+ "Failed to copy": "Échec de la copie",
+ "Verifies a user, device, and pubkey tuple": "Vérifie un utilisateur, un appareil et une clé publique",
+ "%(widgetName)s widget modified by %(senderName)s": "Widget %(widgetName)s modifié par %(senderName)s",
+ "Robot check is currently unavailable on desktop - please use a web browser": "La vérification robot n'est pas encore disponible pour le bureau - veuillez utiliser un navigateur",
+ "Who would you like to add to this community?": "Qui souhaitez-vous ajouter à cette communauté ?",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Attention : toute personne ajoutée à une communauté sera visible par tous ceux connaissant l'identifiant de la communauté",
+ "Invite new community members": "Inviter de nouveaux membres dans cette communauté",
+ "Name or matrix ID": "Nom ou identifiant matrix",
+ "Which rooms would you like to add to this community?": "Quels salons souhaitez-vous ajouter à cette communauté ?",
+ "Warning: any room you add to a community will be publicly visible to anyone who knows the community ID": "Attention : tout salon ajouté à une communauté est visible par quiconque connaissant l'identifiant de la communauté",
+ "Add rooms to the community": "Ajouter des salons à la communauté",
+ "Room name or alias": "Nom du salon ou alias",
+ "Add to community": "Ajouter à la communauté",
+ "Failed to invite the following users to %(groupId)s:": "Échec de l'invitation des utilisateurs à %(groupId)s :",
+ "Failed to invite users to community": "Échec de l'invitation d'utilisateurs à la communauté",
+ "Failed to invite users to %(groupId)s": "Échec de l'invitation d'utilisateurs à %(groupId)s",
+ "Failed to add the following rooms to %(groupId)s:": "Échec de l'ajout des salons suivants à %(groupId)s :",
+ "Ignored user": "Utilisateur ignoré",
+ "You are now ignoring %(userId)s": "Dorénavant vous ignorez %(userId)s",
+ "Unignored user": "Utilisateur n'étant plus ignoré",
+ "You are no longer ignoring %(userId)s": "Vous n'ignorez plus %(userId)s",
+ "Invite to Community": "Inviter dans la Communauté",
+ "Communities": "Communautés",
+ "Message Pinning": "Épingler un message",
+ "Mention": "Mentionner",
+ "Unignore": "Ne plus ignorer",
+ "Ignore": "Ignorer",
+ "Invite": "Inviter",
+ "User Options": "Options d'utilisateur",
+ "Admin Tools": "Outils d'administration",
+ "Unpin Message": "Dépingler le message",
+ "Jump to message": "Aller au message",
+ "No pinned messages.": "Aucun message épinglé.",
+ "Loading...": "Chargement...",
+ "Pinned Messages": "Messages épinglés",
+ "Unknown": "Inconnu",
+ "Unnamed room": "Salon sans nom",
+ "No rooms to show": "Aucun salon à afficher",
+ "Remove avatar": "Supprimer l'avatar",
+ "To change the room's avatar, you must be a": "Pour modifier l'avatar du salon, vous devez être un",
+ "To change the room's name, you must be a": "Pour changer le nom du salon, vous devez être un",
+ "To change the room's main address, you must be a": "Pour changer l'adresse principale du salon, vous devez être un",
+ "To change the room's history visibility, you must be a": "Pour changer la visibilité de l'historique d'un salon, vous devez être un",
+ "To change the permissions in the room, you must be a": "Pour changer les autorisations du salon, vous devez être un",
+ "To change the topic, you must be a": "Pour changer le sujet, vous devez être un",
+ "To modify widgets in the room, you must be a": "Pour modifier les widgets, vous devez être un",
+ "Banned by %(displayName)s": "Banni par %(displayName)s",
+ "To send messages, you must be a": "Pour envoyer des messages, vous devez être un",
+ "%(senderName)s changed the pinned messages for the room.": "%(senderName)s a changé les messages épinglés du salon.",
+ "%(names)s and %(count)s others are typing|other": "%(names)s et %(count)s autres écrivent",
+ "Jump to read receipt": "Aller à l'accusé de lecture",
+ "World readable": "Lisible publiquement",
+ "Guests can join": "Les invités peuvent rejoindre le salon",
+ "To invite users into the room, you must be a": "Pour inviter des utilisateurs dans le salon, vous devez être un",
+ "To configure the room, you must be a": "Pour configurer le salon, vous devez être un",
+ "To kick users, you must be a": "Pour exclure des utilisateurs, vous devez être un",
+ "To ban users, you must be a": "Pour bannir des utilisateurs, vous devez être un",
+ "To remove other users' messages, you must be a": "Pour supprimer les messages d'autres utilisateurs, vous devez être un",
+ "To send events of type , you must be a": "Pour envoyer des évènements du type , vous devez être un",
+ "Invalid community ID": "Identifiant de communauté non valide",
+ "'%(groupId)s' is not a valid community ID": "\"%(groupId)s\" n'est pas un identifiant de communauté valide",
+ "Related Communities": "Communautés associées",
+ "Related communities for this room:": "Communautés associées à ce salon :",
+ "This room has no related communities": "Ce salon n'est associé à aucune communauté",
+ "%(names)s and %(count)s others are typing|one": "%(names)s et un autre écrivent",
+ "%(senderName)s sent an image": "%(senderName)s a envoyé une image",
+ "%(senderName)s sent a video": "%(senderName)s a envoyé une vidéo",
+ "%(senderName)s uploaded a file": "%(senderName)s a transféré un fichier",
+ "Disinvite this user?": "Désinviter l'utilisateur ?",
+ "Kick this user?": "Exclure cet utilisateur ?",
+ "Unban this user?": "Révoquer le bannissement de cet utilisateur ?",
+ "Ban this user?": "Bannir cet utilisateur ?",
+ "Drop here to favourite": "Déposer ici pour mettre en favori",
+ "Drop here to tag direct chat": "Déposer ici pour marquer comme conversation directe",
+ "Drop here to restore": "Déposer ici pour restaurer",
+ "Drop here to demote": "Déposer ici pour rétrograder",
+ "You have been kicked from this room by %(userName)s.": "Vous avez été exclu de ce salon par %(userName)s.",
+ "You have been banned from this room by %(userName)s.": "Vous avez été banni de ce salon par %(userName)s.",
+ "You are trying to access a room.": "Vous essayez d'accéder à un salon.",
+ "Members only (since the point in time of selecting this option)": "Seulement les membres (depuis la sélection de cette option)",
+ "Members only (since they were invited)": "Seulement les membres (depuis leur invitation)",
+ "Members only (since they joined)": "Seulement les membres (depuis leur arrivée)",
+ "New community ID (e.g. +foo:%(localDomain)s)": "Nouvel identifiant de communauté (par ex. +foo:%(localDomain)s)",
+ "Message removed by %(userId)s": "Message supprimé par %(userId)s",
+ "Message removed": "Message supprimé",
+ "An email has been sent to %(emailAddress)s": "Un e-mail a été envoyé à %(emailAddress)s",
+ "A text message has been sent to %(msisdn)s": "Un message a été envoyé à %(msisdn)s",
+ "Remove from community": "Supprimer de la communauté",
+ "Disinvite this user from community?": "Désinviter cet utilisateur de la communauté ?",
+ "Remove this user from community?": "Supprimer cet utilisateur de la communauté ?",
+ "Failed to withdraw invitation": "Échec de l'annulation de l'invitation",
+ "Failed to remove user from community": "Échec de la suppression de l'utilisateur de la communauté",
+ "Filter community members": "Filtrer les membres de la communauté",
+ "Filter community rooms": "Filtrer les salons de la communauté",
+ "Failed to remove room from community": "Échec de la suppression du salon de la communauté",
+ "Failed to remove '%(roomName)s' from %(groupId)s": "Échec de la suppression de \"%(roomName)s\" de %(groupId)s",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Voulez-vous vraiment supprimer \"%(roomName)s\" de %(groupId)s ?",
+ "Removing a room from the community will also remove it from the community page.": "Supprimer un salon de la communauté le supprimera aussi de la page de la communauté.",
+ "Remove this room from the community": "Supprimer ce salon de la communauté",
+ "Delete Widget": "Supprimer le widget",
+ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Supprimer un widget le supprime pour tous les utilisateurs du salon. Voulez-vous vraiment supprimer ce widget ?",
+ "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s",
+ "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)s ont rejoint le salon %(count)s fois",
+ "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)s ont rejoint le salon",
+ "%(oneUser)sjoined %(count)s times|other": "%(oneUser)s a rejoint le salon %(count)s fois",
+ "%(oneUser)sjoined %(count)s times|one": "%(oneUser)s a rejoint le salon",
+ "%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s sont partis %(count)s fois",
+ "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s sont partis",
+ "%(oneUser)sleft %(count)s times|other": "%(oneUser)s est parti %(count)s fois",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)s est parti",
+ "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s ont rejoint le salon et en sont partis %(count)s fois",
+ "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)s ont rejoint le salon et en sont partis",
+ "%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)s a rejoint le salon et en est parti %(count)s fois",
+ "%(oneUser)sjoined and left %(count)s times|one": "%(oneUser)s a rejoint le salon et en est parti",
+ "%(severalUsers)sleft and rejoined %(count)s times|other": "%(severalUsers)s sont partis et revenus %(count)s fois",
+ "%(severalUsers)sleft and rejoined %(count)s times|one": "%(severalUsers)s sont partis et revenus",
+ "%(oneUser)sleft and rejoined %(count)s times|other": "%(oneUser)s est parti et revenu %(count)s fois",
+ "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)s est parti et revenu",
+ "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)s ont décliné leur invitation %(count)s fois",
+ "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)s ont décliné leur invitation",
+ "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s a décliné son invitation %(count)s fois",
+ "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)s a décliné son invitation",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "%(severalUsers)s ont vu leur invitation révoquée %(count)s fois",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|one": "%(severalUsers)s ont vu leur invitation révoquée",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|other": "%(oneUser)s a vu son invitation révoquée %(count)s fois",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|one": "%(oneUser)s a vu son invitation révoquée",
+ "were invited %(count)s times|other": "ont été invités %(count)s fois",
+ "were invited %(count)s times|one": "ont été invités",
+ "was invited %(count)s times|other": "a été invité %(count)s fois",
+ "was invited %(count)s times|one": "a été invité",
+ "were banned %(count)s times|other": "ont été bannis %(count)s fois",
+ "were banned %(count)s times|one": "ont été bannis",
+ "was banned %(count)s times|other": "a été banni %(count)s fois",
+ "was banned %(count)s times|one": "a été banni",
+ "were unbanned %(count)s times|other": "ont vu leur bannissement révoqué %(count)s fois",
+ "were unbanned %(count)s times|one": "ont vu leur bannissement révoqué",
+ "was unbanned %(count)s times|other": "a vu son bannissement révoqué %(count)s fois",
+ "was unbanned %(count)s times|one": "a vu son bannissement révoqué",
+ "were kicked %(count)s times|other": "ont été exclus %(count)s fois",
+ "were kicked %(count)s times|one": "ont été exclus",
+ "was kicked %(count)s times|other": "a été exclu %(count)s fois",
+ "was kicked %(count)s times|one": "a été exclu",
+ "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s ont changé de nom %(count)s fois",
+ "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)s ont changé de nom",
+ "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)s a changé de nom %(count)s fois",
+ "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s a changé de nom",
+ "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)s ont changé d'avatar %(count)s fois",
+ "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s ont changé d'avatar",
+ "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s a changé d'avatar %(count)s fois",
+ "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s a changé d'avatar",
+ "%(items)s and %(count)s others|other": "%(items)s et %(count)s autres",
+ "%(items)s and %(count)s others|one": "%(items)s et un autre",
+ "And %(count)s more...|other": "Et %(count)s autres...",
+ "Matrix ID": "Identifiant Matrix",
+ "Matrix Room ID": "Identifiant de salon Matrix",
+ "email address": "adresse e-mail",
+ "Try using one of the following valid address types: %(validTypesList)s.": "Essayez d'utiliser un des types d'adresse valide suivants : %(validTypesList)s.",
+ "You have entered an invalid address.": "L'adresse saisie n'est pas valide.",
+ "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Les identifiants de communauté ne peuvent contenir que les caractères a-z, 0-9 ou '=_-./'",
+ "Something went wrong whilst creating your community": "Une erreur est survenue lors de la création de votre communauté",
+ "Create Community": "Créer une communauté",
+ "Community Name": "Nom de la communauté",
+ "Community ID": "Identifiant de la communauté",
+ "example": "exemple",
+ "Advanced options": "Options avancées",
+ "Block users on other matrix homeservers from joining this room": "Empêcher les utilisateurs d'autres serveurs d'accueil Matrix de rejoindre ce salon",
+ "This setting cannot be changed later!": "Ce paramètre ne peut pas être changé plus tard !",
+ "Add rooms to the community summary": "Ajouter des salons au sommaire de la communauté",
+ "Which rooms would you like to add to this summary?": "Quels salons souhaitez-vous ajouter à ce sommaire ?",
+ "Add to summary": "Ajouter au sommaire",
+ "Failed to add the following rooms to the summary of %(groupId)s:": "Échec de l'ajout des salons suivants au sommaire de %(groupId)s :",
+ "Add a Room": "Ajouter un salon",
+ "Failed to remove the room from the summary of %(groupId)s": "Échec de la suppression du salon du sommaire de %(groupId)s",
+ "The room '%(roomName)s' could not be removed from the summary.": "Le salon \"%(roomName)s\" n'a pas pu être supprimé du sommaire.",
+ "Add users to the community summary": "Ajouter des utilisateurs au sommaire de la communauté",
+ "Who would you like to add to this summary?": "Qui souhaitez-vous ajouter à ce sommaire ?",
+ "Failed to add the following users to the summary of %(groupId)s:": "Échec de l'ajout des utilisateurs suivants au sommaire de %(groupId)s :",
+ "Add a User": "Ajouter un utilisateur",
+ "Failed to remove a user from the summary of %(groupId)s": "Échec de la suppression d'un utilisateur du sommaire de %(groupId)s",
+ "The user '%(displayName)s' could not be removed from the summary.": "L'utilisateur \"%(displayName)s\" n'a pas pu être supprimé du sommaire.",
+ "Failed to update community": "Échec de la mise à jour de la communauté",
+ "Unable to accept invite": "Impossible d'accepter l'invitation",
+ "Unable to reject invite": "Impossible de décliner l'invitation",
+ "Leave Community": "Quitter la communauté",
+ "Leave %(groupName)s?": "Quitter %(groupName)s ?",
+ "Leave": "Quitter",
+ "Unable to leave room": "Impossible de partir du salon",
+ "Community Settings": "Paramètres de la communauté",
+ "Add rooms to this community": "Ajouter des salons à cette communauté",
+ "%(inviter)s has invited you to join this community": "%(inviter)s vous a invité à rejoindre cette communauté",
+ "You are an administrator of this community": "Vous êtes un(e) administrateur(trice) de cette communauté",
+ "You are a member of this community": "Vous êtes un membre de cette communauté",
+ "Community Member Settings": "Paramètres de membre de la communauté",
+ "Publish this community on your profile": "Publier cette communauté sur votre profil",
+ "Long Description (HTML)": "Description longue (HTML)",
+ "Description": "Description",
+ "Community %(groupId)s not found": "Communauté %(groupId)s non trouvée",
+ "This Home server does not support communities": "Ce serveur d'accueil ne prend pas en charge les communautés",
+ "Failed to load %(groupId)s": "Échec du chargement de %(groupId)s",
+ "Your Communities": "Vos communautés",
+ "You're not currently a member of any communities.": "Vous n'ếtes actuellement membre d'aucune communauté.",
+ "Error whilst fetching joined communities": "Erreur lors de l'obtention des communautés rejointes",
+ "Create a new community": "Créer une nouvelle communauté",
+ "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Créez une communauté pour grouper des utilisateurs et des salons ! Construisez une page d'accueil personnalisée pour distinguer votre espace dans l'univers Matrix.",
+ "Join an existing community": "Rejoindre une communauté existante",
+ "To join an existing community you'll have to know its community identifier; this will look something like +example:matrix.org.": "Pour rejoindre une communauté existante, vous devrez connaître son identifiant. Cela ressemblera à +exemple:matrix.org.",
+ "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Il n'y a personne d'autre ici ! Voulez-vous inviter d'autres personnes ou ne plus être notifié de ce salon vide ?",
+ "Disable Emoji suggestions while typing": "Désactiver les suggestions d'emojis lors de la saisie",
+ "Disable big emoji in chat": "Désactiver les gros emojis dans les discussions",
+ "Mirror local video feed": "Refléter le flux vidéo local",
+ "Light theme": "Thème clair",
+ "Dark theme": "Thème sombre",
+ "Ignored Users": "Utilisateurs ignorés",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Un e-mail a été envoyé à %(emailAddress)s. Après avoir suivi le lien présent dans celui-ci, cliquez ci-dessous.",
+ "Ignores a user, hiding their messages from you": "Ignore un utilisateur, en masquant ses messages",
+ "Stops ignoring a user, showing their messages going forward": "N'ignore plus un utilisateur, en affichant ses messages à partir de maintenant",
+ "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "La visibilité de \"%(roomName)s\" dans %(groupId)s n'a pas pu être mise à jour.",
+ "Visibility in Room List": "Visibilité dans la liste des salons",
+ "Visible to everyone": "Visible pour tout le monde",
+ "Only visible to community members": "Visible uniquement par les membres de la communauté",
+ "Community Invites": "Invitations de communauté",
+ "Notify the whole room": "Notifier tout le salon",
+ "Room Notification": "Notification du salon",
+ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Ces salons sont affichés aux membres de la communauté sur la page de la communauté. Les membres de la communauté peuvent rejoindre ces salons en cliquant dessus.",
+ "HTML for your community's page
\n\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n\n You can even use 'img' tags\n
\n": "HTML pour votre page de communauté
\n\n Utilisez la description longue pour présenter la communauté aux nouveaux membres\n ou pour diffuser des liens importants\n
\n\n Vous pouvez même utiliser des balises \"img\"\n
\n",
+ "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Votre communauté n'a pas de description longue, une page HTML à montrer aux membres de la communauté.
Cliquez ici pour ouvrir les réglages et créez-la !",
+ "Show these rooms to non-members on the community page and room list?": "Afficher ces salons aux non-membres sur la page de communauté et la liste des salons ?"
}
diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json
new file mode 100644
index 0000000000..c3a103c4e5
--- /dev/null
+++ b/src/i18n/strings/gl.json
@@ -0,0 +1,18 @@
+{
+ "This email address is already in use": "Este enderezo de correo xa está a ser utilizado",
+ "This phone number is already in use": "Este número de teléfono xa está a ser utilizado",
+ "Failed to verify email address: make sure you clicked the link in the email": "Fallo na verificación do enderezo de correo: asegúrese de ter picado na ligazón do correo",
+ "The remote side failed to pick up": "O interlocutor non respondeu",
+ "Unable to capture screen": "Non se puido pillar a pantalla",
+ "Existing Call": "Chamada existente",
+ "You are already in a call.": "Xa está nunha chamada.",
+ "VoIP is unsupported": "VoIP non admitida",
+ "You cannot place VoIP calls in this browser.": "Non pode establecer chamadas VoIP en este navegador.",
+ "You cannot place a call with yourself.": "Non pode chamarse a vostede mesma.",
+ "Conference calls are not supported in this client": "Non pode establecer chamadas de Reunión en este cliente",
+ "Conference calls are not supported in encrypted rooms": "Nas salas cifradas non se pode establecer Chamadas de Reunión",
+ "Warning!": "Aviso!",
+ "Conference calling is in development and may not be reliable.": "As chamadas de Reunión poderían non ser totalmente estables xa que están en desenvolvemento.",
+ "Failed to set up conference call": "Fallo ao establecer a chamada de reunión",
+ "Conference call failed.": "Fallo na chamada de reunión."
+}
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index 1186c4f8bb..b316e994a1 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -15,14 +15,6 @@
"Remove": "Törlés",
"Settings": "Beállítások",
"unknown error code": "ismeretlen hiba kód",
- "Sunday": "Vasárnap",
- "Monday": "Hétfő",
- "Tuesday": "Kedd",
- "Wednesday": "Szerda",
- "Thursday": "Csütörtök",
- "Friday": "Péntek",
- "Saturday": "Szombat",
- "A registered account is required for this action": "Regisztrált fiókra van szükség ehhez a művelethez",
"a room": "egy szoba",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Elküldtük a szöveges üzenetet ide: +%(msisdn)s. Kérlek add meg az ellenőrző kódot ami benne van",
"Accept": "Elfogad",
@@ -36,8 +28,7 @@
"Add email address": "E-mail cím megadása",
"Add phone number": "Telefonszám megadása",
"Admin": "Adminisztrátor",
- "Admin Tools": "Admin. eszközök",
- "And %(count)s more...": "És még %(count)s...",
+ "Admin Tools": "Admin. Eszközök",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Hiányzó Média jogosultság, kattintson ide az igényléshez.",
"No Microphones detected": "Nem található mikrofon",
@@ -56,13 +47,9 @@
"Failed to change password. Is your password correct?": "Nem sikerült megváltoztatni a jelszót. Helyesen írtad be a jelszavadat?",
"Continue": "Folytatás",
"Create new room": "Új szoba létrehozása",
- "sb": "Szorb",
- "rm": "Rétoromán",
- "tn": "Tswana",
"Close": "Bezár",
"Room directory": "Szobák listája",
"Start chat": "Csevegés indítása",
- "and": "és",
"%(items)s and %(remaining)s others": "%(items)s és még: %(remaining)s",
"%(items)s and one other": "%(items)s és még egy",
"%(items)s and %(lastItem)s": "%(items)s és %(lastItem)s",
@@ -70,7 +57,6 @@
"and %(count)s others...|one": "és még egy...",
"%(names)s and %(lastPerson)s are typing": "%(names)s és %(lastPerson)s írnak",
"%(names)s and one other are typing": "%(names)s és még valaki ír",
- "%(names)s and %(count)s others are typing": "%(names)s és %(count)s ember ír",
"An email has been sent to": "Az e-mail ide lett küldve:",
"A new password must be entered.": "Új jelszót kell megadni.",
"%(senderName)s answered the call.": "%(senderName)s felvette a telefont.",
@@ -141,7 +127,6 @@
"Decrypt %(text)s": "%(text)s visszafejtése",
"Decryption error": "Visszafejtési hiba",
"Delete": "Töröl",
- "demote": "hozzáférési szint csökkentése",
"Default": "Alapértelmezett",
"Device already verified!": "Készülék már ellenőrizve!",
"Device ID": "Készülék azonosító",
@@ -197,7 +182,6 @@
"Failed to load timeline position": "Az idővonal pozíciót nem sikerült betölteni",
"Failed to lookup current room": "Az aktuális szoba felkeresése sikertelen",
"Failed to mute user": "A felhasználót nem sikerült hallgatásra bírni",
- "Failed to register as guest:": "Nem sikerült vendégként regisztrálni:",
"Failed to reject invite": "A meghívót nem sikerült elutasítani",
"Failed to reject invitation": "A meghívót nem sikerült elutasítani",
"Failed to save settings": "A beállításokat nem sikerült elmenteni",
@@ -212,7 +196,6 @@
"Failed to upload profile picture!": "Profil kép feltöltése sikertelen!",
"Failed to verify email address: make sure you clicked the link in the email": "E-mail cím ellenőrzése sikertelen: ellenőrizd, hogy az e-mailnél lévő linkre rákattintottál",
"Failure to create room": "Szoba létrehozása sikertelen",
- "favourite": "kedvenc",
"Favourites": "Kedvencek",
"Fill screen": "Képernyő kitöltése",
"Filter room members": "Szoba tagság szűrése",
@@ -224,7 +207,6 @@
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s : %(fromPowerLevel)s -> %(toPowerLevel)s",
"Guest access is disabled on this Home Server.": "Vendég belépés tiltva van a Saját szerveren.",
"Guests cannot join this room even if explicitly invited.": "Vendégek akkor sem csatlakozhatnak ehhez a szobához ha külön meghívók kaptak.",
- "had": "van",
"Hangup": "Megszakít",
"Hide read receipts": "Olvasási visszajelzés elrejtése",
"Hide Text Formatting Toolbar": "Szövegformázási menü elrejtése",
@@ -256,8 +238,6 @@
"Sign in with": "Belépés ezzel:",
"Join as voice or video.": "Csatlakozás hanggal vagy videóval.",
"Join Room": "Belépés a szobába",
- "joined and left": "be-, és kilépett",
- "joined": "belépett",
"%(targetName)s joined the room.": "%(targetName)s belépett a szobába.",
"Joins room with given alias": "A megadott becenévvel belépett a szobába",
"Jump to first unread message.": "Ugrás az első olvasatlan üzenetre.",
@@ -267,8 +247,6 @@
"Labs": "Labor",
"Last seen": "Utoljára láttuk",
"Leave room": "Szoba elhagyása",
- "left and rejoined": "ki-, és belépett",
- "left": "kilépett",
"%(targetName)s left the room.": "%(targetName)s elhagyta a szobát.",
"Level:": "Szint:",
"Local addresses for this room:": "A szoba helyi címe:",
@@ -296,7 +274,6 @@
"%(serverName)s Matrix ID": "%(serverName)s Matrix azonosítóm",
"Name": "Név",
"Never send encrypted messages to unverified devices from this device": "Soha ne küldj titkosított üzenetet ellenőrizetlen eszközre erről az eszközről",
- "Never send encrypted messages to unverified devices in this room": "Soha ne küldj titkosított üzenetet ebből a szobából ellenőrizetlen eszközre",
"Never send encrypted messages to unverified devices in this room from this device": "Soha ne küldj titkosított üzenetet ebből a szobából ellenőrizetlen eszközre erről az eszközről",
"New address (e.g. #foo:%(localDomain)s)": "Új cím (e.g. #foo:%(localDomain)s)",
"New password": "Új jelszó",
@@ -335,8 +312,7 @@
"Reason: %(reasonText)s": "Ok: %(reasonText)s",
"Revoke Moderator": "Moderátor visszahívása",
"Refer a friend to Riot:": "Ismerős meghívása a Riotba:",
- "Register": "Regisztráció",
- "rejected": "elutasítva",
+ "Register": "Regisztrál",
"%(targetName)s rejected the invitation.": "%(targetName)s elutasította a meghívót.",
"Reject invitation": "Meghívó elutasítása",
"Rejoin": "Újracsatlakozás",
@@ -347,7 +323,6 @@
"Remove %(threePid)s?": "Töröl: %(threePid)s?",
"%(senderName)s requested a VoIP conference.": "%(senderName)s VoIP konferenciát kezdeményez.",
"Report it": "Jelent",
- "restore": "visszaállít",
"Results from DuckDuckGo": "Eredmények a DuckDuckGo-ból",
"Return to app": "Vissza az alkalmazáshoz",
"Return to login screen": "Vissza a bejelentkezési képernyőre",
@@ -386,7 +361,6 @@
"Session ID": "Kapcsolat azonosító",
"%(senderName)s set a profile picture.": "%(senderName)s profil képet állított be.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s a megjelenítési nevét megváltoztatta erre: %(displayName)s.",
- "Set": "Beállít",
"Show panel": "Panel megjelenítése",
"Show Text Formatting Toolbar": "Szöveg formázási eszköztár megjelenítése",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Az időbélyegek 12 órás formátumban mutatása (pl.: 2:30pm)",
@@ -404,7 +378,6 @@
"Start Chat": "Csevegés indítása",
"Submit": "Elküld",
"Success": "Sikeres",
- "tag direct chat": "megjelölés közvetlen csevegésnek",
"Tagged as: ": "Címkék: ",
"The default role for new room members is": "Az alapértelmezett szerep új tagoknak:",
"The main address for this room is": "A szoba elsődleges címe:",
@@ -431,14 +404,10 @@
"This room": "Ebben a szobában",
"This room is not accessible by remote Matrix servers": "Ez a szoba távoli Matrix szerverről nem érhető el",
"This room's internal ID is": "A szoba belső azonosítója:",
- "times": "alkalommal",
- "to browse the directory": "a könyvtárban való kereséshez",
"to favourite": "kedvencekhez",
"To link to a room it must have an address.": "Szobához való kötéshez szükséges egy cím.",
- "to make a room or": "szoba létrehozásához vagy",
"To reset your password, enter the email address linked to your account": "A jelszó alaphelyzetbe állításához add meg a fiókodhoz kötött e-mail címet",
"to restore": "visszaállításhoz",
- "to start a chat with someone": "csevegés indításához valakivel",
"to tag direct chat": "megjelölni közvetlen csevegésnek",
"To use it, just wait for autocomplete results to load and tab through them.": "A használatához csak várd meg az automatikus kiegészítéshez a találatok betöltését és TAB-bal választhatsz közülük.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Megpróbáltam betölteni a szoba megadott időpontjának megfelelő adatait, de nincs jogod a kérdéses üzenetek megjelenítéséhez.",
@@ -524,7 +493,6 @@
"You have enabled URL previews by default.": "Az URL előnézet alapból engedélyezve van.",
"You have no visible notifications": "Nincsenek látható értesítéseid",
"You may wish to login with a different account, or add this email to this account.": "Lehet, hogy más fiókba szeretnél belépni vagy ezt az e-mail címet szeretnéd ehhez a fiókhoz kötni.",
- "you must be a": "szükséges szerep:",
"You must register to use this functionality": "Regisztrálnod kell hogy ezt használhasd",
"You need to be able to invite users to do that.": "Hogy ezt csinálhasd meg kell tudnod hívni felhasználókat.",
"You need to be logged in.": "Be kell jelentkezz.",
@@ -585,7 +553,6 @@
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Most újraküldöd mind vagy eldobod mind. Újraküldésre vagy eldobásra egyenként is kiválaszthatod az üzeneteket.",
"(~%(count)s results)|one": "(~%(count)s db eredmény)",
"(~%(count)s results)|other": "(~%(count)s db eredmény)",
- "or": "vagy",
"Active call": "Folyamatban lévő hívás",
"bold": "félkövér",
"italic": "dőlt",
@@ -723,7 +690,7 @@
"Start chatting": "Csevegés indítása",
"Start Chatting": "Csevegés indítása",
"Click on the button below to start chatting!": "Csevegés indításához kattints a gombra alább!",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName megváltoztatta a szoba avatar képét:
",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s megváltoztatta a szoba avatar képét:
",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s törölte a szoba avatar képét.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s megváltoztatta %(roomName)s szoba avatar képét",
"Username available": "Szabad felhasználói név",
@@ -776,7 +743,6 @@
"Hide Apps": "Alkalmazások elrejtése",
"Hide join/leave messages (invites/kicks/bans unaffected)": "Belép/kilép üzenetek elrejtése (meghívók, kirúgások, kitiltások nem érintettek)",
"Hide avatar and display name changes": "Profilkép és megjelenítési név változás üzenetek elrejtése",
- "Matrix Apps": "Mátrix alkalmazások",
"AM": "de",
"PM": "du",
"Revoke widget access": "Kisalkalmazás hozzáférésének visszavonása",
@@ -789,30 +755,14 @@
"You do not have permission to do that in this room.": "Nincs jogod ezt tenni ebben a szobában.",
"Verifies a user, device, and pubkey tuple": "A felhasználó, eszköz és publikus kulcs hármas ellenőrzése",
"Autocomplete Delay (ms):": "Várakozás automatikus kiegészítés előtt (ms):",
- "This Home server does not support groups": "Ez a saját szerver nem támogatja a csoportokat",
"Loading device info...": "Eszköz információk betöltése...",
- "Groups": "Csoportok",
- "Create a new group": "Új csoport létrehozása",
- "Create Group": "Csoport létrehozása",
- "Group Name": "Csoport neve",
"Example": "Példa",
"Create": "Létrehoz",
- "Group ID": "Csoport azonosító",
- "+example:%(domain)s": "+példa:%(domain)s",
- "Group IDs must be of the form +localpart:%(domain)s": "A csoport azonosítónak az alábbi formában kell lennie: +helyirész:%(domain)s",
- "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Egyenlőre csoportokat csak a saját szerveren lehet létrehozni: használd a csoport azonosítót a %(domain)s végződéssel",
"Room creation failed": "Szoba létrehozás sikertelen",
- "You are a member of these groups:": "Ezeknek a csoportoknak vagy a tagja:",
- "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Hozz létre csoportot a közösség meghatározásához! Jelölj ki szobákat és saját kezdőoldalt amivel meghatározhatod a territóriumodat a Matrix univerzumában.",
- "Join an existing group": "Csatlakozz meglévő csoporthoz",
- "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Ahhoz, hogy meglévő csoporthoz csatlakozhass tudnod kell a csoport azonosítóját ami valahogy így nézhet ki: +example:matrix.org.",
"Featured Rooms:": "Kiemelt szobák:",
- "Error whilst fetching joined groups": "Hiba a csatlakozott csoportok betöltésénél",
"Featured Users:": "Kiemelt felhasználók:",
- "Edit Group": "Csoport szerkesztése",
"Automatically replace plain text Emoji": "Egyszerű szöveg automatikus cseréje Emoji-ra",
"Failed to upload image": "Kép feltöltése sikertelen",
- "Failed to update group": "Csoport frissítése sikertelen",
"Hide avatars in user and room mentions": "Profilképek elrejtése felhasználó és szoba említésekben",
"Cannot add any more widgets": "Nem lehet több kisalkalmazást hozzáadni",
"Do you want to load widget from URL:": "Betöltöd a kisalkalmazást erről az URL-ről:",
@@ -823,5 +773,233 @@
"%(widgetName)s widget added by %(senderName)s": "%(widgetName)s kisalkalmazást %(senderName)s hozzáadta",
"%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s kisalkalmazást %(senderName)s eltávolította",
"Robot check is currently unavailable on desktop - please use a web browser": "Robot ellenőrzés az asztali verzióban nem érhető el - használd a web böngészőt",
- "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s kisalkalmazást %(senderName)s módosította"
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s kisalkalmazást %(senderName)s módosította",
+ "Copied!": "Lemásolva!",
+ "Failed to copy": "Sikertelen másolás",
+ "Advanced options": "További beállítások",
+ "Block users on other matrix homeservers from joining this room": "Felhasználók szobába való belépésének megakadályozása távoli szerverekről",
+ "This setting cannot be changed later!": "Ezt a beállítást később nem lehet megváltoztatni!",
+ "Ignored Users": "Figyelmen kívül hagyott felhasználók",
+ "Ignore": "Figyelmen kívül hagy",
+ "Unignore": "Figyelembe vesz",
+ "User Options": "Felhasználói beállítások",
+ "You are now ignoring %(userId)s": "Most figyelmen kívül hagyod: %(userId)s",
+ "You are no longer ignoring %(userId)s": "Ismét figyelembe veszed: %(userId)s",
+ "Unignored user": "Figyelembe vett felhasználó",
+ "Ignored user": "Figyelmen kívül hagyott felhasználó",
+ "Stops ignoring a user, showing their messages going forward": "Felhasználót újra figyelembe vesszük és megmutatjuk az új üzeneteit",
+ "Ignores a user, hiding their messages from you": "Felhasználó figyelmen kívül hagyásával elrejtheted az üzeneteit magad elől",
+ "Disable Emoji suggestions while typing": "Emoji ajánlások kikapcsolása gépelés közben",
+ "Banned by %(displayName)s": "Kitiltotta: %(displayName)s",
+ "Message removed by %(userId)s": "Üzenetet törölte: %(userId)s",
+ "To send messages, you must be a": "Ahhoz, hogy üzenetet tudj küldeni, neked ilyen szinten kell lenned:",
+ "To invite users into the room, you must be a": "Hogy meghívj valakit a szobába, ilyen szinten kell lenned:",
+ "To configure the room, you must be a": "A szoba beállításához ilyen szinten kell lenned:",
+ "To kick users, you must be a": "Felhasználó kirúgásához ilyen szinten kell lenned:",
+ "To ban users, you must be a": "Felhasználó kizárásához ilyen szinten kell lenned:",
+ "To remove other users' messages, you must be a": "Más üzenetének a törléséhez ilyen szinten kell lenned:",
+ "To send events of type , you must be a": " esemény küldéséhez ilyen szinten kell lenned:",
+ "To change the room's avatar, you must be a": "A szoba avatarjának a megváltoztatásához ilyen szinten kell lenned:",
+ "To change the room's name, you must be a": "A szoba nevének megváltoztatásához ilyen szinten kell lenned:",
+ "To change the room's main address, you must be a": "A szoba elsődleges címének a megváltoztatásához ilyen szinten kell lenned:",
+ "To change the room's history visibility, you must be a": "A szoba naplója elérhetőségének a megváltoztatásához ilyen szinten kell lenned:",
+ "To change the permissions in the room, you must be a": "A szobában a jogosultság megváltoztatásához ilyen szinten kell lenned:",
+ "To change the topic, you must be a": "A téma megváltoztatásához ilyen szinten kell lenned:",
+ "To modify widgets in the room, you must be a": "A szoba kisalkalmazásainak megváltoztatásához ilyen szinten kell lenned:",
+ "Description": "Leírás",
+ "Name or matrix ID": "Név vagy Matrix azonosító",
+ "Unable to accept invite": "A meghívót nem lehet elfogadni",
+ "Unable to leave room": "A szobát nem lehet elhagyni",
+ "Leave": "Elhagy",
+ "Failed to invite the following users to %(groupId)s:": "Az alábbi felhasználókat nem sikerült meghívni a(z) %(groupId)s:",
+ "Failed to invite users to %(groupId)s": "Nem sikerült meghívni a felhasználókat ebbe a csoportba: %(groupId)s",
+ "Unable to reject invite": "Nem sikerül elutasítani a meghívót",
+ "Leave %(groupName)s?": "Elhagyod a csoportot: %(groupName)s?",
+ "Add a Room": "Szoba hozzáadása",
+ "Add a User": "Felhasználó hozzáadása",
+ "Who would you like to add to this summary?": "Kit szeretnél hozzáadni ehhez az összefoglalóhoz?",
+ "Add to summary": "Összefoglalóhoz adás",
+ "Failed to add the following users to the summary of %(groupId)s:": "Az alábbi felhasználókat nem sikerült hozzáadni a(z) %(groupId)s csoport összefoglalójához:",
+ "Which rooms would you like to add to this summary?": "Melyik szobákat szeretnéd hozzáadni ehhez az összefoglalóhoz?",
+ "Room name or alias": "Szoba neve vagy beceneve",
+ "Failed to add the following rooms to the summary of %(groupId)s:": "Az alábbi szobákat nem sikerült hozzáadni a(z) %(groupId)s csoport összefoglalójához:",
+ "Failed to remove the room from the summary of %(groupId)s": "Az alábbi szobákat nem sikerült eltávolítani a(z) %(groupId)s csoport összefoglalójából",
+ "The room '%(roomName)s' could not be removed from the summary.": "Nem sikerült törölni az összefoglalóból ezt a szobát: '%(roomName)s'.",
+ "Failed to remove a user from the summary of %(groupId)s": "Nem sikerült törölni az összefoglalóból ezt a felhasználót: %(groupId)s",
+ "The user '%(displayName)s' could not be removed from the summary.": "Nem sikerült törölni az összefoglalóból ezt a felhasználót: %(groupId)s.",
+ "Light theme": "Világos téma",
+ "Dark theme": "Sötét téma",
+ "Unknown": "Ismeretlen",
+ "Failed to add the following rooms to %(groupId)s:": "Az alábbi szobákat nem sikerült hozzáadni a(z) %(groupId)s csoporthoz:",
+ "Matrix ID": "Matrix azonosító",
+ "Matrix Room ID": "Szoba Matrix azonosító",
+ "email address": "E-mail cím",
+ "Try using one of the following valid address types: %(validTypesList)s.": "Próbáld meg valamelyik érvényes cím típust: %(validTypesList)s.",
+ "You have entered an invalid address.": "Érvénytelen címet adtál meg.",
+ "Failed to remove '%(roomName)s' from %(groupId)s": "A(z) %(groupId)s csoportból nem sikerült törölni: %(roomName)s",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Biztos, hogy törlöd a(z) %(roomName)s szobát a(z) %(groupId)s csoportból?",
+ "Invites sent": "Meghívó elküldve",
+ "Jump to read receipt": "Olvasási visszaigazolásra ugrás",
+ "Disable big emoji in chat": "Nagy emoji-k tiltása a csevegésben",
+ "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Itt nincs senki más! Szeretnél meghívni másokat vagy ne figyelmeztessünk az üres szobával kapcsolatban?",
+ "Message Pinning": "Üzenet kitűzése",
+ "Remove avatar": "Avatar törlése",
+ "Pinned Messages": "Kitűzött üzenetek",
+ "%(senderName)s changed the pinned messages for the room.": "%(senderName)s megváltoztatta a szoba kitűzött szövegeit.",
+ "Who would you like to add to this community?": "Kit szeretnél hozzáadni ehhez a közösséghez?",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Figyelem: minden személy akit hozzáadsz a közösséghez mindenki számára látható lesz aki ismeri a közösség azonosítóját",
+ "Invite new community members": "Új tagok meghívása a közösségbe",
+ "Invite to Community": "Meghívás a közösségbe",
+ "Which rooms would you like to add to this community?": "Melyik szobákat szeretnéd hozzáadni a közösséghez?",
+ "Warning: any room you add to a community will be publicly visible to anyone who knows the community ID": "Figyelem: minden szoba amit a közösséghez adsz látható lesz bárki számára aki ismeri a közösség azonosítóját",
+ "Add rooms to the community": "Szobák hozzáadása a közösséghez",
+ "Add to community": "Hozzáadás a közösséghez",
+ "Your community invitations have been sent.": "Elküldtük a közösségi meghívókat.",
+ "Failed to invite users to community": "Nem sikerült tagokat meghívni a közösségbe",
+ "Communities": "Közösségek",
+ "Unpin Message": "Üzenet levétele",
+ "Jump to message": "Üzenetre ugrás",
+ "No pinned messages.": "Nincsenek kitűzött üzenetek.",
+ "Loading...": "Betöltés...",
+ "Unnamed room": "Névtelen szoba",
+ "World readable": "Nyilvános",
+ "Guests can join": "Vendégek is csatlakozhatnak",
+ "No rooms to show": "Nincsenek megjelenítendő szobák",
+ "Invalid community ID": "Érvénytelen közösségi azonosító",
+ "'%(groupId)s' is not a valid community ID": "%(groupId)s nem egy érvényes közösségi azonosító",
+ "Related Communities": "Kapcsolódó közösségek",
+ "Related communities for this room:": "Kapcsolódó közösségek ehhez a szobához:",
+ "This room has no related communities": "Ebben a szobában nincsenek kapcsolódó közösségek",
+ "New community ID (e.g. +foo:%(localDomain)s)": "Új közösségi azonosító (pl.: +foo:%(localDomain)s)",
+ "Remove from community": "Elküldés a közösségből",
+ "Failed to remove user from community": "Nem sikerült elküldeni felhasználót a közösségből",
+ "Filter community members": "Közösségi tagok szűrése",
+ "Filter community rooms": "Közösségi szobák szűrése",
+ "Failed to remove room from community": "Nem sikerült kivenni a szobát a közösségből",
+ "Removing a room from the community will also remove it from the community page.": "A szoba kivétele a közösségből törölni fogja a közösség oldaláról is.",
+ "Community IDs may only contain alphanumeric characters": "A közösségi azonosító csak alfanumerikus karaktereket tartalmazhat",
+ "Create Community": "Új közösség",
+ "Community Name": "Közösség neve",
+ "Community ID": "Közösség azonosító",
+ "Add rooms to the community summary": "Szobák hozzáadása a közösségi összefoglalóhoz",
+ "Add users to the community summary": "Felhasználók hozzáadása a közösségi összefoglalóhoz",
+ "Failed to update community": "Közösség frissítése sikertelen",
+ "Leave Community": "Közösség elhagyása",
+ "Add rooms to this community": "Szobák hozzáadása ehhez a közösséghez",
+ "%(inviter)s has invited you to join this community": "%(inviter)s meghívott ebbe a közösségbe",
+ "You are a member of this community": "Tagja vagy ennek a közösségnek",
+ "You are an administrator of this community": "Adminisztrátora vagy ennek a közösségnek",
+ "Community Member Settings": "Közösségi tag beállítások",
+ "Publish this community on your profile": "Közösség publikálása a profilodon",
+ "Long Description (HTML)": "Hosszú leírás (HTML)",
+ "Community Settings": "Közösségi beállítások",
+ "Community %(groupId)s not found": "%(groupId)s közösség nem található",
+ "This Home server does not support communities": "Ez a saját szerver nem támogatja a közösségeket",
+ "Error whilst fetching joined communities": "Hiba a csatlakozott közösségek betöltésénél",
+ "Create a new community": "Új közösség létrehozása",
+ "Create a community to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Közösséged megjelenítéséhez hozz létre egy közösséget! Add meg a szobákat és az egyedi kezdő oldaladat amivel kijelölheted a helyed a Matrix univerzumban.",
+ "Join an existing community": "Meglévő közösséghez csatlakozás",
+ "To join an existing community you'll have to know its community identifier; this will look something like +example:matrix.org.": "Ahhoz hogy csatlakozni tudj egy meglévő közösséghez ismerned kell a közösségi azonosítót ami például így nézhet ki: +pelda:matrix.org.",
+ "example": "példa",
+ "Failed to load %(groupId)s": "Nem sikerült betölteni: %(groupId)s",
+ "Your Communities": "Közösségeid",
+ "You're not currently a member of any communities.": "Nem vagy tagja egyetlen közösségnek sem.",
+ "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Készíts közösséget hogy egybegyűjtsd a felhasználókat és szobákat! Készíts egy saját kezdőlapot amivel meghatározhatod magad a Matrix univerzumában.",
+ "%(names)s and %(count)s others are typing|other": "%(names)s és még %(count)s felhasználó gépel",
+ "And %(count)s more...|other": "És még %(count)s...",
+ "Something went wrong whilst creating your community": "Valami nem sikerült a közösség létrehozásánál",
+ "Mention": "Említ",
+ "Invite": "Meghív",
+ "Message removed": "Üzenet eltávolítva",
+ "Remove this room from the community": "A szoba törlése a közösségből",
+ "Delete Widget": "Kisalkalmazás törlése",
+ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "A kisalkalmazás törlése minden felhasználót érint a szobában. Tényleg törölni szeretnéd?",
+ "Mirror local video feed": "Helyi videó folyam tükrözése",
+ "Failed to withdraw invitation": "Nem sikerült visszavonni a meghívót",
+ "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "A közösségi azonosítók csak az alábbi karaktereket tartalmazhatják: a-z, 0-9 vagy '=_-./'",
+ "%(names)s and %(count)s others are typing|one": "%(names)s és más ír",
+ "%(senderName)s sent an image": "%(senderName)s küldött egy képet",
+ "%(senderName)s sent a video": "%(senderName)s küldött egy videót",
+ "%(senderName)s uploaded a file": "%(senderName)s feltöltött egy fájlt",
+ "Disinvite this user?": "Visszavonod a felhasználó meghívását?",
+ "Kick this user?": "Kirúgod a felhasználót?",
+ "Unban this user?": "Visszaengeded a felhasználót?",
+ "Ban this user?": "Kitiltod a felhasználót?",
+ "Drop here to favourite": "Kedvencnek jelöléshez ejtsd ide",
+ "Drop here to tag direct chat": "Közvetlen csevegéshez való megjelöléshez ejtsd ide",
+ "Drop here to restore": "Visszaállításhoz ejtsd ide",
+ "Drop here to demote": "Lefokozáshoz ejtsd ide",
+ "You have been kicked from this room by %(userName)s.": "%(userName)s kirúgott ebből a szobából.",
+ "You have been banned from this room by %(userName)s.": "%(userName)s kitiltott ebből a szobából.",
+ "You are trying to access a room.": "Megpróbálod elérni ezt a szobát.",
+ "Members only (since the point in time of selecting this option)": "Csak tagok számára (a beállítás kiválasztásától)",
+ "Members only (since they were invited)": "Csak tagoknak (a meghívásuk idejétől)",
+ "Members only (since they joined)": "Csak tagoknak (amióta csatlakoztak)",
+ "An email has been sent to %(emailAddress)s": "E-mail-t neki küldtünk: %(emailAddress)s",
+ "A text message has been sent to %(msisdn)s": "Szöveges üzenetet küldtünk neki: %(msisdn)s",
+ "Disinvite this user from community?": "Visszavonod a felhasználó meghívóját a közösségből?",
+ "Remove this user from community?": "Eltávolítod a felhasználót a közösségből?",
+ "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s",
+ "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)s %(count)s alkalommal csatlakozott",
+ "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)s csatlakozott",
+ "%(oneUser)sjoined %(count)s times|other": "%(oneUser)s %(count)s alkalommal csatlakozott",
+ "%(oneUser)sjoined %(count)s times|one": "%(oneUser)s csatlakozott",
+ "%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s %(count)s alkalommal távozott",
+ "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s távozott",
+ "%(oneUser)sleft %(count)s times|other": "%(oneUser)s %(count)s alkalommal távozott",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)s távozott",
+ "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s %(count)s alkalommal csatlakozott és távozott",
+ "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)s csatlakozott és távozott",
+ "%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)s %(count)s alkalommal csatlakozott és távozott",
+ "%(oneUser)sjoined and left %(count)s times|one": "%(oneUser)s csatlakozott és távozott",
+ "%(severalUsers)sleft and rejoined %(count)s times|other": "%(severalUsers)s %(count)s alkalommal távozott és újra csatlakozott",
+ "%(severalUsers)sleft and rejoined %(count)s times|one": "%(severalUsers)s távozott és újra csatlakozott",
+ "%(oneUser)sleft and rejoined %(count)s times|other": "%(oneUser)s %(count)s alkalommal távozott és újra csatlakozott",
+ "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)s távozott és újra csatlakozott",
+ "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)s %(count)s alkalommal elutasította a meghívóit",
+ "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)s elutasította a meghívóit",
+ "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s %(count)s alkalommal elutasította a meghívóit",
+ "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)s elutasította a meghívóit",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "%(severalUsers)s meghívóit %(count)s alkalommal visszavonták",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|one": "%(severalUsers)s visszavonták a meghívóit",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|other": "%(oneUser)s meghívóit %(count)s alkalommal vonták vissza",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|one": "%(oneUser)s meghívóit visszavonták",
+ "were invited %(count)s times|other": "%(count)s alkalommal lett meghívva",
+ "were invited %(count)s times|one": "meg lett hívva",
+ "was invited %(count)s times|other": "%(count)s alkalommal lett meghívva",
+ "was invited %(count)s times|one": "meg lett hívva",
+ "were banned %(count)s times|other": "%(count)s alkalommal lett kitiltva",
+ "were banned %(count)s times|one": "lett kitiltva",
+ "was banned %(count)s times|other": "%(count)s alkalommal lett kitiltva",
+ "was banned %(count)s times|one": "ki lett tiltva",
+ "were unbanned %(count)s times|other": "%(count)s alkalommal lett visszaengedve",
+ "were unbanned %(count)s times|one": "vissza lett engedve",
+ "was unbanned %(count)s times|other": "%(count)s alkalommal lett visszaengedve",
+ "was unbanned %(count)s times|one": "vissza lett engedve",
+ "were kicked %(count)s times|other": "%(count)s alkalommal lett kirúgva",
+ "were kicked %(count)s times|one": "ki lett rúgva",
+ "was kicked %(count)s times|other": "%(count)s alkalommal ki lett rúgva",
+ "was kicked %(count)s times|one": "ki lett rúgva",
+ "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s %(count)s alkalommal megváltoztatta a nevét",
+ "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)s megváltoztatta a nevét",
+ "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)s %(count)s alkalommal megváltoztatta a nevét",
+ "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s megváltoztatta a nevét",
+ "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)s %(count)s alkalommal megváltoztatta az avatarját",
+ "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s megváltoztatta az avatarját",
+ "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s %(count)s alkalommal megváltoztatta az avatarját",
+ "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s megváltoztatta az avatarját",
+ "%(items)s and %(count)s others|other": "%(items)s és még %(count)s másik",
+ "%(items)s and %(count)s others|one": "%(items)s és még egy másik",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Az e-mail leküldésre került ide: %(emailAddress)s. Ha követte a levélben lévő linket kattints alább.",
+ "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "%(roomName)s szoba láthatóságát nem lehet frissíteni ebben a közösségben: %(groupId)s",
+ "Visibility in Room List": "Láthatóság a szoba listában",
+ "Visible to everyone": "Mindenki számára látható",
+ "Only visible to community members": "Csak a közösség számára látható",
+ "Community Invites": "Közösségi meghívók",
+ "HTML for your community's page
\n\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n\n You can even use 'img' tags\n
\n": "HTML a közösségi oldalhoz
\n\n Használj hosszú leírást az tagok közösségbe való bemutatásához vagy terjessz\n hasznos linkeket\n
\n\n Még 'img' tagokat is használhatsz\n
\n",
+ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Ezek a szobák megjelennek a közösség tagjainak a közösségi oldalon. A közösség tagjai kattintással csatlakozhatnak a szobákhoz.",
+ "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "A közösségednek nincs bő leírása, HTML oldala ami megjelenik a közösség tagjainak.
A létrehozáshoz kattints ide!",
+ "Notify the whole room": "Az egész szoba értesítése",
+ "Room Notification": "Szoba értesítések",
+ "Show these rooms to non-members on the community page and room list?": "Mutassuk meg ezeket a szobákat kívülállóknak a közösségi oldalon és a szobák listájában?"
}
diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json
index 27bcc41dc8..5ec9252dd2 100644
--- a/src/i18n/strings/id.json
+++ b/src/i18n/strings/id.json
@@ -10,7 +10,6 @@
"Microphone": "Mikrofon",
"Camera": "Kamera",
"Alias (optional)": "Alias (pilihan)",
- "and": "dan",
"Are you sure?": "Anda yakin?",
"An error has occurred.": "Telah terjadi kesalahan.",
"Are you sure you want to reject the invitation?": "Anda yakin menolak undangannya?",
@@ -57,7 +56,6 @@
"Failed to reject invitation": "Gagal menolak undangan",
"Failed to send email": "Gagal mengirim email",
"Favourite": "Favorit",
- "favourite": "favorit",
"Favourites": "Favorit",
"Forgot your password?": "Lupa password?",
"Found a bug?": "Menemukan bug?",
@@ -66,8 +64,6 @@
"Invalid Email Address": "Alamat email tidak benar",
"Invited": "Diundang",
"Sign in with": "Masuk dengan",
- "joined": "bergabung",
- "joined and left": "bergabung dan berpisah",
"Leave room": "Meninggalkan ruang",
"Level:": "Tingkat:",
"Login as guest": "Masuk sebagai tamu",
@@ -95,7 +91,6 @@
"Public Chat": "Obrolan Publik",
"Reason": "Alasan",
"Register": "Registrasi",
- "rejected": "ditolak",
"Report it": "Laporkan",
"Return to app": "Kembali ke aplikasi",
"riot-web version:": "riot-web versi:",
@@ -112,7 +107,6 @@
"Server error": "Server bermasalah",
"Session ID": "ID Sesi",
"Settings": "Pengaturan",
- "Set": "Isi",
"Show panel": "Tampilkan panel",
"Sign in": "Masuk",
"Sign out": "Keluar",
@@ -122,13 +116,11 @@
"Success": "Sukses",
"This email address was not found": "Alamat email ini tidak ada",
"This room": "Ruang ini",
- "times": "kali",
"Turn Markdown off": "Matikan Markdown",
"Unable to add email address": "Tidak dapat menambahkan alamat email",
"Unable to verify email address.": "Tidak dapat memverifikasi alamat email.",
"Unable to load device list": "Tidak dapat memuat daftar perangkat",
"unencrypted": "tidak terenkripsi",
- "Unknown command": "Perintah tidak diketahui",
"unknown error code": "kode kesalahan tidak diketahui",
"unknown device": "perangkat tidak diketahui",
"User ID": "ID Pengguna",
@@ -170,7 +162,6 @@
"Active call (%(roomName)s)": "Panggilan aktif (%(roomName)s)",
"Admin": "Admin",
"Admin Tools": "Alat admin",
- "And %(count)s more...": "Dan %(count)s lagi...",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Tidak ada Izin Media, klik disini untuk meminta.",
"No Webcams detected": "Tidak ada Webcam terdeteksi",
@@ -180,15 +171,12 @@
"Hide removed messages": "Sembunyikan pesan yang dihapus",
"Always show message timestamps": "Selalu tampilkan cap waktu dari pesan",
"Authentication": "Autentikasi",
- "and one other...": "dan satu lainnya...",
"An email has been sent to": "Sebuah email telah dikirim ke",
"Are you sure you want to leave the room '%(roomName)s'?": "Anda yakin ingin meninggalkan ruang '%(roomName)s'?",
"A new password must be entered.": "Password baru harus diisi.",
"%(names)s and one other are typing": "%(names)s dan satu lagi sedang mengetik",
"%(items)s and %(lastItem)s": "%(items)s dan %(lastItem)s",
"%(names)s and %(lastPerson)s are typing": "%(names)s dan %(lastPerson)s sedang mengetik",
- "%(names)s and %(count)s others are typing": "%(names)s dan %(count)s lainnya sedang mengetik",
- "and %(overflowCount)s others...": "dan %(overflowCount)s lainnya...",
"%(items)s and %(remaining)s others": "%(items)s dan %(remaining)s lainnya",
"%(items)s and one other": "%(items)s dan satu lainnya",
"%(senderName)s answered the call.": "%(senderName)s telah menjawab panggilan.",
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index cd690d2e88..1bc002f5f4 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -17,13 +17,6 @@
"Dismiss": "Scarta",
"Error": "Errore",
"Favourite": "Preferito",
- "Sunday": "Domenica",
- "Monday": "Lunedì",
- "Tuesday": "Martedì",
- "Wednesday": "Mercoledì",
- "Thursday": "Giovedì",
- "Friday": "Venerdì",
- "Saturday": "Sabato",
"OK": "OK",
"Drop here %(toAction)s": "Rilascia qui %(toAction)s",
"Failed to change password. Is your password correct?": "Modifica password fallita. La tua password è corretta?",
@@ -52,5 +45,7 @@
"Always show message timestamps": "Mostra sempre il timestamps dei messaggi",
"Authentication": "Autenticazione",
"Alias (optional)": "Alias (opzionale)",
- "and": "e"
+ "Add a widget": "Aggiungi un widget",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un messaggio di testo è stato inviato a +%(msisdn)s. Inserisci il codice di verifica che contiene",
+ "Edit": "Modifica"
}
diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json
index 98b5b6c286..73b1a915ec 100644
--- a/src/i18n/strings/ja.json
+++ b/src/i18n/strings/ja.json
@@ -13,7 +13,6 @@
"Enable encryption": "暗号会話開始",
"Encryption is enabled in this room": "この部屋の発言は暗号化されています",
"Favourite": "お気に入り",
- "favourite": "お気に入り",
"Favourites": "お気に入り",
"Hide read receipts": "発言を読んでも既読状態にしない",
"Invited": "招待中",
@@ -30,13 +29,6 @@
"Settings": "設定",
"Start chat": "対話開始",
"New Password": "新しいパスワード",
- "Sunday": "日曜日",
- "Monday": "月曜日",
- "Tuesday": "火曜日",
- "Wednesday": "水曜日",
- "Thursday": "木曜日",
- "Friday": "金曜日",
- "Saturday": "土曜日",
"Failed to change password. Is your password correct?": "パスワード変更に失敗しました。パスワードは正しいですか?",
"Only people who have been invited": "この部屋に招待された人のみ参加可能",
"Hide removed messages": "削除された発言の印を表示しない",
@@ -65,6 +57,5 @@
"No Webcams detected": "カメラが見つかりません",
"Microphone": "マイク",
"Camera": "カメラ",
- "%(names)s and %(count)s others are typing": "%(names)s と、他 %(count)s 名が入力中",
"Are you sure?": "本当によろしいですか?"
}
diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json
index 307ee762ef..f3d54e9449 100644
--- a/src/i18n/strings/ko.json
+++ b/src/i18n/strings/ko.json
@@ -14,13 +14,6 @@
"Settings": "설정",
"Start chat": "이야기하기",
"unknown error code": "알 수 없는 오류 코드",
- "Sunday": "일요일",
- "Monday": "월요일",
- "Tuesday": "화요일",
- "Wednesday": "수요일",
- "Thursday": "목요일",
- "Friday": "금요일",
- "Saturday": "토요일",
"OK": "알았어요",
"Continue": "게속하기",
"a room": "방",
@@ -44,7 +37,6 @@
"Always show message timestamps": "항상 메시지에 시간을 보이기",
"Authentication": "인증",
"Alias (optional)": "별명 (선택)",
- "and": "그리고",
"A new password must be entered.": "새 비밀번호를 입력해주세요.",
"An error has occurred.": "오류가 일어났어요.",
"Anyone": "누구나",
@@ -85,15 +77,12 @@
"Favourite": "즐겨찾기",
"Operation failed": "작업 실패",
"Failed to change password. Is your password correct?": "비밀번호를 바꾸지 못했어요. 이 비밀번호가 정말 맞으세요?",
- "sl": "슬로베니아어",
- "sq": "알바니아어",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "+%(msisdn)s로 문자 메시지를 보냈어요. 인증 번호를 입력해주세요",
"%(targetName)s accepted an invitation.": "%(targetName)s님이 초대를 수락했어요.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s님이 %(displayName)s님에게서 초대를 수락했어요.",
"Access Token:": "접근 토큰:",
"Active call (%(roomName)s)": "(%(roomName)s)에서 전화를 걸고 받을 수 있어요",
"Add a topic": "주제 추가",
- "And %(count)s more...": "그리고 %(count)s 더 보기...",
"Missing Media Permissions, click here to request.": "저장소 권한을 잃었어요, 여기를 눌러 다시 요청해주세요.",
"You may need to manually permit Riot to access your microphone/webcam": "수동으로 라이엇에 마이크와 카메라를 허용해야 할 수도 있어요",
"%(items)s and %(remaining)s others": "%(items)s과 %(remaining)s",
@@ -103,7 +92,6 @@
"and %(count)s others...|other": "그리고 %(count)s...",
"%(names)s and %(lastPerson)s are typing": "%(names)s님과 %(lastPerson)s님이 입력중",
"%(names)s and one other are typing": "%(names)s님과 다른 분이 입력중",
- "%(names)s and %(count)s others are typing": "%(names)s님과 %(count)s 분들이 입력중",
"An email has been sent to": "이메일을 보냈어요",
"%(senderName)s answered the call.": "%(senderName)s님이 전화를 받았어요.",
"Anyone who knows the room's link, apart from guests": "손님을 제외하고, 방의 주소를 아는 누구나",
@@ -152,7 +140,6 @@
"Decrypt %(text)s": "해독 %(text)s",
"Decryption error": "해독 오류",
"Delete": "지우기",
- "demote": "등급 낮추기",
"Deops user with given id": "받은 ID로 사용자의 등급을 낮추기",
"Device ID:": "장치 ID:",
"Device key:": "장치 키:",
@@ -196,7 +183,6 @@
"Failed to load timeline position": "타임라인 위치를 불러오지 못했어요",
"Failed to lookup current room": "현재 방을 찾지 못했어요",
"Failed to mute user": "사용자의 알림을 끄지 못했어요",
- "Failed to register as guest:": "손님으로 등록하지 못했어요:",
"Failed to reject invite": "초대를 거절하지 못했어요",
"Failed to reject invitation": "초대를 거절하지 못했어요",
"Failed to save settings": "설정을 저장하지 못했어요",
@@ -211,7 +197,6 @@
"Failed to upload profile picture!": "자기 소개에 사진을 올리지 못했어요!",
"Failed to verify email address: make sure you clicked the link in the email": "이메일 주소를 확인하지 못했어요: 메일의 주소를 눌렀는지 확인해보세요",
"Failure to create room": "방을 만들지 못했어요",
- "favourite": "즐겨찾기",
"Favourites": "즐겨찾기",
"Fill screen": "화면 채우기",
"Filter room members": "방 구성원 거르기",
@@ -223,7 +208,6 @@
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s를 %(fromPowerLevel)s에서 %(toPowerLevel)s로",
"Guest access is disabled on this Home Server.": "손님은 이 홈 서버에 접근하실 수 없어요.",
"Guests cannot join this room even if explicitly invited.": "손님은 분명하게 초대받았어도 이 방에 들어가실 수 없어요.",
- "had": "했어요",
"Hangup": "전화 끊기",
"Hide read receipts": "읽음 확인 표시 숨기기",
"Hide Text Formatting Toolbar": "문자 서식 도구 숨기기",
@@ -256,8 +240,6 @@
"Sign in with": "로그인",
"Join as voice or video.": "음성 또는 영상으로 참여하세요.",
"Join Room": "방에 들어가기",
- "joined and left": "들어왔다가 떠남",
- "joined": "들어옴",
"%(targetName)s joined the room.": "%(targetName)s님이 방에 들어오셨어요.",
"Joins room with given alias": "받은 가명으로 방에 들어가기",
"Jump to first unread message.": "읽지 않은 첫 메시지로 이동할래요.",
@@ -267,8 +249,6 @@
"Labs": "실험실",
"Last seen": "마지막으로 본 곳",
"Leave room": "방 떠나기",
- "left and rejoined": "떠났다가 다시 들어옴",
- "left": "떠났음",
"%(targetName)s left the room.": "%(targetName)s님이 방을 떠나셨어요.",
"Level:": "등급:",
"Local addresses for this room:": "이 방의 로컬 주소:",
@@ -295,7 +275,6 @@
"Must be viewing a room": "방을 둘러봐야만 해요",
"Name": "이름",
"Never send encrypted messages to unverified devices from this device": "이 장치에서 인증받지 않은 장치로 암호화한 메시지를 보내지 마세요",
- "Never send encrypted messages to unverified devices in this room": "이 방에서 인증받지 않은 장치로 암호화한 메시지를 보내지 마세요",
"Never send encrypted messages to unverified devices in this room from this device": "이 장치에서 이 방의 인증받지 않은 장치로 암호화한 메시지를 보내지 마세요",
"New address (e.g. #foo:%(localDomain)s)": "새 주소 (예. #foo:%(localDomain)s)",
"New password": "새 비밀번호",
@@ -340,7 +319,6 @@
"Revoke Moderator": "조정자 철회",
"Refer a friend to Riot:": "라이엇을 친구에게 추천해주세요:",
"Register": "등록하기",
- "rejected": "거절함",
"%(targetName)s rejected the invitation.": "%(targetName)s님이 초대를 거절하셨어요.",
"Reject invitation": "초대 거절",
"Rejoin": "다시 들어가기",
@@ -351,7 +329,6 @@
"%(senderName)s requested a VoIP conference.": "%(senderName)s님이 인터넷전화 회의를 요청하셨어요.",
"Report it": "보고하기",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "비밀번호를 다시 설정하면 현재 모든 장치의 종단간 암호화 키가 다시 설정되고, 먼저 방의 키를 내보내고 나중에 다시 불러오지 않는 한, 암호화한 이야기 기록을 읽을 수 없게 되어요. 앞으로는 이 기능을 더 좋게 만들 거에요.",
- "restore": "복구하기",
"Results from DuckDuckGo": "덕덕고에서 검색한 결과",
"Return to app": "앱으로 돌아가기",
"Return to login screen": "로그인 화면으로 돌아가기",
@@ -389,7 +366,6 @@
"Server unavailable, overloaded, or something else went wrong.": "서버를 쓸 수 없거나 과부하거나, 다른 문제가 있어요.",
"Session ID": "세션 ID",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s님이 별명을 %(displayName)s로 바꾸셨어요.",
- "Set": "설정하기",
"Show panel": "패널 보이기",
"Show Text Formatting Toolbar": "문자 서식 도구 보이기",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "시간을 12시간제로 보이기 (예. 오후 2:30)",
@@ -407,7 +383,6 @@
"Start Chat": "이야기하기",
"Submit": "보내기",
"Success": "성공",
- "tag direct chat": "직접 이야기 지정하기",
"Tagged as: ": "지정함: ",
"The default role for new room members is": "방 새 구성원의 기본 역할",
"The main address for this room is": "이 방의 주요 주소",
@@ -432,15 +407,11 @@
"This room": "이 방",
"This room is not accessible by remote Matrix servers": "이 방은 원격 매트릭스 서버에 접근할 수 없어요",
"This room's internal ID is": "방의 내부 ID",
- "times": "번",
- "to browse the directory": "목록에서 찾으려면",
"to demote": "우선순위 낮추기",
"to favourite": "즐겨찾기",
"To link to a room it must have an address.": "방에 연결하려면 주소가 있어야 해요.",
- "to make a room or": "방을 만들거나 혹은",
"To reset your password, enter the email address linked to your account": "비밀번호을 다시 설정하려면, 계정과 연결한 이메일 주소를 입력해주세요",
"to restore": "복구하려면",
- "to start a chat with someone": "다른 사람과 이야기하기",
"to tag direct chat": "직접 이야기를 지정하려면",
"To use it, just wait for autocomplete results to load and tab through them.": "이 기능을 사용하시려면, 자동완성 결과가 나오길 기다리신 뒤에 탭으로 움직여주세요.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 문제의 메시지를 볼 수 있는 권한이 없어요.",
@@ -513,7 +484,6 @@
"Would you like to accept or decline this invitation?": "초대를 받아들이거나 거절하시겠어요?",
"You already have existing direct chats with this user:": "이미 이 사용자와 직접 이야기하는 중이에요:",
"You are already in a call.": "이미 자신이 통화 중이네요.",
- "You're not in any rooms yet! Press": "어떤 방에도 들어가 있지 않으세요! 누르세요",
"Press to start a chat with someone": "다른 사람과 이야기하려면 을 누르세요",
"WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "주의: 키 확인 실패! %(userId)s와 장치 %(deviceId)s의 서명 키 \"%(fprint)s\"는 주어진 키 \"%(fingerprint)s\"와 맞지 않아요. 누가 이야기를 가로채는 중일 수도 있어요!",
"You're not in any rooms yet! Press to make a room or to browse the directory": "어떤 방에도 들어가 있지 않으세요! 을 눌러서 방을 만들거나 를 눌러 목록에서 방을 찾아보세요",
@@ -529,12 +499,10 @@
"You have enabled URL previews by default.": "URL 미리보기 쓰기를 기본으로 하셨어요.",
"You have no visible notifications": "보여드릴 알림이 없어요",
"You may wish to login with a different account, or add this email to this account.": "다른 계정으로 로그인하거나, 이 이메일을 이 계정에 추가할 수도 있어요.",
- "you must be a": "해야해요",
"You must register to use this functionality": "이 기능을 쓰시려면 계정을 등록하셔야 해요",
"You need to be able to invite users to do that.": "그러려면 사용자를 초대하실 수 있어야 해요.",
"You need to be logged in.": "로그인하셔야 해요.",
"You need to enter a user name.": "사용자 이름을 입력하셔야 해요.",
- "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "이 장치에 종단간 암호화 키를 만들고 공개 키를 홈 서버에 보내려면 다시 로그인해야해요. 한 번만 하시면 돼요. 불편을 드려 죄송합니다.",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "이메일 주소가 이 홈 서버의 매트릭스 ID와 관련이 없어요.",
"Your password has been reset": "비밀번호를 다시 설정했어요",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "비밀번호를 바꾸었어요. 다른 장치에서 다시 로그인할 때까지 알림을 받지 않을 거에요",
@@ -588,7 +556,6 @@
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "전부 다시 보내거나 취소하세요. 다시 보내거나 취소할 메시지를 하나씩 고르실 수도 있어요.",
"(~%(count)s results)|one": "(~%(count)s 결과)",
"(~%(count)s results)|other": "(~%(count)s 결과)",
- "or": "혹은",
"Active call": "전화 중",
"bold": "굵은 획",
"italic": "기울임꼴",
@@ -743,7 +710,7 @@
"Start chatting": "이야기하기",
"Start Chatting": "이야기하기",
"Click on the button below to start chatting!": "이야기하려면 아래 버튼을 누르세요!",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName님이 방 아바타를
로 바꾸셨어요",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s님이 방 아바타를
로 바꾸셨어요",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s님이 방 아바타를 지우셨어요.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s가 %(roomName)s 방의 아바타를 바꾸셨어요",
"Username available": "쓸 수 있는 사용자 이름",
diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json
index 0a5e999015..63a504d71e 100644
--- a/src/i18n/strings/lv.json
+++ b/src/i18n/strings/lv.json
@@ -13,7 +13,6 @@
"Add phone number": "Pievieno tālruņa numuru",
"Admin": "Administrators",
"Admin Tools": "Administratora rīki",
- "And %(count)s more...": "Un vēl %(count)s citi...",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Nav pieejas medija saturam. Klikšķini šeit, lai pieprasītu.",
"No Microphones detected": "Mikrofoni nav atrasti",
@@ -29,15 +28,11 @@
"Always show message timestamps": "Vienmēr rādīt ziņojumu laika zīmogu",
"Authentication": "Autentifikācija",
"Alias (optional)": "Aizstājējvārds (neobligāts)",
- "and": "un",
"%(items)s and %(remaining)s others": "%(items)s un %(remaining)s citi",
"%(items)s and one other": "%(items)s un viens cits",
"%(items)s and %(lastItem)s": "%(items)s un %(lastItem)s",
- "and %(overflowCount)s others...": "un %(overflowCount)s citi...",
- "and one other...": "un viens cits...",
"%(names)s and %(lastPerson)s are typing": "%(names)s un %(lastPerson)s raksta",
"%(names)s and one other are typing": "%(names)s un viens cits raksta",
- "%(names)s and %(count)s others are typing": "%(names)s un %(count)s citi raksta",
"An email has been sent to": "Epasts tika nosūtīts",
"A new password must be entered.": "Nepieciešams ievadīt jauno paroli.",
"%(senderName)s answered the call.": "%(senderName)s atbildēja zvanam.",
@@ -110,7 +105,6 @@
"Decrypt %(text)s": "Atšifrēt %(text)s",
"Decryption error": "Atšifrēšanas kļūda",
"Delete": "Dzēst",
- "demote": "samazināt",
"Deops user with given id": "Noņemt operatora statusu lietotājam ar norādīto id",
"Default": "Noklusējuma",
"Device already verified!": "Ierīce ir jau verificēta!",
@@ -173,7 +167,6 @@
"Failed to load timeline position": "Neizdevās ielādēt laikpaziņojumu pozīciju",
"Failed to lookup current room": "Neizdevās pārlūkot pašreizējo istabu",
"Failed to mute user": "Neizdevās apklusināt lietotāju",
- "Failed to register as guest:": "Neizdevās reģistrēt kā viesi:",
"Failed to reject invite": "Neizdevās noraidīt uzaicinājumu",
"Failed to reject invitation": "Neizdevās noraidīt uzaicinājumu",
"Failed to save settings": "Neizdevās saglabāt uzstādījumus",
@@ -189,7 +182,6 @@
"Failed to verify email address: make sure you clicked the link in the email": "Neizdevās apstiprināt epasta adresi. Pārbaudi, vai Tu esi noklikšķinājis/usi saiti epasta ziņā",
"Failure to create room": "Neizdevās izveidot istabu",
"Favourite": "Favorīts",
- "favourite": "favorīts",
"Favourites": "Favorīti",
"Fill screen": "Aizpildīt ekrānu",
"Filter room members": "Filtrēt istabas biedrus",
@@ -201,7 +193,6 @@
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s no %(fromPowerLevel)s uz %(toPowerLevel)s",
"Guest access is disabled on this Home Server.": "Šajā serverī viesu pierakstīšanās nav iespējama.",
"Guests cannot join this room even if explicitly invited.": "Viesi nevar pievienoties šai istabai pat ja ir uzaicināti.",
- "had": "bija",
"Hangup": "Aizturēt",
"Hide read receipts": "Slēpt izlasītās receptes",
"Hide Text Formatting Toolbar": "Slēpt teksta formatēšanas rīkjoslu",
@@ -233,8 +224,6 @@
"Sign in with": "Pierakstīties ar",
"Join as voice or video.": "Pievienoties kā balss vai video.",
"Join Room": "Pievienoties istabai",
- "joined and left": "pievienojās un atstāja",
- "joined": "pievienojās",
"%(targetName)s joined the room.": "%(targetName)s pievienojās istabai.",
"Joins room with given alias": "Pievieno istabai ar uzdoto aizstājējvārdu",
"Jump to first unread message.": "Pārlekt uz pirmo neizlasīto ziņu.",
@@ -244,8 +233,6 @@
"Labs": "Laboratorija",
"Last seen": "Pēdējo reizi redzēts/a",
"Leave room": "Pamest istabu",
- "left and rejoined": "atstāja un pievienojās atkārtoti",
- "left": "atstāja",
"%(targetName)s left the room.": "%(targetName)s atstāja istabu.",
"Level:": "Līmenis:",
"Local addresses for this room:": "Šīs istabas lokālās adreses:",
@@ -277,7 +264,6 @@
"%(serverName)s Matrix ID": "%(serverName)s Matrix ID",
"Name": "Vārds",
"Never send encrypted messages to unverified devices from this device": "Nekad nesūti no šīs ierīces šifrētas ziņas uz neverificētām ierīcēm",
- "Never send encrypted messages to unverified devices in this room": "Nekad nesūti šifrētas ziņas uz neverificētām ierīcēm šajā istabā",
"Never send encrypted messages to unverified devices in this room from this device": "Nekad nesūti no šīs ierīces šifrētas ziņas neverificētām ierīcēm šajā istabā",
"New address (e.g. #foo:%(localDomain)s)": "Jauna adrese (piemēram #kautkas:%(localDomain)s)",
"New password": "Jauna parole",
@@ -321,7 +307,6 @@
"Revoke Moderator": "Atcelt moderatoru",
"Refer a friend to Riot:": "Nosūtīt draugu uz Riot:",
"Register": "Reģistrēties",
- "rejected": "noraidīts",
"%(targetName)s rejected the invitation.": "%(targetName)s noraidīja uzaicinājumu.",
"Reject invitation": "Noraidīt uzaicinājumu",
"Rejoin": "Pievienoties atkārtoti",
@@ -334,7 +319,6 @@
"%(senderName)s requested a VoIP conference.": "%(senderName)s vēlas VoIP konferenci.",
"Report it": "Ziņot par to",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Paroles atiestatīšana atiestatīs visas ierīce-ierīce šifrēšanas atslēgas visās ierīcēs, padarot čata šifrēto ziņu vēsturi nelasāmu, ja vien Tu pirms tam neesi eksportējis savas istabas atslēgas un atkārtoti importējis tās atpakaļ. Nākotnē šo ir plānots uzlabot.",
- "restore": "atjaunot",
"Results from DuckDuckGo": "Rezultāti no DuckDuckGo",
"Return to app": "Atgriezties aplikācijā",
"Return to login screen": "Atgriezties uz pierakstīšanās lapu",
@@ -462,7 +446,6 @@
"Server may be unavailable, overloaded, or you hit a bug.": "Serveris var nebūt pieejams, ir pārslogots, vai arī sastapi neparedzētu kļūdu.",
"Server unavailable, overloaded, or something else went wrong.": "Serveris nav pieejams, ir pārslogots, vai arī ir notikusi cita, neparedzēta, kļūda.",
"Session ID": "Sesijas identifikators (ID)",
- "Set": "Iestatīt",
"Settings": "Iestatījumi",
"Show panel": "Rādīt paneli",
"Show Text Formatting Toolbar": "Rādīt teksta formatēšanas rīkjoslu",
@@ -481,7 +464,6 @@
"Start Chat": "Sākt čatu",
"Submit": "Iesniegt",
"Success": "Veiksmīgi",
- "tag direct chat": "atzīmēt tiešo čatu",
"Tagged as: ": "Atzīmēts,kā: ",
"The main address for this room is": "Galvenā šīs istabas adrese ir",
"The phone number entered looks invalid": "Ievadītais telefona numurs izskatās nepareizs",
@@ -501,15 +483,11 @@
"This room": "Šī istaba",
"This room is not accessible by remote Matrix servers": "Šī istaba nav pieejama no attālinātajiem Matrix serveriem",
"This room's internal ID is": "Šīs istabas iekšējais ID ir",
- "times": "reizes",
- "to browse the directory": "lai pārlūkotu katalogu",
"to demote": "lai samazinātu",
"to favourite": "lai pievienotu favorītiem",
"To link to a room it must have an address.": "Lai ieliktu saiti uz istabu, tai ir jābūt piešķirtai adresei.",
- "to make a room or": "lai izveidotu istabu vai",
"To reset your password, enter the email address linked to your account": "Lai atiestatītu savu paroli, ievadi tavam kontam piesaistīto epasta adresi",
"to restore": "lai atjaunotu",
- "to start a chat with someone": "lai uzstāktu čatu ar kādu",
"to tag direct chat": "lai pieliktu birku tiešajam čatam",
"To use it, just wait for autocomplete results to load and tab through them.": "Lai to izmantotu, vienkārši gaidi, kamēr ielādējas automātiski ieteiktie rezultāti, un pārvietojies caur tiem.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Notika mēģinājums ielādēt šīs istabas specifisku laikpaziņojumu sadaļu, bet Tev nav atļaujas skatīt šo ziņu.",
@@ -526,7 +504,6 @@
"unencrypted": "nešifrēts",
"Unencrypted message": "Nešifrēta ziņa",
"unknown caller": "nezināms zvanītājs",
- "Unknown command": "Nezināma komanda",
"unknown device": "nezināma ierīce",
"unknown error code": "nezināms kļūdas kods",
"Unknown (user, device) pair:": "Nezināms (lietotājs, ierīce) pāris:",
@@ -587,7 +564,6 @@
"You do not have permission to post to this room": "Tev nav vajadzīgās atļaujas pievienot ziņas šajā istabā",
"You have disabled URL previews by default.": "URL priekšskatījums pēc noklusējuma Tev ir atspējots.",
"You may wish to login with a different account, or add this email to this account.": "Tu varētu, iespējams, vēlēties pierakstīties no cita konta vai piesaistīt šo epastu šim kontam.",
- "you must be a": "Tev ir jābūt",
"You must register to use this functionality": "Lai izmantotu šo funkcionalitāti, Tev ir jāreģistrējas",
"You need to be able to invite users to do that.": "Lai to darītu, Tev ir jāspēj uzaicināt lietotājus.",
"You need to be logged in.": "Tev ir jāpierakstās.",
@@ -619,7 +595,7 @@
"Dec": "Dec.",
"Set a display name:": "Iestatīt redzamo vārdu:",
"This image cannot be displayed.": "Šo attēlu nav iespējams parādīt.",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName nomainīja istabas attēlu uz
",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s nomainīja istabas attēlu uz
",
"Upload an avatar:": "Augšuplādē profila attēlu:",
"This server does not support authentication with a phone number.": "Šis serveris neatbalsta autentifikāciju pēc telefona numura.",
"Missing password.": "Trūkst parole.",
@@ -639,15 +615,7 @@
"Connectivity to the server has been lost.": "Savienojums ar serveri tika zaudēts.",
"Sent messages will be stored until your connection has returned.": "Nosūtītās ziņas tiks saglabātas tiklīdz savienojums tiks atjaunots.",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Sūtīt vēlreiz visas vai atcelt visas. Tu vari arī atlasīt atsevišķas ziņas, kuras sūtīt vai atcelt.",
- "or": "vai",
"Active call": "Aktīvs zvans",
- "Monday": "Pirmdiena",
- "Tuesday": "Otrdiena",
- "Wednesday": "Trešdiena",
- "Thursday": "Ceturtdiena",
- "Friday": "Piektdiena",
- "Saturday": "Sestdiena",
- "Sunday": "Svētdiena",
"bold": "trekns",
"italic": "itāļu",
"strike": "svītrots",
@@ -779,7 +747,6 @@
"Hide avatar and display name changes": "Slēpt profila attēlu un rādīt redzamā vārda izmaiņas",
"Integrations Error": "Integrācijas kļūda",
"Publish this room to the public in %(domain)s's room directory?": "Publicēt šo istabu publiskajā %(domain)s katalogā?",
- "Matrix Apps": "Matrix Aplikācijas",
"AM": "AM",
"PM": "PZ",
"NOTE: Apps are not end-to-end encrypted": "PIEZĪME: Aplikācijās nav ierīce-ierīce šifrēšanas",
@@ -793,30 +760,14 @@
"You do not have permission to do that in this room.": "Tev nav atļaujas šai darbībai šajā istabā.",
"Verifies a user, device, and pubkey tuple": "Verificē lietotāju, ierīci, un publiskās atslēgas",
"Autocomplete Delay (ms):": "Automātiskās aizpildīšanas aiztures laiks (ms):",
- "This Home server does not support groups": "Šis serveris neatbalsta grupas",
"Loading device info...": "Ielādē ierīces informāciju...",
- "Groups": "Grupas",
- "Create a new group": "Izveidot jaunu grupu",
- "Create Group": "Izveidot grupu",
- "Group Name": "Grupas nosaukums",
"Example": "Piemērs",
"Create": "Izveidot",
- "Group ID": "Grupas ID",
- "+example:%(domain)s": "+example:%(domain)s",
- "Group IDs must be of the form +localpart:%(domain)s": "Grupas ID ir jābūt sekojošā formātā: +localpart:%(domain)s",
- "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Vienīgi ir iespējams izveidot grupas tavā serverī: izmanto grupas ID, kurš beidzas ar %(domain)s",
"Room creation failed": "Neizdevās izveidot istabu",
- "You are a member of these groups:": "Tu esi sekojošo grupu biedrs:",
- "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Izveido grupu, lai prezentētu savu komūnu! Definē istabu grupu un savu personīgo mājaslapu, lai iezīmētu savu vietu Matrix universumā.",
- "Join an existing group": "Pievienoties eksistējošai grupai",
- "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Lai pievienotos eksistējošai grupai, Tev ir jāzina šīs grupas identifikators. Piemēram: +latvija:matrix.org.",
"Featured Rooms:": "Ieteiktās istabas:",
- "Error whilst fetching joined groups": "Notika kļūda, nosakot pievienotās grupas",
"Featured Users:": "Ieteiktie lietotāji:",
- "Edit Group": "Labot grupu",
"Automatically replace plain text Emoji": "Automātiski aizvieto tekstu ar emocijikonu (emoji)",
"Failed to upload image": "Neizdevās augšupielādēt attēlu",
- "Failed to update group": "Neizdevās atjaunināt grupu",
"Hide avatars in user and room mentions": "Slēpt profila attēlus lietotāja un istabas pieminējumatzīmēs (@mention)",
"%(widgetName)s widget added by %(senderName)s": "%(senderName)s pievienoja %(widgetName)s vidžetu",
"%(widgetName)s widget removed by %(senderName)s": "%(senderName)s dzēsa vidžetu %(widgetName)s",
diff --git a/src/i18n/strings/ml.json b/src/i18n/strings/ml.json
index bb15c732cd..586f145642 100644
--- a/src/i18n/strings/ml.json
+++ b/src/i18n/strings/ml.json
@@ -18,13 +18,6 @@
"Settings": "സജ്ജീകരണങ്ങള്",
"Start chat": "ചാറ്റ് തുടങ്ങുക",
"unknown error code": "അപരിചിത എറര് കോഡ്",
- "Sunday": "ഞായര്",
- "Monday": "തിങ്കള്",
- "Tuesday": "ചൊവ്വ",
- "Wednesday": "ബുധന്",
- "Thursday": "വ്യാഴം",
- "Friday": "വെള്ളി",
- "Saturday": "ശനി",
"OK": "ശരി",
"Failed to change password. Is your password correct?": "രഹസ്യവാക്ക് മാറ്റാന് സാധിച്ചില്ല. രഹസ്യവാക്ക് ശരിയാണോ ?",
"Continue": "മുന്നോട്ട്",
diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json
index 0967ef424b..4d52e606eb 100644
--- a/src/i18n/strings/nb_NO.json
+++ b/src/i18n/strings/nb_NO.json
@@ -1 +1,3 @@
-{}
+{
+ "Room directory": "Romkatalog"
+}
diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json
index e800d9e57f..357ab92026 100644
--- a/src/i18n/strings/nl.json
+++ b/src/i18n/strings/nl.json
@@ -1,6 +1,5 @@
{
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Voer alsjeblieft de verificatiecode in die is verstuurd naar +%(msisdn)s",
- "accept": "accepteer",
"%(targetName)s accepted an invitation.": "%(targetName)s heeft een uitnodiging geaccepteerd.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s heeft de uitnodiging voor %(displayName)s geaccepteerd.",
"Account": "Account",
@@ -12,8 +11,6 @@
"Algorithm": "Algoritme",
"Always show message timestamps": "Laat altijd tijdstempels van berichten zien",
"Authentication": "Authenticatie",
- "an address": "een adres",
- "and": "en",
"%(items)s and %(remaining)s others": "%(items)s en %(remaining)s andere",
"%(items)s and one other": "%(items)s en één andere",
"%(items)s and %(lastItem)s": "%(items)s en %(lastItem)s",
@@ -21,7 +18,6 @@
"and %(count)s others...|one": "en één andere...",
"%(names)s and %(lastPerson)s are typing": "%(names)s en %(lastPerson)s zijn aan het typen",
"%(names)s and one other are typing": "%(names)s en één andere zijn aan het typen",
- "%(names)s and %(count)s others are typing": "%(names)s en %(count)s andere zijn aan het typen",
"An email has been sent to": "Er is een e-mail verzonden naar",
"A new password must be entered.": "Er moet een nieuw wachtwoord worden ingevoerd.",
"%(senderName)s answered the call.": "%(senderName)s heeft deelgenomen aan het audiogesprek.",
@@ -30,7 +26,6 @@
"Anyone who knows the room's link, including guests": "Iedereen die de kamerlink weet, inclusief gasten",
"Are you sure?": "Weet je het zeker?",
"Are you sure you want to reject the invitation?": "Weet je zeker dat je de uitnodiging wilt weigeren?",
- "Are you sure you want upload the following files?": "Weet je zeker dat je de volgende bestanden wilt uploaden?",
"Attachment": "Bijlage",
"Autoplay GIFs and videos": "Start GIFs en videos automatisch",
"%(senderName)s banned %(targetName)s.": "%(senderName)s heeft %(targetName)s verbannen.",
@@ -41,7 +36,6 @@
"Bug Report": "Bug report",
"Bulk Options": "Bulk opties",
"Call Timeout": "Gesprek time-out",
- "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Kan niet met de homeserver verbinden - controleer alsjeblieft je verbinding en wees zeker dat je homeserver's SSL certificaat vertrouwd wordt.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Kan niet met de thuisserver verbinden via HTTP wanneer er een HTTPS-URL in je browser balk staat. Gebruik HTTPS of activeer onveilige scripts.",
"Can't load user settings": "Kan de gebruikersinstellingen niet laden",
"Change Password": "Wachtwoord veranderen",
@@ -55,7 +49,6 @@
"Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Het veranderen van het wachtwoord zal op het moment alle eind-tot-eind encryptie sleutels resetten, wat alle versleutelde chat geschiedenis onleesbaar zou maken, behalve als je eerst je kamer sleutels exporteert en achteraf opnieuw importeert. Dit zal worden verbeterd in de toekomst.",
"Clear Cache and Reload": "Legen cache en herlaad",
"Clear Cache": "Legen cache",
- "Click here": "Klik hier",
"Click here to fix": "Klik hier om op te lossen",
"Click to mute audio": "Klik om audio te dempen",
"Click to mute video": "Klik om de video te dempen",
@@ -79,7 +72,6 @@
"Add": "Toevoegen",
"Add a topic": "Een onderwerp toevoegen",
"Admin Tools": "Beheerhulpmiddelen",
- "And %(count)s more...": "Nog %(count)s andere...",
"VoIP": "VoiP",
"Missing Media Permissions, click here to request.": "Ontbrekende mediatoestemmingen, klik hier om aan te vragen.",
"No Microphones detected": "Geen microfoons gevonden",
@@ -113,13 +105,6 @@
"Settings": "Instellingen",
"Start chat": "Gesprek starten",
"unknown error code": "onbekende foutcode",
- "Sunday": "Zondag",
- "Monday": "Maandag",
- "Tuesday": "Dinsdag",
- "Wednesday": "Woensdag",
- "Thursday": "Donderdag",
- "Friday": "Vrijdag",
- "Saturday": "Zaterdag",
"Search": "Zoeken",
"OK": "OK",
"Failed to change password. Is your password correct?": "Wachtwoord wijzigen mislukt. Is uw wachtwoord juist?",
@@ -158,7 +143,6 @@
"Revoke Moderator": "Beheerder terugtrekken",
"Refer a friend to Riot:": "Laat een vriend weten over Riot:",
"Register": "Registreren",
- "rejected": "verworpen",
"%(targetName)s rejected the invitation.": "%(targetName)s heeft de uitnodiging geweigerd.",
"Reject invitation": "Uitnodiging weigeren",
"Rejoin": "Opnieuw toetreden",
@@ -170,7 +154,6 @@
"Start Chat": "Gesprek starten",
"Submit": "Bevestigen",
"Success": "Gereed",
- "tag direct chat": "Privéchat labelen",
"Tagged as: ": "Gelabeld als: ",
"Sun": "Zo",
"Mon": "Ma",
@@ -212,7 +195,6 @@
"Decrypt %(text)s": "Ontsleutel %(text)s",
"Decryption error": "Ontsleutelfout",
"Delete": "Verwijderen",
- "demote": "degraderen",
"Device already verified!": "Apparaat reeds geverifieerd!",
"Device ID": "Apparaat ID",
"Device ID:": "Apparaat ID:",
@@ -270,7 +252,6 @@
"Failed to load timeline position": "Niet gelukt om de tijdlijnpositie te laden",
"Failed to lookup current room": "Niet gelukt om de huidige ruimte op te zoeken",
"Failed to mute user": "Niet gelukt om de gebruiker te dempen",
- "Failed to register as guest:": "Niet gelukt om als gast te registreren:",
"Failed to reject invite": "Niet gelukt om de uitnodiging te weigeren",
"Failed to reject invitation": "Niet gelukt om de uitnodiging te weigeren",
"Failed to save settings": "Niet gelukt om de instellingen op te slaan",
@@ -285,7 +266,6 @@
"Failed to upload profile picture!": "Niet gelukt om een profiel foto te uploaden!",
"Failed to verify email address: make sure you clicked the link in the email": "Niet gelukt om het e-mailadres te verifiëren: wees er zeker van dat je de link in de e-mail hebt aangeklikt",
"Failure to create room": "Het aanmaken van een ruimte is mislukt",
- "favourite": "favoriet",
"Favourites": "Favorieten",
"Fill screen": "Scherm vullen",
"Filter room members": "Ruimteleden filteren",
@@ -297,7 +277,6 @@
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s van %(fromPowerLevel)s naar %(toPowerLevel)s",
"Guest access is disabled on this Home Server.": "Gasttoegang is uitgeschakeld op deze thuisserver.",
"Guests cannot join this room even if explicitly invited.": "Gasten kunnen niet tot deze ruimte toetreden, zelfs als ze expliciet uitgenodigd zijn.",
- "had": "had",
"Hangup": "Ophangen",
"Hide read receipts": "Leesbewijzen verbergen",
"Hide Text Formatting Toolbar": "Tekstopmaakgereedschapsbalk verbergen",
@@ -329,16 +308,12 @@
"Sign in with": "Inloggen met",
"Join as voice or video.": "Toetreden als spraak of video.",
"Join Room": "Ruimte toetreden",
- "joined and left": "Toegetreden en verlaten",
- "joined": "Toegetreden",
"%(targetName)s joined the room.": "%(targetName)s in de ruimte toegetreden.",
"Joins room with given alias": "Treed de ruimte toe met een gegeven naam",
"Jump to first unread message.": "Spring naar het eerste ongelezen bericht.",
"Labs": "Labs",
"Last seen": "Laatst gezien",
"Leave room": "Ruimte verlaten",
- "left and rejoined": "verlaten en opnieuw toegetreden",
- "left": "verlaten",
"%(targetName)s left the room.": "%(targetName)s heeft de ruimte verlaten.",
"Level:": "Niveau:",
"Local addresses for this room:": "Lokale adressen voor deze ruimte:",
@@ -362,7 +337,6 @@
"Mobile phone number": "Mobiele-telefoonnummer",
"Mobile phone number (optional)": "Mobiele-telefoonnummer (optioneel)",
"Never send encrypted messages to unverified devices from this device": "Nooit versleutelde berichten vanaf dit apparaat naar niet geverifieerde apparaten versturen",
- "Never send encrypted messages to unverified devices in this room": "Nooit versleutelde berichten naar niet geverifieerde apparaten sturen in deze ruimte",
"Never send encrypted messages to unverified devices in this room from this device": "Nooit vanaf dit apparaat versleutelde berichten naar niet geverifieerde apparaten in deze ruimte sturen",
"New address (e.g. #foo:%(localDomain)s)": "Nieuw adres (bijv. #foo:%(localDomain)s)",
"New passwords don't match": "Nieuwe wachtwoorden komen niet overeen",
@@ -381,7 +355,6 @@
"%(senderName)s requested a VoIP conference.": "%(senderName)s heeft een VoIP-gesprek aangevraagd.",
"Report it": "Melden",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Het wachtwoord veranderen betekent momenteel dat alle end-to-endbeveiligingssleutels op alle apparaten veranderen waardoor versleutelde gespreksgeschiedenis onleesbaar wordt, behalve als je eerst de ruimte sleutels exporteert en daarna opnieuw importeert. Dit zal in de toekomst verbeterd worden.",
- "restore": "herstellen",
"Results from DuckDuckGo": "Resultaten van DuckDuckGo",
"Return to app": "Naar de app terugkeren",
"Return to login screen": "Naar het inlogscherm terugkeren",
@@ -422,7 +395,6 @@
"Kicks user with given id": "Stuurt de gebruiker met het gegeven ID er uit",
"%(senderName)s set a profile picture.": "%(senderName)s heeft een profielfoto ingesteld.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s heeft zijn of haar weergavenaam naar %(displayName)s veranderd.",
- "Set": "Instellen",
"Show panel": "Paneel weergeven",
"Show Text Formatting Toolbar": "Tekstopmaakwerkbalk Weergeven",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Laat de tijd in twaalf uur formaat zien (bijv. 2:30pm)",
@@ -458,15 +430,11 @@
"This room": "Deze ruimte",
"This room is not accessible by remote Matrix servers": "Deze ruimte is niet toegankelijk voor afgelegen Matrix-servers",
"This room's internal ID is": "Het interne ID van deze ruimte is",
- "times": "keer",
- "to browse the directory": "om de catalogus door te bladeren",
"to demote": "om te degraderen",
"to favourite": "om aan favorieten toe te voegen",
"To link to a room it must have an address.": "Om naar een ruimte te linken moet het een adres hebben.",
- "to make a room or": "om een ruimte te maken of",
"To reset your password, enter the email address linked to your account": "Voer het e-mailadres dat met je account verbonden is in om je wachtwoord opnieuw in te stellen",
"to restore": "om te herstellen",
- "to start a chat with someone": "om een gesprek met iemand te starten",
"to tag direct chat": "als directe chat etiketteren",
"To use it, just wait for autocomplete results to load and tab through them.": "Om het te gebruiken, wacht tot de automatisch aangevulde resultaten geladen zijn en tab er doorheen.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Je probeerde een specifiek punt in de tijdlijn van deze ruimte te laden maar je hebt niet de permissie om de desbetreffende berichten te zien.",
@@ -488,7 +456,6 @@
"unencrypted": "ontsleuteld",
"Unencrypted message": "Niet-versleuteld bericht",
"unknown caller": "onbekende beller",
- "Unknown command": "Onbekende commando",
"unknown device": "Onbekend apparaat",
"Unknown room %(roomId)s": "Onbekende ruimte %(roomId)s",
"Unknown (user, device) pair:": "Onbekend (gebruiker, apparaat) paar:",
@@ -555,7 +522,6 @@
"You have enabled URL previews by default.": "Je hebt URL-voorvertoningen standaard aangezet.",
"You have no visible notifications": "Je hebt geen zichtbare notificaties",
"You may wish to login with a different account, or add this email to this account.": "Je wilt misschien met een ander account inloggen of deze e-mail aan je account toevoegen.",
- "you must be a": "wat je moet zijn is een",
"You must register to use this functionality": "Je moet je registreren om deze functionaliteit te gebruiken",
"You need to be able to invite users to do that.": "Je moet bevoegd zijn om gebruikers uit te nodigen om dat te doen.",
"You need to be logged in.": "Je moet ingelogd zijn.",
@@ -590,7 +556,6 @@
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Verstuur alle of annuleer alle nu. Je kan ook individuele berichten selecteren om te versturen of te annuleren.",
"(~%(count)s results)|one": "(~%(count)s resultaat)",
"(~%(count)s results)|other": "(~%(count)s resultaten)",
- "or": "of",
"Active call": "Actief gesprek",
"bold": "vetgedrukt",
"italic": "schuingedrukt",
@@ -746,7 +711,7 @@
"Start chatting": "Start met praten",
"Start Chatting": "Start Met Praten",
"Click on the button below to start chatting!": "Klik op de knop hieronder om te starten met praten!",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName heeft de ruimte avatar aangepast naar
",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s heeft de ruimte avatar aangepast naar
",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s heeft de ruimte avatar verwijderd.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s veranderde de avatar voor %(roomName)s",
"Username available": "Gebruikersnaam beschikbaar",
@@ -782,7 +747,6 @@
"Hide avatar and display name changes": "Avatar en weergavenaam wijzigingen verbergen",
"Integrations Error": "Integratiesfout",
"Publish this room to the public in %(domain)s's room directory?": "Deze ruimte publiekelijk maken in %(domain)s's ruimte catalogus?",
- "Matrix Apps": "Matrix Apps",
"AM": "AM",
"PM": "PM",
"NOTE: Apps are not end-to-end encrypted": "OPMERKING: Apps zijn niet end-to-endbeveiligd",
@@ -797,33 +761,19 @@
"You do not have permission to do that in this room.": "Je hebt geen permissie om dat te doen in deze ruimte.",
"Verifies a user, device, and pubkey tuple": "Verifieert een gebruiker, apparaat en pubkey tupel",
"Autocomplete Delay (ms):": "Automatisch-aanvullen-vertraging (ms):",
- "This Home server does not support groups": "Deze thuisserver ondersteunt geen groepen",
"Loading device info...": "Apparaat info aan het laden...",
- "Groups": "Groepen",
- "Create a new group": "Maak een nieuwe groep",
- "Create Group": "Groep Aanmaken",
- "Group Name": "Groepsnaam",
"Example": "Voorbeeld",
"Create": "Creëer",
- "Group ID": "Groeps-ID",
- "+example:%(domain)s": "+voorbeeld:%(domain)s",
- "Group IDs must be of the form +localpart:%(domain)s": "Groeps-IDs moeten er als +lokaalgedeelte:%(domain)s uit zien",
- "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Het is momenteel mogelijk om groepen op je eigen thuisserver aan te maken: gebruik een groeps-ID dat eindigt met %(domain)s",
"Room creation failed": "Het aanmaken van de ruimte is niet gelukt",
- "You are a member of these groups:": "Je bent een deelnemer van deze groepen:",
- "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Maak een groep aan om je gemeenschap te representateren! Defineer een set van ruimtes en maak je eigen aangepaste homepagina om je eigen plek in het Matrix-universum te creëren.",
- "Join an existing group": "Treed tot een bestaande groep toe",
- "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Om tot een bestaande groep toe te treden moet je groepsidentificatie weten; dit zal er ongeveer uit zien als +voorbeeld:matrix.org.",
"Featured Rooms:": "Prominente Ruimtes:",
- "Error whilst fetching joined groups": "Er is een fout opgetreden tijdens het ophalen van de tot toegretreden groepen",
"Featured Users:": "Prominente Gebruikers:",
- "Edit Group": "Groep Wijzigen",
"Automatically replace plain text Emoji": "Automatisch normale tekst vervangen met Emoji",
"Failed to upload image": "Het is niet gelukt om de afbeelding te uploaden",
- "Failed to update group": "Het is niet gelukt om de groep bij te werken",
"Hide avatars in user and room mentions": "Avatars in gebruiker- en ruimte-vermeldingen verbergen",
"%(widgetName)s widget added by %(senderName)s": "%(widgetName)s-widget toegevoegd door %(senderName)s",
"%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s-widget verwijderd door %(senderName)s",
"Robot check is currently unavailable on desktop - please use a web browser": "Robot-check is momenteel niet beschikbaar op de desktop - gebruik in plaats daarvan een webbrowser",
- "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s-widget aangepast door %(senderName)s"
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s-widget aangepast door %(senderName)s",
+ "Copied!": "Gekopieerd!",
+ "Failed to copy": "Kopiëren mislukt"
}
diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json
index 0b11e26c44..4e7aa2fd55 100644
--- a/src/i18n/strings/pl.json
+++ b/src/i18n/strings/pl.json
@@ -31,14 +31,6 @@
"Room directory": "Spis pokojów",
"Start chat": "Rozpocznij rozmowę",
"Create new room": "Utwórz nowy pokój",
- "Sunday": "Niedziela",
- "Wednesday": "Środa",
- "Thursday": "Czwartek",
- "Friday": "Piątek",
- "Saturday": "Sobota",
- "Monday": "Poniedziałek",
- "Tuesday": "Wtorek",
- "or": "lub",
"Cancel": "Anuluj",
"Room": "Pokój",
"Topic": "Temat",
@@ -79,7 +71,6 @@
"Camera": "Kamera",
"Algorithm": "Algorytm",
"Hide removed messages": "Ukryj usunięte wiadomości",
- "and": "i",
"Are you sure?": "Czy jesteś pewien?",
"Attachment": "Załącznik",
"Banned users": "Zbanowani użytkownicy",
@@ -119,8 +110,7 @@
"Active call (%(roomName)s)": "Aktywne połączenie (%(roomName)s)",
"Add email address": "Dodaj adres e-mail",
"Admin": "Administrator",
- "Admin Tools": "Narzędzia administracyjne",
- "And %(count)s more...": "Oraz %(count)s więcej...",
+ "Admin Tools": "Narzędzia Administracyjne",
"VoIP": "VoIP (połączenie głosowe)",
"No Microphones detected": "Nie wykryto żadnego mikrofonu",
"No Webcams detected": "Nie wykryto żadnej kamerki internetowej",
@@ -134,11 +124,8 @@
"%(items)s and %(remaining)s others": "%(items)s i %(remaining)s innych",
"%(items)s and one other": "%(items)s i jeszcze jeden",
"%(items)s and %(lastItem)s": "%(items)s i %(lastItem)s",
- "and %(overflowCount)s others...": "i %(overflowCount)s innych...",
- "and one other...": "i jeszcze jeden...",
"%(names)s and %(lastPerson)s are typing": "%(names)s i %(lastPerson)s piszą",
"%(names)s and one other are typing": "%(names)s i jeszcze ktoś piszą",
- "%(names)s and %(count)s others are typing": "%(names)s i %(count)s innych osób pisze",
"An email has been sent to": "Wysłano wiadomość e-mail do",
"A new password must be entered.": "Musisz wprowadzić nowe hasło.",
"%(senderName)s answered the call.": "%(senderName)s odebrał połączenie.",
@@ -168,9 +155,6 @@
"Cannot add any more widgets": "Nie można dodać już więcej widżetów",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s zmienił swoją nazwę z %(oldDisplayName)s na %(displayName)s.",
"%(senderName)s changed their profile picture.": "%(senderName)s zmienił swoje zdjęcie profilowe.",
- "fo": "Farerski",
- "rm": "Retoromański",
- "tn": "Tswana",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s zmienił poziom mocy %(powerLevelDiffText)s.",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s zmienił nazwę pokoju na %(roomName)s.",
"%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s usunął nazwę pokoju.",
@@ -207,7 +191,6 @@
"Decrypt %(text)s": "Odszyfruj %(text)s",
"Decryption error": "Błąd odszyfrowywania",
"Delete widget": "Usuń widżet",
- "demote": "zdegraduj",
"Default": "Domyślny",
"Define the power level of a user": "Zdefiniuj poziom mocy użytkownika",
"Device already verified!": "Urządzenie jest już zweryfikowane!",
@@ -229,7 +212,7 @@
"Drop File Here": "Upuść plik tutaj",
"Drop here to tag %(section)s": "Upuść tutaj by oznaczyć %(section)s",
"Ed25519 fingerprint": "Odcisk Ed25519",
- "Edit": "Edytuj",
+ "Edit": "Edycja",
"Email": "E-mail",
"Email address": "Adres e-mail",
"Email address (optional)": "Adres e-mail (opcjonalnie)",
@@ -266,7 +249,6 @@
"Failed to load timeline position": "Nie udało się wczytać pozycji osi czasu",
"Failed to lookup current room": "Nie udało się wyszukać aktualnego pokoju",
"Failed to mute user": "Nie udało się wyciszyć użytkownika",
- "Failed to register as guest:": "Nie udało się zarejestrować jako gość:",
"Failed to reject invite": "Nie udało się odrzucić zaproszenia",
"Failed to reject invitation": "Nie udało się odrzucić zaproszenia",
"Failed to save settings": "Nie udało się zapisać ustawień",
@@ -281,7 +263,6 @@
"Failed to upload profile picture!": "Nie udało się wgrać zdjęcia profilowego!",
"Failed to verify email address: make sure you clicked the link in the email": "Nie udało się zweryfikować adresu e-mail: upewnij się że kliknąłeś w link w e-mailu",
"Failure to create room": "Nie udało się stworzyć pokoju",
- "favourite": "ulubiony",
"Favourites": "Ulubione",
"Fill screen": "Wypełnij ekran",
"Filter room members": "Filtruj uczestników pokoju",
@@ -325,8 +306,6 @@
"Sign in with": "Zaloguj się używając",
"Join as voice or video.": "Dołącz głosowo lub przez wideo.",
"Join Room": "Dołącz do pokoju",
- "joined and left": "dołączył i wyszedł",
- "joined": "dołączył",
"%(targetName)s joined the room.": "%(targetName)s dołączył do pokoju.",
"Joins room with given alias": "Dołącz do pokoju o podanym aliasie",
"Jump to first unread message.": "Przeskocz do pierwszej nieprzeczytanej wiadomości.",
@@ -336,8 +315,6 @@
"Labs": "Laboratoria",
"Last seen": "Ostatnio widziany",
"Leave room": "Opuść pokój",
- "left and rejoined": "wyszedł i ponownie dołączył",
- "left": "wyszedł",
"%(targetName)s left the room.": "%(targetName)s opuścił pokój.",
"Level:": "Poziom:",
"Publish this room to the public in %(domain)s's room directory?": "Czy opublikować ten pokój dla ogółu w spisie pokojów domeny %(domain)s?",
@@ -355,7 +332,6 @@
"Markdown is disabled": "Markdown jest wyłączony",
"Markdown is enabled": "Markdown jest włączony",
"matrix-react-sdk version:": "Wersja matrix-react-sdk:",
- "Matrix Apps": "Aplikacje Matrix",
"Members only": "Tylko dla członków",
"Message not sent due to unknown devices being present": "Wiadomość nie została wysłana z powodu obecności nieznanych urządzeń",
"Missing room_id in request": "Brakujące room_id w żądaniu",
@@ -366,7 +342,6 @@
"%(serverName)s Matrix ID": "%(serverName)s Matrix ID",
"Name": "Imię",
"Never send encrypted messages to unverified devices from this device": "Nigdy nie wysyłaj zaszyfrowanych wiadomości do niezweryfikowanych urządzeń z tego urządzenia",
- "Never send encrypted messages to unverified devices in this room": "Nigdy nie wysyłaj zaszyfrowanych wiadomości do niezweryfikowanych urządzeń w tym pokoju",
"Never send encrypted messages to unverified devices in this room from this device": "Nigdy nie wysyłaj niezaszyfrowanych wiadomości do niezweryfikowanych urządzeń z tego urządzenia",
"New address (e.g. #foo:%(localDomain)s)": "Nowy adres (np. #foo:%(localDomain)s)",
"New password": "Nowe hasło",
@@ -391,7 +366,6 @@
"Once you've followed the link it contains, click below": "Po kliknięciu łącza, które jest tam zawarte kliknij poniżej",
"Only people who have been invited": "Tylko ludzie, którzy zostali zaproszeni",
"Otherwise, click here to send a bug report.": "W przeciwnym razie, kliknij tutaj by wysłać raport o błędzie.",
- "had": "był",
"Password": "Hasło",
"Password:": "Hasło:",
"Passwords can't be empty": "Hasła nie mogą być puste",
@@ -412,8 +386,7 @@
"Revoke Moderator": "Usuń prawa moderatorskie",
"Revoke widget access": "Usuń dostęp do widżetów",
"Refer a friend to Riot:": "Zaproś znajomego do Riota:",
- "Register": "Zarejestruj",
- "rejected": "odrzucone",
+ "Register": "Rejestracja",
"%(targetName)s rejected the invitation.": "%(targetName)s odrzucił zaproszenie.",
"Reject invitation": "Odrzuć zaproszenie",
"Rejoin": "Dołącz ponownie",
@@ -425,7 +398,6 @@
"Hide Apps": "Ukryj aplikacje",
"%(senderName)s requested a VoIP conference.": "%(senderName)s zażądał grupowego połączenia głosowego VoIP.",
"Report it": "Zgłoś",
- "restore": "przywróć",
"Results from DuckDuckGo": "Wyniki z DuckDuckGo",
"Return to app": "Wróć do aplikacji",
"Return to login screen": "Wróć do ekranu logowania",
@@ -468,7 +440,6 @@
"Session ID": "Identyfikator sesji",
"%(senderName)s set a profile picture.": "%(senderName)s ustawił zdjęcie profilowe.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s ustawił swoją nazwę na %(displayName)s.",
- "Set": "Ustaw",
"Sets the room topic": "Ustaw temat pokoju",
"Show Apps": "Pokaż aplikacje",
"Show panel": "Pokaż panel",
@@ -488,7 +459,6 @@
"Start Chat": "Rozpocznij rozmowę",
"Submit": "Wyślij",
"Success": "Sukces",
- "tag direct chat": "oznaczył bezpośrednią rozmowę",
"Tagged as: ": "Oznaczone jako: ",
"The default role for new room members is": "Domyślną rolą dla nowych członków pokoju jest",
"The main address for this room is": "Głównym adresem dla tego pokoju jest",
@@ -498,7 +468,6 @@
"This email address is already in use": "Podany adres e-mail jest już w użyciu",
"This email address was not found": "Podany adres e-mail nie został znaleziony",
"%(actionVerb)s this person?": "%(actionVerb)s tą osobę?",
- "changing room on a RoomView is not supported": "Zmiana pokoju na RoomView nie jest obsługiwana",
"Must be viewing a room": "Musi być w trakcie wyświetlania pokoju",
"The email address linked to your account must be entered.": "Musisz wpisać adres e-mail połączony z twoim kontem.",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "Rozmiar folderu '%(fileName)s' przekracza możliwy limit do przesłania na serwer domowy",
@@ -514,14 +483,10 @@
"This room": "Ten pokój",
"This room is not accessible by remote Matrix servers": "Ten pokój nie jest dostępny na zdalnych serwerach Matrix",
"This room's internal ID is": "Wewnętrzne ID tego pokoju to",
- "times": "razy",
- "to browse the directory": "żeby przeglądać katalog",
"to demote": "żeby zmniejszyć priorytet",
"To get started, please pick a username!": "Aby rozpocząć, wybierz nazwę użytkownika!",
- "to make a room or": "żeby utworzyć pokój lub",
"To reset your password, enter the email address linked to your account": "Aby zresetować swoje hasło, wpisz adres e-mail powiązany z twoim kontem",
"to restore": "żeby przywrócić",
- "to start a chat with someone": "żeby zacząć rozmowę z kimś",
"to tag direct chat": "żeby oznaczyć rozmowę bezpośrednią",
"Turn Markdown off": "Wyłącz Markdown",
"Turn Markdown on": "Włącz Markdown",
@@ -598,7 +563,6 @@
"You have disabled URL previews by default.": "Masz domyślnie wyłączone podglądy linków.",
"You have no visible notifications": "Nie masz widocznych powiadomień",
"You may wish to login with a different account, or add this email to this account.": "Możesz chcieć zalogować się z innego konta lub dodać e-mail do tego konta.",
- "you must be a": "musisz być",
"You must register to use this functionality": "Musisz się zarejestrować aby móc używać tej funkcji",
"You need to be able to invite users to do that.": "Aby to zrobić musisz mieć możliwość zapraszania użytkowników.",
"You need to be logged in.": "Musisz być zalogowany.",
@@ -625,11 +589,7 @@
"underline": "podkreślenie",
"code": "kod",
"quote": "cytat",
- "Edit Group": "Edytuj grupę",
- "Join an existing group": "Dołącz do istniejącej grupy",
- "Create a new group": "Stwórz nową grupę",
"Create": "Utwórz",
- "Groups": "Grupy",
"Online": "Dostępny",
"Offline": "Niedostępny",
"Add an Integration": "Dodaj integrację",
@@ -771,7 +731,7 @@
"for %(amount)sd": "%(amount)s dni",
"Idle": "Bezczynny",
"Check for update": "Sprawdź aktualizacje",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName zmienił awatar pokoju na
",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s zmienił awatar pokoju na
",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s usunął awatar pokoju.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s zmienił awatar %(roomName)s",
"This will be your account name on the homeserver, or you can pick a different server.": "To będzie twoja nazwa konta na serwerze domowym; możesz też wybrać inny serwer.",
@@ -786,24 +746,14 @@
"Your unverified device '%(displayName)s' is requesting encryption keys.": "Twoje niezweryfikowane urządzenie '%(displayName)s' żąda kluczy szyfrujących.",
"Encryption key request": "Żądanie klucza szyfrującego",
"Autocomplete Delay (ms):": "Opóźnienie autouzupełniania (ms):",
- "This Home server does not support groups": "Ten serwer domowy nie wspiera grup",
"Loading device info...": "Wczytywanie informacji o urządzeniu...",
- "Create Group": "Utwórz grupę",
- "Group Name": "Nazwa grupy",
"Example": "Przykład",
- "Group ID": "ID grupy",
- "+example:%(domain)s": "+przyklad:%(domain)s",
"Room creation failed": "Nie udało się utworzyć pokoju",
- "You are a member of these groups:": "Jesteś członkiem następujących grup:",
"Drop file here to upload": "Upuść plik tutaj, aby go przesłać",
- "Error whilst fetching joined groups": "Błąd podczas pobierania informacji o dołączonych grupach",
"Automatically replace plain text Emoji": "Automatycznie zastępuj tekstowe emotikony",
"Failed to upload image": "Przesyłanie obrazka nie powiodło się",
- "Failed to update group": "Uaktualnienie grupy nie powiodło się",
"%(count)s new messages|one": "%(count)s nowa wiadomość",
"%(count)s new messages|other": "%(count)s nowe wiadomości",
- "%(weekDayName)s, %(monthName)s %(day)s": "%(weekDayName)s, %(day)s %(monthName)s",
- "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Zalecamy Ci przejście przez proces weryfikacyjny dla każdego urządzenia aby potwierdzić, że należy ono do ich prawdziwego właściciela. Możesz jednak wysłać tę wiadomość bez potwierdzania.",
"Unblacklist": "Usuń z czarnej listy",
"Blacklist": "Dodaj do czarnej listy",
@@ -817,15 +767,17 @@
"URL Previews": "Podglądy linków",
"Enable URL previews for this room (affects only you)": "Włącz podglądy linków w tym pokoju (dotyczy tylko Ciebie)",
"Ongoing conference call%(supportedText)s.": "Połączenie grupowe %(supportedText)s w toku.",
- "Group IDs must be of the form +localpart:%(domain)s": "ID grupy muszą mieć format +częśćlokalna:%(domain)s",
- "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "W chwili obecnej tworzenie grup jest możliwe wyłącznie na Twoim własnym serwerze domowym: użyj ID grupy kończącego się na %(domain)s",
- "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Stwórz grupę, aby reprezentować Twoją społeczność! Zdefiniuj zestaw kanałów i Twoją własną stronę WWW by oznaczyć swoje miejsce w wszechświecie Matrixa.",
- "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Aby dołączyć do istniejącej grupy musisz znać jej identyfikator; wygląda on mniej więcej tak: +example:matrix.org.",
"Featured Rooms:": "Wyróżnione pokoje:",
"Featured Users:": "Wyróżnieni użytkownicy:",
"Hide avatars in user and room mentions": "Ukryj awatary we wzmiankach użytkowników i pokoi",
"%(widgetName)s widget added by %(senderName)s": "Widżet %(widgetName)s został dodany przez %(senderName)s",
"%(widgetName)s widget removed by %(senderName)s": "Widżet %(widgetName)s został usunięty przez %(senderName)s",
"%(widgetName)s widget modified by %(senderName)s": "Widżet %(widgetName)s został zmodyfikowany przez %(senderName)s",
- "Robot check is currently unavailable on desktop - please use a web browser": "Sprawdzanie człowieczeństwa jest obecnie niedostępne na aplikacji klienckiej desktop - proszę użyć przeglądarki internetowej"
+ "Robot check is currently unavailable on desktop - please use a web browser": "Sprawdzanie człowieczeństwa jest obecnie niedostępne na aplikacji klienckiej desktop - proszę użyć przeglądarki internetowej",
+ "Unpin Message": "Odepnij Wiadomość",
+ "Add rooms to this community": "Dodaj pokoje do tej społeczności",
+ "Invite to Community": "Zaproszenie do Społeczności",
+ "Which rooms would you like to add to this community?": "Które pokoje chcesz dodać do tej społeczności?",
+ "Room name or alias": "Nazwa pokoju lub alias",
+ "Add to community": "Dodaj do społeczności"
}
diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json
index 0ee57bc4d5..8ef4e6f6a0 100644
--- a/src/i18n/strings/pt.json
+++ b/src/i18n/strings/pt.json
@@ -1,44 +1,29 @@
{
- "accept": "aceitar",
- "accepted an invitation": "aceitou um convite",
- "accepted the invitation for": "aceitou o convite para",
"Account": "Conta",
"Add email address": "Adicionar endereço de email",
"Add phone number": "Adicionar número de telefone",
- "Admin": "Administrador/a",
+ "Admin": "Administrador",
"Advanced": "Avançado",
"Algorithm": "Algoritmo",
- "an address": "um endereço",
- "and": "e",
"An email has been sent to": "Um email foi enviado para",
"New passwords don't match": "As novas senhas não conferem",
"A new password must be entered.": "Uma nova senha precisa ser informada.",
- "answered the call.": "respondeu à chamada.",
"Anyone who knows the room's link, apart from guests": "Qualquer pessoa que tenha o link da sala, exceto visitantes",
"Anyone who knows the room's link, including guests": "Qualquer pessoa que tenha o link da sala, incluindo visitantes",
- "Are you sure you want to leave the room?": "Você tem certeza que deseja sair da sala?",
"Are you sure you want to reject the invitation?": "Você tem certeza que deseja rejeitar este convite?",
- "Are you sure you want to upload the following files?": "Você tem certeza que deseja enviar os seguintes arquivos?",
- "banned": "baniu",
+ "Are you sure you want to upload the following files?": "Tem a certeza que quer enviar os seguintes ficheiros?",
"Banned users": "Usuárias/os banidas/os",
"Bans user with given id": "Banir usuários com o identificador informado",
"Blacklisted": "Bloqueado",
"Bug Report": "Repotar problemas de funcionamento",
"Bulk Options": "Opcões de Batelada",
"Can't load user settings": "Não é possível carregar configurações de usuário",
- "changed avatar": "mudou sua imagem de perfil (avatar)",
- "changed name": "mudou seu nome",
- "changed their display name from": "mudou seu nome para",
- "changed their profile picture": "alterou sua foto de perfil",
- "changed the power level of": "mudou o nível de permissões de",
- "changed the room name to": "mudou o nome da sala para",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s mudou o tópico para \"%(topic)s\".",
"Changes to who can read history will only apply to future messages in this room": "As mudanças sobre quem pode ler o histórico da sala só serão aplicadas às mensagens futuras nesta sala",
"Changes your display nickname": "Troca o seu apelido",
"Claimed Ed25519 fingerprint key": "Chave reivindicada da Impressão Digital Ed25519",
"Clear Cache and Reload": "Limpar Memória Cache e Recarregar",
"Clear Cache": "Limpar Memória Cache",
- "Click here": "Clique aqui",
"Click here to fix": "Clique aqui para resolver isso",
"Commands": "Comandos",
"Confirm password": "Confirme a nova senha",
@@ -46,17 +31,14 @@
"Continue": "Continuar",
"Could not connect to the integration server": "Não foi possível conectar ao servidor de integrações",
"Create an account": "Criar uma conta",
- "Create a new account": "Criar uma conta",
"Create Room": "Criar Sala",
"Cryptography": "Criptografia",
"Current password": "Senha atual",
"Curve25519 identity key": "Chave de Indetificação Curve25519",
"Deactivate Account": "Desativar conta",
"Deactivate my account": "Desativar minha conta",
- "decline": "rejeitar",
"Decryption error": "Erro de descriptografia",
"Default": "Padrão",
- "demote": "reduzir prioridade",
"Deops user with given id": "Retirar função de moderador do usuário com o identificador informado",
"Device ID": "Identificador do dispositivo",
"Devices will not yet be able to decrypt history from before they joined the room": "Os dispositivos não serão ainda capazes de descriptografar o histórico anterior à sua entrada na sala",
@@ -64,28 +46,23 @@
"Display name": "Nome",
"Displays action": "Visualizar atividades",
"Ed25519 fingerprint": "Impressão Digital Ed25519",
- "Email Address": "endereço de email",
"Email, name or matrix ID": "Email, nome ou ID matrix",
"Emoji": "Emoji",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "Mensagens criptografadas não serão visíveis em clientes que ainda não implementaram criptografia",
"Encrypted room": "Sala criptografada",
"Encryption is enabled in this room": "Criptografia está habilitada nesta sala",
"Encryption is not enabled in this room": "Criptografia não está habilitada nesta sala",
- "ended the call.": "chamada encerrada.",
"End-to-end encryption information": "Informação criptografada ponta-a-ponta",
"End-to-end encryption is in beta and may not be reliable": "A criptografia ponta a ponta está em estágio beta e não deve ser totalmente confiável",
"Error": "Erro",
"Event information": "Informação do evento",
"Export E2E room keys": "Exportar chaves ponta-a-ponta da sala",
- "Failed to change password. Is your password correct?": "Não foi possível modificar a senha. A senha informada está correta?",
- "Failed to forget room": "Não foi possível esquecer a sala",
+ "Failed to change password. Is your password correct?": "Falha ao alterar a palavra-passe. A sua palavra-passe está correta?",
"Failed to leave room": "Falha ao tentar deixar a sala",
"Failed to reject invitation": "Falha ao tentar rejeitar convite",
- "Failed to send email: ": "Falha ao tentar enviar email",
"Failed to set avatar.": "Falha ao tentar definir foto do perfil.",
"Failed to unban": "Não foi possível desfazer o banimento",
- "Failed to upload file": "Falha ao enviar o arquivo",
- "favourite": "favoritar",
+ "Failed to upload file": "Falha ao enviar o ficheiro",
"Favourite": "Favorito",
"Favourites": "Favoritos",
"Filter room members": "Filtrar integrantes da sala",
@@ -95,7 +72,6 @@
"For security, this session has been signed out. Please sign in again.": "Por questões de segurança, esta sessão foi encerrada. Por gentileza conecte-se novamente.",
"Found a bug?": "Encontrou um problema de funcionamento do sistema?",
"Guests cannot join this room even if explicitly invited.": "Visitantes não podem entrar nesta sala, mesmo se forem explicitamente convidadas/os.",
- "had": "teve",
"Hangup": "Desligar",
"Historical": "Histórico",
"Homeserver is": "Servidor padrão é",
@@ -103,23 +79,14 @@
"I have verified my email address": "Eu verifiquei o meu endereço de email",
"Import E2E room keys": "Importar chave de criptografia ponta-a-ponta (E2E) da sala",
"Invalid Email Address": "Endereço de email inválido",
- "invited": "convidou",
"Invite new room members": "Convidar novas pessoas para ingressar na sala",
"Invites": "Convidar",
"Invites user with given id to current room": "Convidar usuários com um dado identificador para esta sala",
- "is a": "é um(a)",
"Sign in with": "Quero entrar",
- "joined and left": "entrou e saiu",
- "joined": "entrou",
- "joined the room": "entrou na sala",
"Joins room with given alias": "Entra na sala com o nome informado",
"Kicks user with given id": "Remove usuário com o identificador informado",
"Labs": "Laboratório",
"Leave room": "Sair da sala",
- "left and rejoined": "saiu e entrou novamente",
- "left": "saiu",
- "left the room": "saiu da sala",
- "Logged in as": "Logado como",
"Login as guest": "Entrar como visitante",
"Logout": "Sair",
"Low priority": "Baixa prioridade",
@@ -134,38 +101,26 @@
"New passwords must match each other.": "As novas senhas informadas precisam ser idênticas.",
"none": "nenhum",
"Notifications": "Notificações",
- " (not supported by this browser)": "não suportado por este navegador",
"": "",
"NOT verified": "NÃO verificado",
"No users have specific privileges in this room": "Nenhum/a usuário/a possui privilégios específicos nesta sala",
- "olm version: ": "Versão do olm: ",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Assim que a criptografia é ativada para uma sala, ela não poderá ser desativada novamente (ainda)",
"Once you've followed the link it contains, click below": "Quando você tiver clicado no link que está no email, clique o botão abaixo",
"Only people who have been invited": "Apenas pessoas que tenham sido convidadas",
- "or": "ou",
- "other": "outro",
- "others": "outros",
"Password": "Senha",
"Passwords can't be empty": "As senhas não podem estar em branco",
"People": "Pessoas",
"Permissions": "Permissões",
"Phone": "Telefone",
- "placed a": "iniciou uma",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor verifique seu email e clique no link enviado. Quando finalizar este processo, clique para continuar.",
"Privacy warning": "Alerta sobre privacidade",
"Privileged Users": "Usuárias/os privilegiadas/os",
"Profile": "Perfil",
- "Refer a friend to Riot:": "Indicar um amigo para participar",
- "rejected": "recusou",
- "rejected the invitation.": "rejeitou o convite.",
+ "Refer a friend to Riot:": "Recomendar Riot a um amigo:",
"Reject invitation": "Rejeitar convite",
"Remove Contact Information?": "Remover informação de contato?",
- "removed their display name": "removeu seu nome",
- "removed their profile picture": "removeu sua foto de perfil",
"Remove": "Remover",
- "requested a VoIP conference": "requisitou uma conferência VoIP",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Atualmente, ao alterar sua senha, você também zera todas as chaves de criptografia ponta-a-ponta em todos os dipositivos, fazendo com que o histórico de conversas da sala não possa mais ser lido, a não ser que você antes exporte suas chaves de sala e as reimporte após a alteração da senha. No futuro, isso será melhorado.",
- "restore": "restaurar",
"Return to app": "Retornar ao aplicativo",
"Return to login screen": "Retornar à tela de login",
"Room Colour": "Cores da sala",
@@ -180,13 +135,10 @@
"Send Invites": "Enviar convites",
"Send Reset Email": "Enviar email para redefinição de senha",
"sent an image": "enviou uma imagem",
- "sent an invitation to": "enviou um convite para",
"sent a video": "enviou um vídeo",
"Server may be unavailable or overloaded": "Servidor pode estar indisponível ou sobrecarregado",
"Server may be unavailable, overloaded, or you hit a bug.": "O servidor pode estar indisponível ou sobrecarregado, ou então você encontrou uma falha no sistema.",
"Session ID": "Identificador de sessão",
- "set a profile picture": "colocou uma foto de perfil",
- "set their display name to": "configurou seu nome para",
"Settings": "Configurações",
"Show panel": "Mostrar painel",
"Signed Out": "Deslogar",
@@ -200,25 +152,14 @@
"Start a chat": "Começar uma conversa",
"Start Chat": "Começar conversa",
"Success": "Sucesso",
- "tag as": "etiquetar como",
- "tag direct chat": "definir como conversa pessoal",
"The default role for new room members is": "O papel padrão para novas/os integrantes da sala é",
"The email address linked to your account must be entered.": "O endereço de email relacionado a sua conta precisa ser informado.",
- "their invitations": "seus convites",
- "their invitation": "seu convite",
- "These are experimental features that may break in unexpected ways. Use with caution": "Estes são recursos experimentais que podem não funcionar corretamente. Use com cuidado.",
"The visibility of existing history will be unchanged": "A visibilidade do histórico atual não será alterada",
"This doesn't appear to be a valid email address": "Este não aparenta ser um endereço de email válido",
- "this invitation?": "este convite?",
"This is a preview of this room. Room interactions have been disabled": "Esta é uma pré visualização desta sala. As interações com a sala estão desabilitadas",
"This room is not accessible by remote Matrix servers": "Esta sala não é acessível para servidores Matrix remotos",
"This room's internal ID is": "O ID interno desta sala é",
- "times": "vezes",
- "to join the discussion": "para se juntar à conversa",
- "To link to a room it must have": "Para fazer um link para uma sala, ela deve ter",
- "To redact messages": "Para poder apagar mensagens",
"To reset your password, enter the email address linked to your account": "Para redefinir sua senha, entre com o email da sua conta",
- "turned on end-to-end encryption (algorithm": "acionou a encriptação ponta-a-ponta (algoritmo",
"Unable to add email address": "Não foi possível adicionar endereço de email",
"Unable to remove contact information": "Não foi possível remover informação de contato",
"Unable to verify email address.": "Não foi possível verificar o endereço de email.",
@@ -244,24 +185,17 @@
"VoIP conference finished.": "Conferência VoIP encerrada.",
"VoIP conference started.": "Conferência VoIP iniciada.",
"(warning: cannot be disabled again!)": "(atenção: esta operação não poderá ser desfeita depois!)",
- "Warning": "Atenção!",
"was banned": "banida/o",
"was invited": "convidada/o",
"was kicked": "retirada/o da sala",
"was unbanned": "des-banida/o",
- "was": "foi",
- "were": "foram",
"Who can access this room?": "Quem pode acessar esta sala?",
"Who can read history?": "Quem pode ler o histórico da sala?",
"Who would you like to add to this room?": "Quais pessoas você gostaria de adicionar a esta sala?",
"Who would you like to communicate with?": "Com quem você gostaria de se comunicar?",
- "withdrawn": "retirado",
- "Would you like to": "Você gostaria de",
- "You are trying to access": "Você está tentando acessar a sala",
"You do not have permission to post to this room": "Você não tem permissão de postar nesta sala",
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Você foi desconectada/o de todos os dispositivos e portanto não receberá mais notificações no seu celular ou no computador. Para reativar as notificações, entre novamente em cada um dos dispositivos que costuma usar",
"You have no visible notifications": "Voce não possui notificações visíveis",
- "you must be a": "você precisa ser",
"Your password has been reset": "Sua senha foi redefinida",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Sua senha foi alterada com sucesso. Você não receberá notificações em outros dispositivos até que você logue novamente por eles",
"You should not yet trust it to secure data": "Você não deve confiar nela ainda para preservar seus dados",
@@ -288,11 +222,8 @@
"%(weekDayName)s %(time)s": "%(weekDayName)s às %(time)s",
"%(targetName)s accepted an invitation.": "%(targetName)s aceitou um convite.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceitou o convite para %(displayName)s.",
- "all room members, from the point they are invited": "todas/os as/os integrantes da sala, a partir do momento em que foram convidadas/os",
- "all room members, from the point they joined": "todas/os as/os integrantes da sala, a partir do momento em que entraram na sala",
"%(names)s and %(lastPerson)s are typing": "%(names)s e %(lastPerson)s estão escrevendo",
"%(names)s and one other are typing": "%(names)s e uma outra pessoa estão escrevendo",
- "%(names)s and %(count)s others are typing": "%(names)s e %(count)s outras pessoas estão escrevendo",
"%(senderName)s answered the call.": "%(senderName)s atendeu à chamada.",
"%(senderName)s banned %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.",
"Call Timeout": "Tempo esgotado. Chamada encerrada",
@@ -311,7 +242,7 @@
"%(senderName)s ended the call.": "%(senderName)s finalizou a chamada.",
"Existing Call": "Chamada em andamento",
"Failed to lookup current room": "Não foi possível buscar na sala atual",
- "Failed to send email": "Não foi possível enviar email",
+ "Failed to send email": "Falha ao enviar email",
"Failed to send request.": "Não foi possível mandar requisição.",
"Failed to set up conference call": "Não foi possível montar a chamada de conferência",
"Failed to verify email address: make sure you clicked the link in the email": "Não foi possível verificar o endereço de email: verifique se você realmente clicou no link que está no seu email",
@@ -331,7 +262,6 @@
"Missing user_id in request": "Faltou o id de usuário na requisição",
"Must be viewing a room": "Tem que estar visualizando uma sala",
"(not supported by this browser)": "(não é compatível com este navegador)",
- "olm version": "versão olm",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s fez uma chamada de %(callType)s.",
"Power level must be positive integer.": "O nível de permissões tem que ser um número inteiro e positivo.",
"Reason": "Razão",
@@ -354,12 +284,9 @@
"This room is not recognised.": "Esta sala não é reconhecida.",
"These are experimental features that may break in unexpected ways": "Estas são funcionalidades experimentais que podem apresentar falhas",
"This phone number is already in use": "Este número de telefone já está sendo usado",
- "to browse the directory": "para navegar na lista pública de salas",
"to demote": "para reduzir prioridade",
"to favourite": "para favoritar",
- "to make a room or": "para criar uma sala ou",
"to restore": "para restaurar",
- "to start a chat with someone": "para iniciar uma conversa com alguém",
"to tag direct chat": "para marcar a conversa como pessoal",
"To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, espere o carregamento dos resultados de autocompletar e então escolha entre as opções.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ativou criptografia ponta a ponta (algoritmo %(algorithm)s).",
@@ -372,7 +299,6 @@
"VoIP is unsupported": "Chamada de voz não permitida",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s desfez o convite a %(targetName)s.",
"You are already in a call.": "Você já está em uma chamada.",
- "You're not in any rooms yet! Press": "Você ainda não está em nenhuma sala! Pressione",
"You are trying to access %(roomName)s.": "Você está tentando acessar a sala %(roomName)s.",
"You cannot place a call with yourself.": "Você não pode iniciar uma chamada.",
"You cannot place VoIP calls in this browser.": "Você não pode fazer chamadas de voz neste navegador.",
@@ -396,26 +322,12 @@
"Share message history with new users": "Compartilhar histórico de mensagens com novas/os usuárias/os",
"Encrypt room": "Criptografar esta sala",
"There are no visible files in this room": "Não há arquivos públicos nesta sala",
- "Error changing language": "Erro ao mudar de idioma",
- "Riot was unable to find the correct Data for the selected Language.": "Não foi possível encontrar os dados para o idioma selecionado.",
"Connectivity to the server has been lost.": "A conexão com o servidor foi perdida. Verifique sua conexão de internet.",
"Sent messages will be stored until your connection has returned.": "Imagens enviadas ficarão armazenadas até que sua conexão seja reestabelecida.",
- "Resend all": "Reenviar todas as mensagens",
- "cancel all": "cancelar todas",
- "now. You can also select individual messages to resend or cancel.": "agora. Você também pode escolher mensagens individuais e definir se vai reenviar ou cancelar o envio.",
"Active call": "Chamada ativa",
- "Sunday": "Domingo",
- "Monday": "Segunda-feira",
- "ar-eg": "Árabe (Egito)",
- "ar-tn": "Árabe (Tunísia)",
"Failed to forget room %(errCode)s": "Falha ao esquecer a sala %(errCode)s",
- "Tuesday": "Terça-feira",
- "Wednesday": "Quarta-feira",
- "Thursday": "Quinta-feira",
- "Friday": "Sexta-feira",
- "Saturday": "Sábado",
"%(oneUser)schanged their avatar": "%(oneUser)salterou sua imagem pública",
- "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Uma mensagem de texto foi enviada para +%(msisdn)s. Gentileza entrar com o código de verificação que contém",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Uma mensagem de texto foi enviada para +%(msisdn)s. Introduza o código de verificação nela contido",
"%(items)s and %(remaining)s others": "%(items)s e %(remaining)s outros",
"%(items)s and one other": "%(items)s e um outro",
"%(items)s and %(lastItem)s": "%(items)s e %(lastItem)s",
@@ -425,11 +337,6 @@
"Attachment": "Anexo",
"Autoplay GIFs and videos": "Reproduzir automaticamente GIFs e videos",
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s de %(monthName)s de %(fullYear)s às %(time)s",
- "fo": "Feroês",
- "sx": "Sutu",
- "sz": "Sami (Lappish)",
- "ve": "Venda",
- "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Não consigo conectar ao servidor padrão - favor checar sua conexão à internet e verificar se o certificado SSL do seu servidor padrão é confiável.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Não consigo conectar ao servidor padrão através de HTTP quando uma URL HTTPS está na barra de endereços do seu navegador. Use HTTPS ou então habilite scripts não seguros no seu navegador.",
"Change Password": "Alterar senha",
"Click to mute audio": "Clique para colocar o áudio no mudo",
@@ -442,7 +349,7 @@
"Devices": "Dispositivos",
"Direct chats": "Conversas pessoais",
"Disinvite": "Desconvidar",
- "Don't send typing notifications": "Não enviar notificação de estar digitando",
+ "Don't send typing notifications": "Não enviar notificação de escrita",
"Download %(text)s": "Baixar %(text)s",
"Enable encryption": "Habilitar criptografia",
"Enter Code": "Entre com o código",
@@ -468,12 +375,10 @@
"Join Room": "Ingressar na sala",
"Jump to first unread message.": "Ir diretamente para a primeira das mensagens não lidas.",
"Kick": "Remover",
- "Level": "Nível",
"Local addresses for this room:": "Endereço local desta sala:",
"Markdown is disabled": "A formatação 'Markdown' está desabilitada",
"Markdown is enabled": "A formatação 'Markdown' está habilitada",
"Message not sent due to unknown devices being present": "A mensagem não foi enviada por causa da presença de dispositivos desconhecidos",
- "Never send encrypted messages to unverified devices in this room": "Nunca envie mensagens criptografadas para dispositivos não verificados nesta sala",
"New address (e.g. #foo:%(localDomain)s)": "Novo endereço (p.ex: #algo:%(localDomain)s)",
"not set": "não definido",
"not specified": "não especificado",
@@ -505,7 +410,6 @@
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Você não poderá desfazer esta mudança, pois estará dando a este(a) usuário(a) o mesmo nível de permissões que você.",
"Make Moderator": "Tornar moderador(a)",
"Room": "Sala",
- "(~%(searchCount)s results)": "(±%(searchCount)s resultados)",
"Cancel": "Cancelar",
"bold": "negrito",
"italic": "itálico",
@@ -515,7 +419,7 @@
"quote": "citação",
"bullet": "marcador de lista",
"numbullet": "marcador de numeração",
- "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)singressaram %(repeats)s vezes",
+ "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s entraram %(repeats)s vezes",
"%(oneUser)sjoined %(repeats)s times": "%(oneUser)singressou %(repeats)s vezes",
"%(severalUsers)sjoined": "%(severalUsers)singressaram",
"%(oneUser)sjoined": "%(oneUser)singressou",
@@ -669,7 +573,6 @@
"Offline": "Offline",
"The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "O arquivo exportado irá permitir a qualquer pessoa que o acesse a descriptografar qualquer uma das mensagens criptografadas que você veja, portanto seja bastante cuidadosa(o) em manter este arquivo seguro. Para deixar este arquivo mais protegido, recomendamos que você insira uma senha abaixo, que será usada para criptografar o arquivo. Só será possível importar os dados usando exatamente a mesma senha.",
"This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este processo faz com que você possa importar as chaves de criptografia que tinha previamente exportado de outro cliente Matrix. Você poderá então descriptografar todas as mensagens que o outro cliente pôde criptografar.",
- "You are about to be taken to a third-party site so you can authenticate your account for use with {integrationsUrl}. Do you wish to continue?": "",
"Start automatically after system login": "Iniciar automaticamente ao iniciar o sistema",
"Desktop specific": "Específico para o app de computadores desktop",
"You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Você será levado agora a um site de terceiros para poder autenticar a sua conta para uso com o serviço %(integrationsUrl)s. Você quer continuar?",
@@ -678,7 +581,6 @@
"disabled": "desabilitado",
"enabled": "habilitado",
"Export": "Exportar",
- "Failed to register as guest:": "Falha ao se registrar como visitante:",
"Guest access is disabled on this Home Server.": "O acesso para visitantes está desabilitado neste Servidor de Base.",
"Import": "Importar",
"Incorrect username and/or password.": "Nome de usuária(o) e/ou senha incorreto.",
@@ -699,11 +601,11 @@
"for %(amount)sd": "por %(amount)sd",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removeu a imagem da sala.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s alterou a imagem da sala %(roomName)s",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName alterou a imagem da sala para
",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s alterou a imagem da sala para
",
"Missing Media Permissions, click here to request.": "Faltam permissões para uso de mídia no seu computador. Clique aqui para solicitá-las.",
- "No Microphones detected": "Não foi detectado nenhum microfone",
- "No Webcams detected": "Não foi detectada nenhuma Webcam",
- "No media permissions": "Não há permissões de uso de vídeo/áudio no seu navegador",
+ "No Microphones detected": "Não foi detetado nenhum microfone",
+ "No Webcams detected": "Não foi detetada nenhuma Webcam",
+ "No media permissions": "Não há permissões para o uso de vídeo/áudio no seu navegador",
"You may need to manually permit Riot to access your microphone/webcam": "Você talvez precise autorizar manualmente que o Riot acesse seu microfone e webcam",
"Default Device": "Dispositivo padrão",
"Microphone": "Microfone",
@@ -738,7 +640,6 @@
"Upload new:": "Enviar novo:",
"Private Chat": "Conversa privada",
"You must register to use this functionality": "Você deve se registrar para poder usar esta funcionalidade",
- "And %(count)s more...": "E mais %(count)s...",
"Start chatting": "Iniciar a conversa",
"Public Chat": "Conversa pública",
"Uploading %(filename)s and %(count)s others|zero": "Enviando o arquivo %(filename)s",
@@ -784,7 +685,6 @@
"If you already have a Matrix account you can log in instead.": "Se você já tem uma conta Matrix, pode também fazer login.",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Não foi possível conectar ao Servidor de Base. Por favor, confira sua conectividade à internet, garanta que o certificado SSL do Servidor de Base é confiável, e que uma extensão do navegador não esteja bloqueando as requisições de rede.",
"Encrypted by an unverified device": "Criptografado por um dispositivo não verificado",
- "Set": "Definir",
"Unencrypted message": "Mensagem não criptografada",
"Join as voice or video.": "Participar por voz ou por vídeo.",
"Uploading %(filename)s and %(count)s others|other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos",
@@ -810,5 +710,102 @@
"Start chat": "Iniciar conversa",
"You already have existing direct chats with this user:": "Você já tem conversas pessoais com esta pessoa:",
"Accept": "Aceitar",
- "%(roomName)s is not accessible at this time.": "%(roomName)s não está acessível neste momento."
+ "%(roomName)s is not accessible at this time.": "%(roomName)s não está acessível neste momento.",
+ "Add a widget": "Adicionar widget",
+ "Allow": "Permitir",
+ "Cannot add any more widgets": "Não é possível adicionar mais widgets",
+ "Changes colour scheme of current room": "Altera o esquema de cores da sala atual",
+ "Delete widget": "Apagar widget",
+ "Define the power level of a user": "Definir o nível de privilégios de um utilizador",
+ "Do you want to load widget from URL:": "Deseja carregar o widget a partir do URL:",
+ "Edit": "Editar",
+ "Enable automatic language detection for syntax highlighting": "Ativar deteção automática da linguagem para o destaque da sintaxe",
+ "Hide Apps": "Ocultar apps",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Ocultar mensagens de entrada/saída (não afeta convites/expulsões/proibições)",
+ "Hide avatar and display name changes": "Ocultar mudanças de avatar e de nome público",
+ "Integrations Error": "Erro de integrações",
+ "Publish this room to the public in %(domain)s's room directory?": "Publicar esta sala ao público no diretório de salas de %(domain)s's?",
+ "AM": "AM",
+ "PM": "PM",
+ "NOTE: Apps are not end-to-end encrypted": "NOTA: As apps não são cifradas ponta-a-ponta",
+ "Press to start a chat with someone": "Clique para iniciar uma conversa com alguém",
+ "Revoke widget access": "Revogar o acesso do wiget",
+ "Sets the room topic": "Define o assunto da sala",
+ "Show Apps": "Mostrar apps",
+ "The maximum permitted number of widgets have already been added to this room.": "O número máximo de widgets permitido já foi adicionado a esta sala.",
+ "To get started, please pick a username!": "Para começar, escolha um nome de utilizador!",
+ "Unable to create widget.": "Não foi possível criar o widget.",
+ "Unbans user with given id": "Retira ban ao utilizador através do seu id",
+ "(could not connect media)": "(não foi possível conectar-se ao media)",
+ "(no answer)": "(sem resposta)",
+ "(unknown failure: %(reason)s)": "(falha desconhecida: %(reason)s)",
+ "You are not in this room.": "Não se encontra nesta sala.",
+ "You do not have permission to do that in this room.": "Não tem permissão para fazer isso nesta sala.",
+ "You're not in any rooms yet! Press to make a room or to browse the directory": "Ainda não se encontra em nenhuma sala! Clique em para criar uma sala ou em para navegar o diretório de salas",
+ "Copied!": "Copiado!",
+ "Failed to copy": "Falha ao copiar",
+ "Verifies a user, device, and pubkey tuple": "Verifica um utilizador, o dispositivo e o tuplo da chave pública",
+ "Updates": "Atualizações",
+ "Check for update": "Procurar atualizações",
+ "Your browser does not support the required cryptography extensions": "O seu browser não suporta as extensões de criptografia necessárias",
+ "Not a valid Riot keyfile": "Não é um ficheiro de chaves Riot válido",
+ "Authentication check failed: incorrect password?": "Erro de autenticação: palavra-passe incorreta?",
+ "Disable Peer-to-Peer for 1:1 calls": "Desativar ponto-a-ponto para chamadas 1:1",
+ "Do you want to set an email address?": "Deseja definir um endereço de e-mail?",
+ "This will allow you to reset your password and receive notifications.": "Isto irá permitir-lhe redefinir a sua palavra-passe e receber notificações.",
+ "To return to your account in future you need to set a password": "Para voltar à sua conta no futuro necessita de definir uma palavra-passe",
+ "Skip": "Saltar",
+ "Start verification": "Iniciar verificação",
+ "Share without verifying": "Partilhar sem verificar",
+ "Ignore request": "Ignorar pedido",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "Adicionou um novo dispositivo '%(displayName)s', que está a pedir chaves de encriptação.",
+ "Your unverified device '%(displayName)s' is requesting encryption keys.": "O seu dispositivo não verificado '%(displayName)s' está a pedir chaves de encriptação.",
+ "Encryption key request": "Pedido de chave de encriptação",
+ "Autocomplete Delay (ms):": "Atraso de preenchimento automático (ms):",
+ "Loading device info...": "A carregar as informações do dispositivo...",
+ "Example": "Exemplo",
+ "Create": "Criar",
+ "Room creation failed": "Criação de sala falhou",
+ "Featured Rooms:": "Salas em destaque:",
+ "Featured Users:": "Utilizadores em destaque:",
+ "Automatically replace plain text Emoji": "Substituir Emoji em texto automaticamente",
+ "Failed to upload image": "Falha ao carregar imagem",
+ "Hide avatars in user and room mentions": "Ocultar avatares nas menções de utilizadores e salas",
+ "%(widgetName)s widget added by %(senderName)s": "Widget %(widgetName)s adicionado por %(senderName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "Widget %(widgetName)s removido por %(senderName)s",
+ "%(widgetName)s widget modified by %(senderName)s": "Widget %(widgetName)s modificado por %(senderName)s",
+ "Robot check is currently unavailable on desktop - please use a web browser": "A verificação através de robot está atualmente indisponível na versão desktop - utilize um navegador web",
+ "Advanced options": "Opções avançadas",
+ "This setting cannot be changed later!": "Esta definição não pode ser alterada mais tarde!",
+ "Ignored Users": "Utilizadores Ignorados",
+ "Ignore": "Ignorar",
+ "User Options": "Opções de Utilizador",
+ "Ignored user": "Utilizador ignorado",
+ "Description": "Descrição",
+ "Name or matrix ID": "Nome ou ID do matrix",
+ "Leave": "Sair",
+ "Add a Room": "Adicionar uma sala",
+ "Add a User": "Adicionar um utilizador",
+ "Unknown": "Desconhecido",
+ "email address": "endereço de email",
+ "Invites sent": "Convites enviados",
+ "Block users on other matrix homeservers from joining this room": "Impede utilizadores de outros servidores base matrix de se juntar a esta sala",
+ "Unignore": "Deixar de ignorar",
+ "You are now ignoring %(userId)s": "Está agora a ignorar %(userId)s",
+ "You are no longer ignoring %(userId)s": "%(userId)s já não é ignorado",
+ "Unignored user": "Utilizador não ignorado",
+ "Stops ignoring a user, showing their messages going forward": "Deixa de ignorar um utilizador, mostrando as suas mensagens daqui para a frente",
+ "Ignores a user, hiding their messages from you": "Ignora um utilizador, deixando de mostrar as mensagens dele",
+ "Disable big emoji in chat": "Desativar emojis grandes no chat",
+ "Disable Emoji suggestions while typing": "Desativar sugestões de Emoji durante a escrita",
+ "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Não há ninguém aqui! Gostarias de convidar alguém ou parar avisos sobre a sala vazia?",
+ "Remove avatar": "Remover avatar",
+ "Banned by %(displayName)s": "Banido por %(displayName)s",
+ "Message removed by %(userId)s": "Mensagem removida por %(userId)s",
+ "To send messages, you must be a": "Para enviar mensagens, tens de ser um(a)",
+ "To invite users into the room, you must be a": "Para convidar utilizadores para esta sala, tens de ser um(a)",
+ "To configure the room, you must be a": "Para configurar esta sala, tens de ser um(a)",
+ "To ban users, you must be a": "Para banir utilizadores, tens de ser um(a)",
+ "To remove other users' messages, you must be a": "Para remover mensagens de outros utilizadores, tens de ser um(a)",
+ "To send events of type , you must be a": "Para enviar eventos do tipo , tens de ser um(a)"
}
diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json
index c9dce9af74..fee6bcba31 100644
--- a/src/i18n/strings/pt_BR.json
+++ b/src/i18n/strings/pt_BR.json
@@ -1,44 +1,29 @@
{
- "accept": "aceitar",
- "accepted an invitation": "aceitou um convite",
- "accepted the invitation for": "aceitou o convite para",
"Account": "Conta",
"Add email address": "Adicionar endereço de email",
"Add phone number": "Adicionar número de telefone",
"Admin": "Administrador/a",
"Advanced": "Avançado",
"Algorithm": "Algoritmo",
- "an address": "um endereço",
- "and": "e",
"An email has been sent to": "Um email foi enviado para",
"New passwords don't match": "As novas senhas não conferem",
"A new password must be entered.": "Uma nova senha precisa ser informada.",
- "answered the call.": "respondeu à chamada.",
"Anyone who knows the room's link, apart from guests": "Qualquer pessoa que tenha o link da sala, exceto visitantes",
"Anyone who knows the room's link, including guests": "Qualquer pessoa que tenha o link da sala, incluindo visitantes",
- "Are you sure you want to leave the room?": "Você tem certeza que deseja sair da sala?",
"Are you sure you want to reject the invitation?": "Você tem certeza que deseja rejeitar este convite?",
"Are you sure you want to upload the following files?": "Você tem certeza que deseja enviar os seguintes arquivos?",
- "banned": "baniu",
"Banned users": "Usuárias/os banidas/os",
"Bans user with given id": "Banir usuários com o identificador informado",
"Blacklisted": "Bloqueado",
"Bug Report": "Repotar problemas de funcionamento",
"Bulk Options": "Opcões de Batelada",
"Can't load user settings": "Não é possível carregar configurações de usuário",
- "changed avatar": "mudou sua imagem de perfil (avatar)",
- "changed name": "mudou seu nome",
- "changed their display name from": "mudou seu nome para",
- "changed their profile picture": "alterou sua foto de perfil",
- "changed the power level of": "mudou o nível de permissões de",
- "changed the room name to": "mudou o nome da sala para",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s mudou o tópico para \"%(topic)s\".",
"Changes to who can read history will only apply to future messages in this room": "As mudanças sobre quem pode ler o histórico da sala só serão aplicadas às mensagens futuras nesta sala",
"Changes your display nickname": "Troca o seu apelido",
"Claimed Ed25519 fingerprint key": "Chave reivindicada da Impressão Digital Ed25519",
"Clear Cache and Reload": "Limpar Memória Cache e Recarregar",
"Clear Cache": "Limpar Memória Cache",
- "Click here": "Clique aqui",
"Click here to fix": "Clique aqui para resolver isso",
"Commands": "Comandos",
"Confirm password": "Confirme a nova senha",
@@ -46,17 +31,14 @@
"Continue": "Continuar",
"Could not connect to the integration server": "Não foi possível conectar ao servidor de integrações",
"Create an account": "Criar uma conta",
- "Create a new account": "Criar uma conta",
"Create Room": "Criar Sala",
"Cryptography": "Criptografia",
"Current password": "Senha atual",
"Curve25519 identity key": "Chave de Indetificação Curve25519",
"Deactivate Account": "Desativar conta",
"Deactivate my account": "Desativar minha conta",
- "decline": "rejeitar",
"Decryption error": "Erro de descriptografia",
"Default": "Padrão",
- "demote": "reduzir prioridade",
"Deops user with given id": "Retirar função de moderador do usuário com o identificador informado",
"Device ID": "Identificador do dispositivo",
"Devices will not yet be able to decrypt history from before they joined the room": "Os dispositivos não serão ainda capazes de descriptografar o histórico anterior à sua entrada na sala",
@@ -64,28 +46,23 @@
"Display name": "Nome",
"Displays action": "Visualizar atividades",
"Ed25519 fingerprint": "Impressão Digital Ed25519",
- "Email Address": "endereço de email",
"Email, name or matrix ID": "Email, nome ou ID matrix",
"Emoji": "Emoji",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "Mensagens criptografadas não serão visíveis em clientes que ainda não implementaram criptografia",
"Encrypted room": "Sala criptografada",
"Encryption is enabled in this room": "Criptografia está habilitada nesta sala",
"Encryption is not enabled in this room": "Criptografia não está habilitada nesta sala",
- "ended the call.": "chamada encerrada.",
"End-to-end encryption information": "Informação criptografada ponta-a-ponta",
"End-to-end encryption is in beta and may not be reliable": "A criptografia ponta a ponta está em estágio beta e não deve ser totalmente confiável",
"Error": "Erro",
"Event information": "Informação do evento",
"Export E2E room keys": "Exportar chaves ponta-a-ponta da sala",
"Failed to change password. Is your password correct?": "Não foi possível mudar a senha. A sua senha está correta?",
- "Failed to forget room": "Não foi possível esquecer a sala",
"Failed to leave room": "Falha ao tentar deixar a sala",
"Failed to reject invitation": "Falha ao tentar rejeitar convite",
- "Failed to send email: ": "Falha ao tentar enviar email",
"Failed to set avatar.": "Falha ao tentar definir foto do perfil.",
"Failed to unban": "Não foi possível desfazer o banimento",
"Failed to upload file": "Falha ao enviar o arquivo",
- "favourite": "favoritar",
"Favourite": "Favorito",
"Favourites": "Favoritos",
"Filter room members": "Filtrar integrantes da sala",
@@ -95,7 +72,6 @@
"For security, this session has been signed out. Please sign in again.": "Por questões de segurança, esta sessão foi encerrada. Por gentileza conecte-se novamente.",
"Found a bug?": "Encontrou um problema de funcionamento do sistema?",
"Guests cannot join this room even if explicitly invited.": "Visitantes não podem entrar nesta sala, mesmo se forem explicitamente convidadas/os.",
- "had": "teve",
"Hangup": "Desligar",
"Historical": "Histórico",
"Homeserver is": "Servidor padrão é",
@@ -103,23 +79,14 @@
"I have verified my email address": "Eu verifiquei o meu endereço de email",
"Import E2E room keys": "Importar chave de criptografia ponta-a-ponta (E2E) da sala",
"Invalid Email Address": "Endereço de email inválido",
- "invited": "convidou",
"Invite new room members": "Convidar novas pessoas para ingressar na sala",
"Invites": "Convidar",
"Invites user with given id to current room": "Convidar usuários com um dado identificador para esta sala",
- "is a": "é um(a)",
"Sign in with": "Quero entrar",
- "joined and left": "entrou e saiu",
- "joined": "entrou",
- "joined the room": "entrou na sala",
"Joins room with given alias": "Entra na sala com o nome informado",
"Kicks user with given id": "Remove usuário com o identificador informado",
"Labs": "Laboratório",
"Leave room": "Sair da sala",
- "left and rejoined": "saiu e entrou novamente",
- "left": "saiu",
- "left the room": "saiu da sala",
- "Logged in as": "Logado como",
"Login as guest": "Entrar como visitante",
"Logout": "Sair",
"Low priority": "Baixa prioridade",
@@ -134,38 +101,26 @@
"New passwords must match each other.": "As novas senhas informadas precisam ser idênticas.",
"none": "nenhum",
"Notifications": "Notificações",
- " (not supported by this browser)": "não suportado por este navegador",
"": "",
"NOT verified": "NÃO verificado",
"No users have specific privileges in this room": "Nenhum/a usuário/a possui privilégios específicos nesta sala",
- "olm version: ": "Versão do olm: ",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Assim que a criptografia é ativada para uma sala, ela não poderá ser desativada novamente (ainda)",
"Once you've followed the link it contains, click below": "Quando você tiver clicado no link que está no email, clique o botão abaixo",
"Only people who have been invited": "Apenas pessoas que tenham sido convidadas",
- "or": "ou",
- "other": "outro",
- "others": "outros",
"Password": "Senha",
"Passwords can't be empty": "As senhas não podem estar em branco",
"People": "Pessoas",
"Permissions": "Permissões",
"Phone": "Telefone",
- "placed a": "iniciou uma",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor verifique seu email e clique no link enviado. Quando finalizar este processo, clique para continuar.",
"Privacy warning": "Alerta sobre privacidade",
"Privileged Users": "Usuárias/os privilegiadas/os",
"Profile": "Perfil",
"Refer a friend to Riot:": "Indicar um amigo para participar",
- "rejected": "recusou",
- "rejected the invitation.": "rejeitou o convite.",
"Reject invitation": "Rejeitar convite",
"Remove Contact Information?": "Remover informação de contato?",
- "removed their display name": "removeu seu nome",
- "removed their profile picture": "removeu sua foto de perfil",
"Remove": "Remover",
- "requested a VoIP conference": "requisitou uma conferência VoIP",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Atualmente, ao alterar sua senha, você também zera todas as chaves de criptografia ponta-a-ponta em todos os dipositivos, fazendo com que o histórico de conversas da sala não possa mais ser lido, a não ser que você antes exporte suas chaves de sala e as reimporte após a alteração da senha. No futuro, isso será melhorado.",
- "restore": "restaurar",
"Return to app": "Retornar ao aplicativo",
"Return to login screen": "Retornar à tela de login",
"Room Colour": "Cores da sala",
@@ -180,13 +135,10 @@
"Send Invites": "Enviar convites",
"Send Reset Email": "Enviar email para redefinição de senha",
"sent an image": "enviou uma imagem",
- "sent an invitation to": "enviou um convite para",
"sent a video": "enviou um vídeo",
"Server may be unavailable or overloaded": "Servidor pode estar indisponível ou sobrecarregado",
"Server may be unavailable, overloaded, or you hit a bug.": "O servidor pode estar indisponível ou sobrecarregado, ou então você encontrou uma falha no sistema.",
"Session ID": "Identificador de sessão",
- "set a profile picture": "colocou uma foto de perfil",
- "set their display name to": "configurou seu nome para",
"Settings": "Configurações",
"Show panel": "Mostrar painel",
"Signed Out": "Deslogar",
@@ -200,25 +152,14 @@
"Start a chat": "Começar uma conversa",
"Start Chat": "Começar conversa",
"Success": "Sucesso",
- "tag as": "etiquetar como",
- "tag direct chat": "definir como conversa pessoal",
"The default role for new room members is": "O papel padrão para novas/os integrantes da sala é",
"The email address linked to your account must be entered.": "O endereço de email relacionado a sua conta precisa ser informado.",
- "their invitations": "seus convites",
- "their invitation": "seu convite",
- "These are experimental features that may break in unexpected ways. Use with caution": "Estes são recursos experimentais que podem não funcionar corretamente. Use com cuidado.",
"The visibility of existing history will be unchanged": "A visibilidade do histórico atual não será alterada",
"This doesn't appear to be a valid email address": "Este não aparenta ser um endereço de email válido",
- "this invitation?": "este convite?",
"This is a preview of this room. Room interactions have been disabled": "Esta é uma pré visualização desta sala. As interações com a sala estão desabilitadas",
"This room is not accessible by remote Matrix servers": "Esta sala não é acessível para servidores Matrix remotos",
"This room's internal ID is": "O ID interno desta sala é",
- "times": "vezes",
- "to join the discussion": "para se juntar à conversa",
- "To link to a room it must have": "Para fazer um link para uma sala, ela deve ter",
- "To redact messages": "Para poder apagar mensagens",
"To reset your password, enter the email address linked to your account": "Para redefinir sua senha, entre com o email da sua conta",
- "turned on end-to-end encryption (algorithm": "acionou a encriptação ponta-a-ponta (algoritmo",
"Unable to add email address": "Não foi possível adicionar endereço de email",
"Unable to remove contact information": "Não foi possível remover informação de contato",
"Unable to verify email address.": "Não foi possível verificar o endereço de email.",
@@ -244,24 +185,17 @@
"VoIP conference finished.": "Conferência VoIP encerrada.",
"VoIP conference started.": "Conferência VoIP iniciada.",
"(warning: cannot be disabled again!)": "(atenção: esta operação não poderá ser desfeita depois!)",
- "Warning": "Atenção!",
"was banned": "banida/o",
"was invited": "convidada/o",
"was kicked": "retirada/o da sala",
"was unbanned": "des-banida/o",
- "was": "foi",
- "were": "foram",
"Who can access this room?": "Quem pode acessar esta sala?",
"Who can read history?": "Quem pode ler o histórico da sala?",
"Who would you like to add to this room?": "Quais pessoas você gostaria de adicionar a esta sala?",
"Who would you like to communicate with?": "Com quem você gostaria de se comunicar?",
- "withdrawn": "retirado",
- "Would you like to": "Você gostaria de",
- "You are trying to access": "Você está tentando acessar a sala",
"You do not have permission to post to this room": "Você não tem permissão de postar nesta sala",
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Você foi desconectada/o de todos os dispositivos e portanto não receberá mais notificações no seu celular ou no computador. Para reativar as notificações, entre novamente em cada um dos dispositivos que costuma usar",
"You have no visible notifications": "Voce não possui notificações visíveis",
- "you must be a": "você precisa ser",
"Your password has been reset": "Sua senha foi redefinida",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Sua senha foi alterada com sucesso. Você não receberá notificações em outros dispositivos até que você logue novamente por eles",
"You should not yet trust it to secure data": "Você não deve confiar nela ainda para preservar seus dados",
@@ -290,7 +224,6 @@
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceitou o convite para %(displayName)s.",
"%(names)s and %(lastPerson)s are typing": "%(names)s e %(lastPerson)s estão escrevendo",
"%(names)s and one other are typing": "%(names)s e uma outra pessoa estão escrevendo",
- "%(names)s and %(count)s others are typing": "%(names)s e %(count)s outras pessoas estão escrevendo",
"%(senderName)s answered the call.": "%(senderName)s atendeu à chamada.",
"%(senderName)s banned %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.",
"Call Timeout": "Tempo esgotado. Chamada encerrada",
@@ -329,7 +262,6 @@
"Missing user_id in request": "Faltou o id de usuário na requisição",
"Must be viewing a room": "Tem que estar visualizando uma sala",
"(not supported by this browser)": "(não é compatível com este navegador)",
- "olm version": "versão olm",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s fez uma chamada de %(callType)s.",
"Power level must be positive integer.": "O nível de permissões tem que ser um número inteiro e positivo.",
"Press to start a chat with someone": "Clique em para iniciar a conversa com alguém",
@@ -353,12 +285,9 @@
"This room is not recognised.": "Esta sala não é reconhecida.",
"These are experimental features that may break in unexpected ways": "Estas são funcionalidades experimentais que podem apresentar falhas",
"This phone number is already in use": "Este número de telefone já está sendo usado",
- "to browse the directory": "para navegar na lista pública de salas",
"to demote": "para reduzir prioridade",
"to favourite": "para favoritar",
- "to make a room or": "para criar uma sala ou",
"to restore": "para restaurar",
- "to start a chat with someone": "para iniciar uma conversa com alguém",
"to tag direct chat": "para marcar a conversa como pessoal",
"To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, espere o carregamento dos resultados de autocompletar e então escolha entre as opções.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ativou criptografia ponta a ponta (algoritmo %(algorithm)s).",
@@ -369,8 +298,6 @@
"Usage": "Uso",
"Use with caution": "Use com cautela",
"VoIP is unsupported": "Chamada de voz não permitida",
- "Sunday": "Domingo",
- "Monday": "Segunda",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s desfez o convite a %(targetName)s.",
"You are already in a call.": "Você já está em uma chamada.",
"You're not in any rooms yet! Press to make a room or to browse the directory": "Você ainda não está em nenhuma sala! Clique em para criar uma sala ou em para navegar pela lista pública de salas",
@@ -397,20 +324,10 @@
"Share message history with new users": "Compartilhar histórico de mensagens com novas/os usuárias/os",
"Encrypt room": "Criptografar esta sala",
"There are no visible files in this room": "Não há arquivos públicos nesta sala",
- "Error changing language": "Erro ao mudar de idioma",
- "Riot was unable to find the correct Data for the selected Language.": "Não foi possível encontrar os dados para o idioma selecionado.",
"Connectivity to the server has been lost.": "A conexão com o servidor foi perdida. Verifique sua conexão de internet.",
"Sent messages will be stored until your connection has returned.": "Imagens enviadas ficarão armazenadas até que sua conexão seja reestabelecida.",
- "Resend all": "Reenviar todas as mensagens",
- "cancel all": "cancelar todas",
- "now. You can also select individual messages to resend or cancel.": "agora. Você também pode escolher mensagens individuais e definir se vai reenviar ou cancelar o envio.",
"Active call": "Chamada ativa",
"Failed to forget room %(errCode)s": "Falhou ao esquecer a sala %(errCode)s",
- "Tuesday": "Terça",
- "Wednesday": "Quarta",
- "Thursday": "Quinta",
- "Friday": "Sexta",
- "Saturday": "Sábado",
"%(oneUser)schanged their avatar": "%(oneUser)salterou sua imagem pública",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Uma mensagem de texto foi enviada para +%(msisdn)s. Gentileza entrar com o código de verificação que contém",
"%(items)s and %(remaining)s others": "%(items)s e %(remaining)s outros",
@@ -422,11 +339,6 @@
"Attachment": "Anexo",
"Autoplay GIFs and videos": "Reproduzir automaticamente GIFs e videos",
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s de %(monthName)s de %(fullYear)s às %(time)s",
- "fo": "Feroês",
- "sx": "Sutu",
- "sz": "Sami (Lappish)",
- "ve": "Venda",
- "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Não consigo conectar ao servidor padrão - favor checar sua conexão à internet e verificar se o certificado SSL do seu servidor padrão é confiável.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Não consigo conectar ao servidor padrão através de HTTP quando uma URL HTTPS está na barra de endereços do seu navegador. Use HTTPS ou então habilite scripts não seguros no seu navegador.",
"Change Password": "Alterar senha",
"Click to mute audio": "Clique para colocar o áudio no mudo",
@@ -465,12 +377,10 @@
"Join Room": "Ingressar na sala",
"Jump to first unread message.": "Ir diretamente para a primeira das mensagens não lidas.",
"Kick": "Remover",
- "Level": "Nível",
"Local addresses for this room:": "Endereço local desta sala:",
"Markdown is disabled": "A formatação 'Markdown' está desabilitada",
"Markdown is enabled": "A formatação 'Markdown' está habilitada",
"Message not sent due to unknown devices being present": "A mensagem não foi enviada por causa da presença de dispositivos desconhecidos",
- "Never send encrypted messages to unverified devices in this room": "Nunca envie mensagens criptografadas para dispositivos não verificados nesta sala",
"New address (e.g. #foo:%(localDomain)s)": "Novo endereço (p.ex: #algo:%(localDomain)s)",
"not set": "não definido",
"not specified": "não especificado",
@@ -502,7 +412,6 @@
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Você não poderá desfazer esta mudança, pois estará dando a este(a) usuário(a) o mesmo nível de permissões que você.",
"Make Moderator": "Tornar moderador(a)",
"Room": "Sala",
- "(~%(searchCount)s results)": "(±%(searchCount)s resultados)",
"Cancel": "Cancelar",
"bold": "negrito",
"italic": "itálico",
@@ -666,7 +575,6 @@
"Offline": "Offline",
"The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "O arquivo exportado irá permitir a qualquer pessoa que o acesse a descriptografar qualquer uma das mensagens criptografadas que você veja, portanto seja bastante cuidadosa(o) em manter este arquivo seguro. Para deixar este arquivo mais protegido, recomendamos que você insira uma senha abaixo, que será usada para criptografar o arquivo. Só será possível importar os dados usando exatamente a mesma senha.",
"This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este processo faz com que você possa importar as chaves de criptografia que tinha previamente exportado de outro cliente Matrix. Você poderá então descriptografar todas as mensagens que o outro cliente pôde criptografar.",
- "You are about to be taken to a third-party site so you can authenticate your account for use with {integrationsUrl}. Do you wish to continue?": "",
"Start automatically after system login": "Iniciar automaticamente ao iniciar o sistema",
"Desktop specific": "Específico para o app de computadores desktop",
"You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Você será levado agora a um site de terceiros para poder autenticar a sua conta para uso com o serviço %(integrationsUrl)s. Você quer continuar?",
@@ -675,7 +583,6 @@
"disabled": "desabilitado",
"enabled": "habilitado",
"Export": "Exportar",
- "Failed to register as guest:": "Falha ao se registrar como visitante:",
"Guest access is disabled on this Home Server.": "O acesso para visitantes está desabilitado neste Servidor de Base.",
"Import": "Importar",
"Incorrect username and/or password.": "Nome de usuária(o) e/ou senha incorreto.",
@@ -696,7 +603,7 @@
"for %(amount)sd": "por %(amount)sd",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removeu a imagem da sala.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s alterou a imagem da sala %(roomName)s",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName alterou a imagem da sala para
",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s alterou a imagem da sala para
",
"Missing Media Permissions, click here to request.": "Faltam permissões para uso de mídia no seu computador. Clique aqui para solicitá-las.",
"No Microphones detected": "Não foi detectado nenhum microfone",
"No Webcams detected": "Não foi detectada nenhuma Webcam",
@@ -738,7 +645,7 @@
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Reenviar todas ou cancelar todas agora. Você também pode selecionar mensagens individuais que queira reenviar ou cancelar.",
"Create new room": "Criar nova sala",
"Room directory": "Lista pública de salas",
- "Start chat": "Iniciar conversa pessoal",
+ "Start chat": "Iniciar conversa",
"New Password": "Nova senha",
"Start chatting": "Iniciar a conversa",
"Start Chatting": "Iniciar a conversa",
@@ -754,7 +661,6 @@
"Accept": "Aceitar",
"Active call (%(roomName)s)": "Chamada ativa (%(roomName)s)",
"Admin Tools": "Ferramentas de administração",
- "And %(count)s more...": "E mais %(count)s...",
"Alias (optional)": "Apelido (opcional)",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Não foi possível conectar ao Servidor de Base. Por favor, confira sua conectividade à internet, garanta que o certificado SSL do Servidor de Base é confiável, e que uma extensão do navegador não esteja bloqueando as requisições de rede.",
"Click here to join the discussion!": "Clique aqui para participar da conversa!",
@@ -784,7 +690,6 @@
"%(roomName)s is not accessible at this time.": "%(roomName)s não está acessível neste momento.",
"Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s em %(dateTime)s",
"Send anyway": "Enviar de qualquer maneira",
- "Set": "Definir",
"Show Text Formatting Toolbar": "Exibir barra de formatação de texto",
"Start authentication": "Iniciar autenticação",
"This invitation was sent to an email address which is not associated with this account:": "Este convite foi enviado para um endereço de e-mail que não é associado a esta conta:",
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index 1de1afb6e0..8ca50ec72f 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -1,42 +1,27 @@
{
- "accept": "принимать",
- "accepted an invitation": "принял приглашение",
- "accepted the invitation for": "принял приглашение на",
"Account": "Аккаунт",
- "Add email address": "Добавить адрес электронной почты",
+ "Add email address": "Добавить адрес email",
"Add phone number": "Добавить номер телефона",
"Admin": "Администратор",
"Advanced": "Дополнительно",
"Algorithm": "Алгоритм",
- "an address": "адрес",
- "and": "и",
"An email has been sent to": "Email был отправлен",
"A new password must be entered.": "Введите новый пароль.",
- "answered the call.": "принятый звонок.",
"Anyone who knows the room's link, apart from guests": "Любой, кто знает ссылку на комнату, кроме гостей",
- "Anyone who knows the room's link, including guests": "Любой, кто знает ссылку комнаты, включая гостей",
+ "Anyone who knows the room's link, including guests": "Любой, кто знает ссылку на комнату, включая гостей",
"Are you sure you want to reject the invitation?": "Вы уверены что вы хотите отклонить приглашение?",
"Are you sure you want to upload the following files?": "Вы уверены что вы хотите отправить следующие файлы?",
- "banned": "banned",
"Banned users": "Заблокированные пользователи",
"Bans user with given id": "Блокирует пользователя с заданным ID",
"Blacklisted": "В черном списке",
"Bug Report": "Отчет об ошибке",
"Bulk Options": "Групповые параметры",
"Can't load user settings": "Невозможно загрузить пользовательские настройки",
- "changed avatar": "изменен аватар",
- "changed name": "измененное имя",
- "changed their display name from": "changed their display name from",
- "changed their profile picture": "changed their profile picture",
- "changed the power level of": "changed the power level of",
- "changed the room name to": "changed the room name to",
- "changed the topic to": "changed the topic to",
"Changes to who can read history will only apply to future messages in this room": "Изменения того, кто может прочитать историю, будут применяться только к будущим сообщениям в этой комнате",
"Changes your display nickname": "Изменяет ваш псевдоним",
"Claimed Ed25519 fingerprint key": "Требуемый ключ цифрового отпечатка Ed25519",
"Clear Cache and Reload": "Очистить кэш и перезагрузить",
"Clear Cache": "Очистить кэш",
- "Click here": "Нажать здесь",
"Click here to fix": "Щелкните здесь, чтобы исправить",
"Commands": "Команды",
"Confirm your new password": "Подтвердите новый пароль",
@@ -48,10 +33,8 @@
"Curve25519 identity key": "Ключ идентификации Curve25519",
"Deactivate Account": "Деактивировать учетную запись",
"Deactivate my account": "Деактивировать мою учетную запись",
- "decline": "отказаться",
"Decryption error": "Ошибка расшифровки",
"Default": "По умолчанию",
- "demote": "понизить уровень авторизации",
"Deops user with given id": "Снимает полномочия оператора с пользователя с заданным ID",
"Device ID": "ID устройства",
"Devices will not yet be able to decrypt history from before they joined the room": "Устройства пока не могут дешифровать историю до их входа в комнату",
@@ -59,57 +42,43 @@
"Display name": "Отображаемое имя",
"Displays action": "Отображение действий",
"Ed25519 fingerprint": "Ed25519 отпечаток",
- "Email Address": "Email адрес",
"Email, name or matrix ID": "Email, имя или matrix ID",
"Emoji": "Смайлы",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "Зашифрованные сообщения не будут видны в клиентах, которые еще не подключили шифрование",
"Encrypted room": "Зашифрованная комната",
- "ended the call.": "ended the call.",
"End-to-end encryption information": "Сведения о сквозном шифровании",
"End-to-end encryption is in beta and may not be reliable": "Сквозное шифрование находится в бета-версии и может быть ненадежным",
"Error": "Ошибка",
"Event information": "Информация о событии",
"Export E2E room keys": "Экспорт ключей сквозного шифрования",
"Failed to change password. Is your password correct?": "Не удалось сменить пароль. Вы правильно ввели текущий пароль?",
- "Failed to forget room": "Не удалось забыть комнату",
"Failed to leave room": "Не удалось выйти из комнаты",
"Failed to reject invitation": "Не удалось отклонить приглашение",
- "Failed to send email": "Ошибка отправки электронной почты",
+ "Failed to send email": "Ошибка отправки email",
"Failed to unban": "Не удалось разблокировать",
"Failed to upload file": "Не удалось отправить файл",
"Favourite": "Избранное",
- "favourite": "избранный",
"Favourites": "Избранные",
"Filter room members": "Фильтр участников комнаты",
"Forget room": "Забыть комнату",
"Forgot your password?": "Забыли пароль?",
- "For security, this session has been signed out. Please sign in again.": "По соображениям безопасности, эта сессия была прекращена. Пожалуйста, войдите снова.",
+ "For security, this session has been signed out. Please sign in again.": "Для обеспечения безопасности ваша сессия была завершена. Пожалуйста, войдите снова.",
"Found a bug?": "Нашли ошибку?",
- "had": "был",
"Hangup": "Закончить",
"Historical": "Архив",
"Homeserver is": "Домашний сервер это",
"Identity Server is": "Сервер идентификации это",
- "I have verified my email address": "Я подтвердил свой адрес электронной почты",
- "Import E2E room keys": "Импортировать ключи сквозного шифрования комнаты",
- "Invalid Email Address": "Недопустимый адрес электронной почты",
- "invited": "invited",
+ "I have verified my email address": "Я подтвердил свой адрес email",
+ "Import E2E room keys": "Импорт ключей сквозного шифрования",
+ "Invalid Email Address": "Недопустимый адрес email",
"Invite new room members": "Пригласить новых участников в комнату",
"Invites": "Приглашает",
"Invites user with given id to current room": "Приглашает пользователя с заданным ID в текущую комнату",
- "is a": "является",
- "Sign in with": "Войти с помощью",
- "joined and left": "вошел(ла) и вышел(ла)",
- "joined": "вошел(ла)",
- "joined the room": "joined the room",
+ "Sign in with": "Войти, используя",
"Joins room with given alias": "Входит в комнату с заданным псевдонимом",
"Kicks user with given id": "Выкидывает пользователя с заданным ID",
"Labs": "Лаборатория",
"Leave room": "Покинуть комнату",
- "left and rejoined": "вышел(ла) и вернулся(ась)",
- "left": "вышел",
- "left the room": "left the room",
- "Logged in as": "Зарегистрированный как",
"Login as guest": "Войти как гость",
"Logout": "Выйти",
"Low priority": "Низкий приоритет",
@@ -125,40 +94,24 @@
"New passwords must match each other.": "Новые пароли должны совпадать.",
"none": "никто",
"Notifications": "Уведомления",
- " (not supported by this browser)": " (not supported by this browser)",
"": "<не поддерживается>",
"NOT verified": "НЕ проверено",
"No users have specific privileges in this room": "Ни один пользователь не имеет специальных полномочий в этой комнате",
- "olm version": "olm версия",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "После включения шифрования в комнате, оно не может быть деактивировано (на данный момент)",
- "or": "или",
- "other": "другой",
- "others": "другие",
"Password": "Пароль",
"People": "Люди",
"Permissions": "Разрешения",
"Phone": "Телефон",
- "placed a": "placed a",
- "rejected the invitation.": "rejected the invitation.",
- "removed their display name": "removed their display name",
- "removed their profile picture": "removed their profile picture",
"Remove": "Удалить",
- "requested a VoIP conference": "requested a VoIP conference",
"Return to login screen": "Вернуться к экрану входа",
"Send Reset Email": "Отправить письмо со ссылкой для сброса пароля",
"sent an image": "отправил изображение",
- "sent an invitation to": "sent an invitation to",
- "set a profile picture": "set a profile picture",
- "set their display name to": "set their display name to",
"Settings": "Настройки",
"Start a chat": "Начать чат",
"Start Chat": "Начать чат",
- "tag as": "tag as",
- "These are experimental features that may break in unexpected ways. Use with caution": "These are experimental features that may break in unexpected ways. Use with caution",
- "turned on end-to-end encryption (algorithm": "turned on end-to-end encryption (algorithm",
- "Unable to add email address": "Не удается добавить адрес электронной почты",
+ "Unable to add email address": "Не удается добавить адрес email",
"Unable to remove contact information": "Не удалось удалить контактную информацию",
- "Unable to verify email address.": "Не удалось проверить адрес электронной почты.",
+ "Unable to verify email address.": "Не удалось проверить адрес email.",
"Unban": "Разблокировать",
"Unencrypted room": "Незашифрованная комната",
"unencrypted": "без шифрования",
@@ -186,29 +139,21 @@
"was invited": "был приглашен",
"was kicked": "был выгнан",
"was unbanned": "был(а) разблокирован(а)",
- "was": "был",
- "were": "быть",
"Who can access this room?": "Кто может получить доступ к этой комнате?",
"Who can read history?": "Кто может читать историю?",
"Who would you like to add to this room?": "Кого бы вы хотели добавить в эту комнату?",
"Who would you like to communicate with?": "С кем бы вы хотели связаться?",
- "withdrawn": "уходить",
- "Would you like to": "Хотели бы Вы",
"You do not have permission to post to this room": "Вы не можете писать в эту комнату",
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Вы вышли из всех устройств и больше не будете получать push-уведомления. Чтобы повторно активировать уведомления, войдите снова на каждом из устройств",
"You have no visible notifications": "Нет видимых уведомлений",
- "you must be a": "уровень доступа",
"Your password has been reset": "Ваш пароль был сброшен",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Пароль успешно изменен. До повторной авторизации вы не будете получать push-уведомления на других устройствах",
"You should not yet trust it to secure data": "На сегодняшний день не следует полностью полагаться на то, что ваши данные будут надежно зашифрованы",
"%(targetName)s accepted an invitation.": "%(targetName)s принял приглашение.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s принял приглашение от %(displayName)s.",
- "Resend all": "Переслать снова всем",
- "cancel all": "отменить всем",
"Active call": "Активный вызов",
"%(names)s and %(lastPerson)s are typing": "%(names)s и %(lastPerson)s печатает",
"%(names)s and one other are typing": "%(names)s и другой печатают",
- "%(names)s and %(count)s others are typing": "%(names)s и %(count)s другие печатают",
"%(senderName)s answered the call.": "%(senderName)s ответил на звонок.",
"%(senderName)s banned %(targetName)s.": "%(senderName)s заблокировал(а) %(targetName)s.",
"Call Timeout": "Время ожидания вызова",
@@ -229,7 +174,7 @@
"Failed to lookup current room": "Не удалось выполнить поиск текущий комнаты",
"Failed to send request.": "Не удалось отправить запрос.",
"Failed to set up conference call": "Не удалось настроить групповой вызов",
- "Failed to verify email address: make sure you clicked the link in the email": "Не удалось проверить адрес электронной почты: убедитесь, что вы перешли по ссылке в письме",
+ "Failed to verify email address: make sure you clicked the link in the email": "Не удалось проверить адрес email: убедитесь, что вы перешли по ссылке в письме",
"Failure to create room": "Не удалось создать комнату",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s с %(fromPowerLevel)s на %(toPowerLevel)s",
"click to reveal": "нажмите для открытия",
@@ -238,27 +183,24 @@
"%(targetName)s joined the room.": "%(targetName)s вошел(ла) в комнату.",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s выкинул %(targetName)s.",
"%(targetName)s left the room.": "%(targetName)s покинул комнату.",
- "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s сделал будущую историю комнаты видимой все участники комнаты, с момента приглашения.",
- "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s сделал будущую историю комнаты видимой все участники комнаты, с момента входа.",
- "%(senderName)s made future room history visible to all room members.": "%(senderName)s сделал будущую историю комнаты видимой все участники комнаты.",
- "%(senderName)s made future room history visible to anyone.": "%(senderName)s сделал будущую историю комнаты видимой любой.",
- "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s сделал будущую историю комнаты видимой неизвестный (%(visibility)s).",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s сделал(а) историю комнаты видимой для всех участников комнаты с момента их приглашения.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s сделал(а) историю комнаты видимой для всех участников комнаты с момента их входа.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s сделал(а) историю комнаты видимой для всех участников комнаты.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s сделал(а) историю комнаты видимой для всех.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s сделал(а) историю комнаты видимой для неизвестного (%(visibility)s).",
"Missing room_id in request": "Отсутствует room_id в запросе",
"Missing user_id in request": "Отсутствует user_id в запросе",
"Must be viewing a room": "Необходимо посмотреть комнату",
"(not supported by this browser)": "(не поддерживается этим браузером)",
- "now. You can also select individual messages to resend or cancel.": "теперь. Вы можете также выбрать отдельные сообщения, чтобы снова послать или отменить.",
- "Error changing language": "Ошибка изменения языка",
- "Riot was unable to find the correct Data for the selected Language.": "Riot был неспособен найти правельные данные для выбранного языка.",
"Connectivity to the server has been lost.": "Связь с сервером потеряна.",
"Sent messages will be stored until your connection has returned.": "Отправленные сообщения будут сохранены, пока соединение не восстановится.",
"There are no visible files in this room": "В этой комнате нет видимых файлов",
- "This doesn't look like a valid phone number.": "Это не похоже на допустимый телефонный номер.",
+ "This doesn't look like a valid phone number.": "Недопустимый номер телефона.",
"Missing password.": "Отсутствует пароль.",
"Set a display name:": "Введите отображаемое имя:",
"Passwords don't match.": "Пароли не совпадают.",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Пароль слишком короткий (мин. %(MIN_PASSWORD_LENGTH)s).",
- "This doesn't look like a valid email address.": "Это не похоже на допустимый адрес электронной почты.",
+ "This doesn't look like a valid email address.": "Это не похоже на допустимый адрес email.",
"This server does not support authentication with a phone number.": "Этот сервер не поддерживает аутентификацию с помощью номера телефона.",
"User names may only contain letters, numbers, dots, hyphens and underscores.": "Имена пользователей могут содержать только буквы, цифры, точки, дефисы и символы подчеркивания.",
"An unknown error occurred.": "Произошла неизвестная ошибка.",
@@ -268,20 +210,12 @@
"Make this room private": "Сделать эту комнату приватной",
"Share message history with new users": "Разрешить доступ к истории сообщений новым пользователям",
"Encrypt room": "Шифрование комнаты",
- "Monday": "Понедельник",
- "Tuesday": "Вторник",
- "Wednesday": "Среда",
- "Thursday": "Четверг",
- "Friday": "Пятница",
- "Saturday": "Суббота",
- "Sunday": "Воскресенье",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Upload an avatar:": "Загрузите аватар:",
"You need to be logged in.": "Вы должны быть авторизованы.",
"You need to be able to invite users to do that.": "Для этого вы должны иметь возможность приглашать пользователей.",
"You cannot place VoIP calls in this browser.": "VoIP звонки не поддерживаются в этом браузере.",
"You are already in a call.": "Вы уже совершаете вызов.",
- "You're not in any rooms yet! Press": "Вы еще не находитесь ни в каких комнатах! Нажать",
"You are trying to access %(roomName)s.": "Вы пытаетесь получить доступ к %(roomName)s.",
"You cannot place a call with yourself.": "Вы не можете сделать вызов самому себе.",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s отозвал %(targetName)s's приглашение.",
@@ -305,8 +239,7 @@
"Thu": "Чт",
"Fri": "Пт",
"Sat": "Сб",
- "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ваш адрес электронной почты, кажется, не связан с Matrix ID на этом домашнем сервере.",
- "to start a chat with someone": "чтобы начать чат с кем-то",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ваш адрес email, кажется, не связан с Matrix ID на этом домашнем сервере.",
"to tag direct chat": "отметить прямой чат",
"To use it, just wait for autocomplete results to load and tab through them.": "Для того, чтобы использовать эту функцию, просто подождите автозаполнения результатов, а затем используйте клавишу TAB для прокрутки.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s включено сквозное шифрование (algorithm %(algorithm)s).",
@@ -322,7 +255,6 @@
"and %(count)s others...|one": "и ещё один...",
"Are you sure?": "Вы уверены?",
"Autoplay GIFs and videos": "Автовоспроизведение GIF и видео",
- "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Невозможно соединиться с домашним сервером - проверьте своё соединение и убедитесь, что SSL-сертификат вашего домашнего сервера включён в доверяемые.",
"Click to mute audio": "Щелкните, чтобы выключить звук",
"Click to mute video": "Щелкните, чтобы выключить видео",
"Click to unmute video": "Щелкните, чтобы включить видео",
@@ -374,16 +306,14 @@
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' недопустимый формат псевдонима",
"Join Room": "Войти в комнату",
"Kick": "Выгнать",
- "Level": "Уровень",
- "Local addresses for this room:": "Локальный адрес этой комнаты:",
+ "Local addresses for this room:": "Локальные адреса этой комнаты:",
"Markdown is disabled": "Markdown отключен",
"Markdown is enabled": "Markdown включен",
"matrix-react-sdk version:": "версия matrix-react-sdk:",
- "Never send encrypted messages to unverified devices in this room": "Никогда не отправлять зашифрованные сообщения на непроверенные устройства в этой комнате",
"New address (e.g. #foo:%(localDomain)s)": "Новый адрес (например, #foo:%(localDomain)s)",
"New passwords don't match": "Новые пароли не совпадают",
"not set": "не задано",
- "not specified": "не определено",
+ "not specified": "не определен",
"No devices with registered encryption keys": "Нет устройств с зарегистрированными ключами шифрования",
"No more results": "Больше никаких результатов",
"No results": "Нет результатов",
@@ -395,7 +325,6 @@
"Power level must be positive integer.": "Уровень авторизации должен быть положительным целым числом.",
"Profile": "Профиль",
"Reason": "Причина",
- "rejected": "отклонено",
"%(targetName)s rejected the invitation.": "%(targetName)s отклонил приглашение.",
"Reject invitation": "Отклонить приглашение",
"Remove Contact Information?": "Удалить контактную информацию?",
@@ -404,9 +333,8 @@
"%(senderName)s requested a VoIP conference.": "%(senderName)s хочет начать VoIP-конференцию.",
"Report it": "Сообщить об этом",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Сброс пароля на данный момент сбрасывает ключи шифрования на всех устройствах, делая зашифрованную историю чатов нечитаемой. Чтобы избежать этого, экспортируйте ключи комнат и импортируйте их после сброса пароля. В будущем это будет исправлено.",
- "restore": "восстановить",
"Return to app": "Вернуться в приложение",
- "Riot does not have permission to send you notifications - please check your browser settings": "Riot не имеет разрешение на отправку уведомлений, проверьте параметры своего браузера",
+ "Riot does not have permission to send you notifications - please check your browser settings": "У Riot нет разрешений на отправку уведомлений - проверьте настройки браузера",
"Riot was not given permission to send notifications - please try again": "Riot не получил разрешение на отправку уведомлений, пожалуйста, попробуйте снова",
"riot-web version:": "версия riot-web:",
"Room %(roomId)s not visible": "Комната %(roomId)s невидима",
@@ -434,10 +362,9 @@
"Someone": "Кто-то",
"Submit": "Отправить",
"Success": "Успех",
- "tag direct chat": "Тег прямого чата",
"The default role for new room members is": "Роль по умолчанию для новых участников комнаты",
"The main address for this room is": "Основной адрес для этой комнаты",
- "This email address is already in use": "Этот адрес электронной почты уже используется",
+ "This email address is already in use": "Этот адрес email уже используется",
"This email address was not found": "Этот адрес электронной почты не найден",
"The email address linked to your account must be entered.": "Необходимо ввести адрес электронной почты, связанный с вашей учетной записью.",
"The file '%(fileName)s' failed to upload": "Не удалось отправить файл '%(fileName)s'",
@@ -445,11 +372,10 @@
"This room has no local addresses": "В этой комнате нет локальных адресов",
"This room is not recognised.": "Эта комната не опознана.",
"These are experimental features that may break in unexpected ways": "Это экспериментальные функции, которые могут себя вести неожиданным образом",
- "This doesn't appear to be a valid email address": "Похоже, это недействительный адрес электронной почты",
+ "This doesn't appear to be a valid email address": "Похоже, это недействительный адрес email",
"This is a preview of this room. Room interactions have been disabled": "Это предпросмотр комнаты. Взаимодействие с комнатой отключено",
"This phone number is already in use": "Этот номер телефона уже используется",
"This room's internal ID is": "Внутренний ID этой комнаты",
- "times": "раз",
"to demote": "для понижения уровня доступа",
"to favourite": "для избранного",
"to restore": "восстановить",
@@ -549,12 +475,11 @@
"device id: ": "ID устройства: ",
"Device key:": "Ключ устройства:",
"disabled": "отключено",
- "Email address": "Адрес электронной почты",
- "Email address (optional)": "Адрес электронной почты (необязательно)",
+ "Email address": "Адрес email",
+ "Email address (optional)": "Адрес email (необязательно)",
"enabled": "включено",
"Error decrypting attachment": "Ошибка при расшифровке вложения",
"Export": "Экспорт",
- "Failed to register as guest:": "Не удалось зарегистрироваться в качестве гостя:",
"Failed to set avatar.": "Не удалось установить аватар.",
"Import": "Импорт",
"Incorrect username and/or password.": "Неверное имя пользователя и/или пароль.",
@@ -584,7 +509,7 @@
"Session ID": "ID сессии",
"%(senderName)s set a profile picture.": "%(senderName)s установил изображение профиля.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s изменил отображаемое имя на %(displayName)s.",
- "Signed Out": "Вышли",
+ "Signed Out": "Выполнен выход",
"Sorry, this homeserver is using a login which is not recognised ": "К сожалению, этот домашний сервер использует неизвестный метод авторизации ",
"Tagged as: ": "Теги: ",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Предоставленный ключ подписи соответствует ключу, полученному от %(userId)s с устройства %(deviceId)s. Устройство помечено как проверенное.",
@@ -592,12 +517,7 @@
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "Файл '%(fileName)s' превышает предельный размер, допустимый к отправке на этом домашнем сервере",
"This Home Server does not support login using email address.": "Этот домашний сервер не поддерживает авторизацию с использованием адреса электронной почты.",
"The visibility of existing history will be unchanged": "Видимость существующей истории не изменится",
- "this invitation?": "это приглашение?",
"This room is not accessible by remote Matrix servers": "Это комната недоступна с удаленных серверов Matrix",
- "to browse the directory": "для просмотра каталога",
- "to join the discussion": "присоединиться к дискуссии",
- "To link to a room it must have": "Для создания ссылки на комнату она должна иметь",
- "to make a room or": "чтобы создать комнату или",
"To reset your password, enter the email address linked to your account": "Чтобы сбросить пароль, введите адрес электронной почты, связанный с вашей учетной записью",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Попытка загрузить выбранный интервал истории чата этой комнаты не удалась, так как у вас нет разрешений на просмотр.",
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Попытка загрузить выбранный интервал истории чата этой комнаты не удалась, так как запрошенный элемент не найден.",
@@ -614,7 +534,6 @@
"You need to enter a user name.": "Необходимо ввести имя пользователя.",
"You seem to be in a call, are you sure you want to quit?": "Звонок не завершен, вы уверены, что хотите выйти?",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Вы не сможете отменить это изменение, так как этот пользователь получит уровень доступа, аналогичный вашему.",
- "(~%(searchCount)s results)": "(~%(searchCount)s результатов)",
"%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)s отозвали свои приглашения %(repeats)s раз",
"%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)s отозвал свои приглашения %(repeats)s раз",
"%(severalUsers)shad their invitations withdrawn": "%(severalUsers)s отозвали свои приглашения",
@@ -667,15 +586,15 @@
"ex. @bob:example.com": "например @bob:example.com",
"Add User": "Добавить пользователя",
"This Home Server would like to make sure you are not a robot": "Этот домашний сервер хочет убедиться, что вы не робот",
- "Sign in with CAS": "Войти с помощью CAS",
+ "Sign in with CAS": "Войти, используя CAS",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Вы можете использовать настраиваемые параметры сервера для входа на другие серверы Matrix, указав другой URL-адрес домашнего сервера.",
"This allows you to use this app with an existing Matrix account on a different home server.": "Это позволяет использовать это приложение с существующей учетной записью Matrix на другом домашнем сервере.",
- "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Вы также можете установить другой сервер идентификации, но это, как правило, будет препятствовать взаимодействию с пользователями на основе адреса электронной почты.",
+ "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Вы также можете установить другой сервер идентификации, но это, как правило, будет препятствовать взаимодействию с пользователями на основе адреса email.",
"Please check your email to continue registration.": "Проверьте электронную почту, чтобы продолжить регистрацию.",
"Token incorrect": "Неверный токен",
"A text message has been sent to": "Текстовое сообщение отправлено",
"Please enter the code it contains:": "Введите полученный код:",
- "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Если адрес электронной почты не указан, сброс пароля будет невозможным. Уверены?",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Если адрес email не указан, сброс пароля будет невозможным. Уверены?",
"You are registering with %(SelectedTeamName)s": "Вы регистрируетесь на %(SelectedTeamName)s",
"Default server": "Сервер по умолчанию",
"Custom server": "Пользовательский сервер",
@@ -693,7 +612,7 @@
"Disable URL previews by default for participants in this room": "Отключить предпросмотр URL-адресов по умолчанию для участников этой комнаты",
"URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "Предварительный просмотр URL-адресов %(globalDisableUrlPreview)s по умолчанию для участников этой комнаты.",
"URL Previews": "Предварительный просмотр URL-адресов",
- "Enable URL previews for this room (affects only you)": "Включить предпросмотр URL-адресов для этой комнаты (влияет только на вас)",
+ "Enable URL previews for this room (affects only you)": "Включить предпросмотр URL-адресов для этой комнаты (касается только вас)",
"Drop file here to upload": "Перетащите файл сюда для отправки",
" (unsupported)": " (не поддерживается)",
"Ongoing conference call%(supportedText)s.": "Установлен групповой вызов %(supportedText)s.",
@@ -704,8 +623,8 @@
"Online": "В сети",
"Idle": "Неактивен",
"Offline": "Не в сети",
- "Disable URL previews for this room (affects only you)": "Отключить предпросмотр URL-адресов для этой комнаты (влияет только на вас)",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName сменил аватар комнаты на
",
+ "Disable URL previews for this room (affects only you)": "Отключить предпросмотр URL-адресов для этой комнаты (касается только вас)",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s сменил аватар комнаты на
",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s удалил аватар комнаты.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s сменил аватар для %(roomName)s",
"Create new room": "Создать новую комнату",
@@ -739,7 +658,6 @@
"Accept": "Принять",
"Active call (%(roomName)s)": "Активный вызов (%(roomName)s)",
"Admin Tools": "Инструменты администратора",
- "And %(count)s more...": "И %(count)s больше...",
"Alias (optional)": "Псевдоним (опционально)",
"Click here to join the discussion!": "Нажмите здесь, чтобы присоединиться к обсуждению!",
"Close": "Закрыть",
@@ -763,7 +681,6 @@
"Public Chat": "Публичный чат",
"Reason: %(reasonText)s": "Причина: %(reasonText)s",
"Rejoin": "Войти повторно",
- "Set": "Установить",
"Start authentication": "Начать проверку подлинности",
"This room": "В этой комнате",
"(~%(count)s results)|other": "(~%(count)s результаты)",
@@ -776,7 +693,7 @@
"Seen by %(userName)s at %(dateTime)s": "Просмотрено %(userName)s в %(dateTime)s",
"Send anyway": "Отправить в любом случае",
"Show Text Formatting Toolbar": "Показать панель инструментов форматирования текста",
- "This invitation was sent to an email address which is not associated with this account:": "Это приглашение было отправлено на адрес электронной почты, не связанный с этой учетной записью:",
+ "This invitation was sent to an email address which is not associated with this account:": "Это приглашение было отправлено на адрес email, не связанный с этой учетной записью:",
"To link to a room it must have an address.": "Чтобы связаться с комнатой, она должна иметь адрес.",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Не удалось установить соответствует ли адрес, по которому этому приглашение было послано, вашей учетной записи.",
"Undecryptable": "Невозможно расшифровать",
@@ -793,7 +710,7 @@
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Не удается подключиться к домашнему серверу - проверьте подключение, убедитесь, что ваш SSL-сертификат домашнего сервера является доверенным и что расширение браузера не блокирует запросы.",
"You have been banned from %(roomName)s by %(userName)s.": "%(userName)s заблокировал вас в %(roomName)s.",
"You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s выгнал вас из %(roomName)s.",
- "You may wish to login with a different account, or add this email to this account.": "При желании вы можете войти в систему с другой учетной записью или добавить этот адрес электронной почты в эту учетную запись.",
+ "You may wish to login with a different account, or add this email to this account.": "При желании вы можете войти в систему с другой учетной записью или добавить этот адрес email в эту учетную запись.",
"Your home server does not support device management.": "Ваш домашний сервер не поддерживает управление устройствами.",
"(could not connect media)": "(подключение к СМИ не может быть установлено)",
"(no answer)": "(нет ответа)",
@@ -802,7 +719,7 @@
"Not a valid Riot keyfile": "Недействительный файл ключа Riot",
"Your browser does not support the required cryptography extensions": "Ваш браузер не поддерживает требуемые криптографические расширения",
"Authentication check failed: incorrect password?": "Ошибка аутентификации: неправильный пароль?",
- "Do you want to set an email address?": "Хотите указать адрес электронной почты?",
+ "Do you want to set an email address?": "Хотите указать адрес email?",
"This will allow you to reset your password and receive notifications.": "Это позволит при необходимости сбросить пароль и получать уведомления.",
"Press to start a chat with someone": "Нажмите для начала чата с кем-либо",
"You're not in any rooms yet! Press to make a room or to browse the directory": "Вы еще не вошли ни в одну из комнат! Нажмите , чтобы создать комнату или для просмотра каталога",
@@ -823,13 +740,12 @@
"Delete widget": "Удалить виджет",
"Define the power level of a user": "Определить уровень доступа пользователя",
"Do you want to load widget from URL:": "Загрузить виджет из URL-адреса:",
- "Edit": "Изменить",
+ "Edit": "Редактировать",
"Enable automatic language detection for syntax highlighting": "Включить автоматическое определение языка для подсветки синтаксиса",
"Hide Apps": "Скрыть приложения",
- "Hide join/leave messages (invites/kicks/bans unaffected)": "Скрыть сообщения о входе/выходе (приглашениях/выкидываниях/банах)",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Скрыть сообщения о входе/выходе (не применяется к приглашениям/выкидываниям/банам)",
"Hide avatar and display name changes": "Скрыть сообщения об изменении аватаров и отображаемых имен",
"Integrations Error": "Ошибка интеграции",
- "Matrix Apps": "Приложения Matrix",
"AM": "AM",
"PM": "PM",
"NOTE: Apps are not end-to-end encrypted": "ПРИМЕЧАНИЕ: приложения не защищены сквозным шифрованием",
@@ -844,38 +760,231 @@
"You do not have permission to do that in this room.": "У вас нет разрешения на это в этой комнате.",
"Verifies a user, device, and pubkey tuple": "Проверка пользователя, устройства и открытого ключа",
"Autocomplete Delay (ms):": "Задержка автозаполнения (мс):",
- "This Home server does not support groups": "Этот домашний сервер не поддерживает группы",
"Loading device info...": "Загрузка информации об устройстве...",
- "Groups": "Группы",
- "Create a new group": "Создать новую группу",
- "Create Group": "Создать группу",
- "Group Name": "Название группы",
"Example": "Пример",
"Create": "Создать",
- "Group ID": "ID группы",
- "+example:%(domain)s": "+пример:%(domain)s",
- "Group IDs must be of the form +localpart:%(domain)s": "Идентификаторы групп должны иметь вид +локальная часть:%(domain)s",
- "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "В настоящее время возможно создавать группы только на собственном домашнем сервере: используйте идентификатор группы, заканчивающийся на %(domain)s",
"Room creation failed": "Не удалось создать комнату",
- "You are a member of these groups:": "Вы являетесь членом этих групп:",
- "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Создайте группу для представления своего сообщества! Определите набор комнат и собственную домашнюю страницу, чтобы выделить свое пространство во вселенной Matrix.",
- "Join an existing group": "Присоединиться к существующей группе",
- "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Чтобы присоединиться к группе, вам нужно знать ее идентификатор; он выглядит примерно так:+example:matrix.org.",
"Featured Rooms:": "Рекомендуемые комнаты:",
- "Error whilst fetching joined groups": "Ошибка при извлечении объединенных групп",
"Featured Users:": "Избранные пользователи:",
- "Edit Group": "Изменить группу",
"Automatically replace plain text Emoji": "Автоматически заменять обычный текст на Emoji",
"Failed to upload image": "Не удалось загрузить изображение",
- "Failed to update group": "Не удалось обновить группу",
"Hide avatars in user and room mentions": "Скрыть аватары в упоминаниях пользователей и комнат",
"%(widgetName)s widget added by %(senderName)s": "%(widgetName)s виджет, добавленный %(senderName)s",
"%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s виджет, удаленный %(senderName)s",
"Robot check is currently unavailable on desktop - please use a web browser": "Проверка робота в настоящее время недоступна на компьютере - пожалуйста, используйте браузер",
"Publish this room to the public in %(domain)s's room directory?": "Опубликовать эту комнату для пользователей в %(domain)s каталоге комнат?",
"%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s виджет, измененный %(senderName)s",
- "%(weekDayName)s, %(monthName)s %(day)s": "%(weekDayName)s, %(monthName)s %(day)s",
- "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s",
"Copied!": "Скопировано!",
- "Failed to copy": "Не удалось скопировать"
+ "Failed to copy": "Не удалось скопировать",
+ "Advanced options": "Дополнительные параметры",
+ "Block users on other matrix homeservers from joining this room": "Блокировать пользователей, входящих в эту комнату с других серверов matrix",
+ "This setting cannot be changed later!": "Этот параметр нельзя изменить позднее!",
+ "Ignored Users": "Игнорируемые пользователи",
+ "Ignore": "Игнорировать",
+ "Unignore": "Перестать игнорировать",
+ "User Options": "Параметры пользователя",
+ "You are now ignoring %(userId)s": "Теперь вы игнорируете %(userId)s",
+ "You are no longer ignoring %(userId)s": "Вы больше не игнорируете %(userId)s",
+ "Unignored user": "Неигнорируемый пользователь",
+ "Ignored user": "Игнорируемый пользователь",
+ "Stops ignoring a user, showing their messages going forward": "Прекращает игнорирование пользователя, показывая их будущие сообщения",
+ "Ignores a user, hiding their messages from you": "Игнорирует пользователя, скрывая сообщения от вас",
+ "Disable Emoji suggestions while typing": "Отключить предложения Emoji при наборе текста",
+ "Banned by %(displayName)s": "Запрещено %(displayName)s",
+ "Message removed by %(userId)s": "Сообщение удалено %(userId)s",
+ "To send messages, you must be a": "Для отправки сообщений необходимо быть",
+ "To invite users into the room, you must be a": "Чтобы пригласить пользователей в комнату, необходимо быть",
+ "To configure the room, you must be a": "Чтобы настроить комнату, необходимо быть",
+ "To kick users, you must be a": "Чтобы выкидывать пользователей, необходимо быть",
+ "To ban users, you must be a": "Чтобы банить пользователей, необходимо быть",
+ "To remove other users' messages, you must be a": "Чтобы удалять сообщения других пользователей, необходимо быть",
+ "To send events of type , you must be a": "Для отправки событий типа , необходимо быть",
+ "To change the room's avatar, you must be a": "Чтобы изменить аватар комнаты, необходимо быть",
+ "To change the room's name, you must be a": "Чтобы изменить имя комнаты, необходимо быть",
+ "To change the room's main address, you must be a": "Чтобы изменить основной адрес комнаты, необходимо быть",
+ "To change the room's history visibility, you must be a": "Чтобы изменить видимость истории комнаты, необходимо быть",
+ "To change the permissions in the room, you must be a": "Чтобы изменить разрешения в комнате, необходимо быть",
+ "To change the topic, you must be a": "Чтобы изменить тему, необходимо быть",
+ "To modify widgets in the room, you must be a": "Чтобы изменить виджеты в комнате, необходимо быть",
+ "Description": "Описание",
+ "Name or matrix ID": "Имя или matrix ID",
+ "Unable to accept invite": "Невозможно принять приглашение",
+ "Unable to leave room": "Невозможно покинуть комнату",
+ "Leave": "Покинуть",
+ "Failed to invite the following users to %(groupId)s:": "Не удалось пригласить следующих пользователей в %(groupId)s:",
+ "Failed to remove '%(roomName)s' from %(groupId)s": "Не удалось удалить '%(roomName)s' из %(groupId)s",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Вы действительно хотите удалить '%(roomName)s' из %(groupId)s?",
+ "Invites sent": "Приглашение отправлено",
+ "Jump to read receipt": "Перейти к подтверждению о прочтении",
+ "Disable big emoji in chat": "Отключить большие emoji в чате",
+ "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Больше никого нет! Хотите пригласить кого-нибудь или отключить уведомление о пустой комнате?",
+ "Message Pinning": "Закрепление сообщений",
+ "Remove avatar": "Удалить аватар",
+ "Failed to invite users to %(groupId)s": "Не удалось пригласить пользователей в %(groupId)s",
+ "Unable to reject invite": "Невозможно отклонить приглашение",
+ "Leave %(groupName)s?": "Покинуть %(groupName)s?",
+ "Add a Room": "Добавить комнату",
+ "Add a User": "Добавить пользователя",
+ "Who would you like to add to this summary?": "Кого вы хотите добавить в эту сводку?",
+ "Add to summary": "Добавить в сводку",
+ "Failed to add the following users to the summary of %(groupId)s:": "Не удалось добавить следующих пользователей в сводку %(groupId)s:",
+ "Which rooms would you like to add to this summary?": "Какие комнаты вы хотите добавить в эту сводку?",
+ "Room name or alias": "Название комнаты или псевдоним",
+ "Pinned Messages": "Закрепленные сообщения",
+ "%(senderName)s changed the pinned messages for the room.": "%(senderName)s изменил закрепленные сообщения для этой комнаты.",
+ "Failed to add the following rooms to the summary of %(groupId)s:": "Не удалось добавить следующие комнаты в сводку %(groupId)s:",
+ "Failed to remove the room from the summary of %(groupId)s": "Не удалось удалить комнату из сводки %(groupId)s",
+ "The room '%(roomName)s' could not be removed from the summary.": "Комнату '%(roomName)s' не удалось удалить из сводки.",
+ "Failed to remove a user from the summary of %(groupId)s": "Не удалось удалить пользователя из сводки %(groupId)s",
+ "The user '%(displayName)s' could not be removed from the summary.": "Пользователя '%(displayName)s' не удалось удалить из сводки.",
+ "Light theme": "Светлая тема",
+ "Dark theme": "Темная тема",
+ "Unknown": "Неизвестно",
+ "Failed to add the following rooms to %(groupId)s:": "Не удалось добавить следующие комнаты в %(groupId)s:",
+ "Matrix ID": "Matrix ID",
+ "Matrix Room ID": "Matrix ID комнаты",
+ "email address": "адрес email",
+ "Try using one of the following valid address types: %(validTypesList)s.": "Попробуйте использовать один из следующих допустимых типов адресов: %(validTypesList)s.",
+ "You have entered an invalid address.": "Введен неправильный адрес.",
+ "Unpin Message": "Открепить сообщение",
+ "Jump to message": "Перейти к сообщению",
+ "No pinned messages.": "Нет прикрепленных сообщений.",
+ "Loading...": "Загрузка...",
+ "Unnamed room": "Комната без названия",
+ "World readable": "Доступно всем",
+ "Guests can join": "Гости могут присоединиться",
+ "No rooms to show": "Нет комнат для отображения",
+ "Community Member Settings": "Настройки участников сообщества",
+ "Publish this community on your profile": "Опубликовать это сообщество в вашем профиле",
+ "Long Description (HTML)": "Длинное описание (HTML)",
+ "Community Settings": "Настройки сообщества",
+ "Invite to Community": "Пригласить в сообщество",
+ "Add to community": "Добавить в сообщество",
+ "Add rooms to the community": "Добавление комнат в сообщество",
+ "Which rooms would you like to add to this community?": "Какие комнаты вы хотите добавить в это сообщество?",
+ "Who would you like to add to this community?": "Кого бы вы хотели добавить в это сообщество?",
+ "Invite new community members": "Пригласить новых членов сообщества",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Предупреждение: любой, кого вы добавляете в сообщество, будет виден всем, кто знает ID сообщества",
+ "Warning: any room you add to a community will be publicly visible to anyone who knows the community ID": "Предупреждение: любая комната, добавляемая в сообщество, будет видна всем, кто знает ID сообщества",
+ "Add rooms to this community": "Добавить комнаты в это сообщество",
+ "Your community invitations have been sent.": "Ваши приглашения в сообщество были отправлены.",
+ "Failed to invite users to community": "Не удалось пригласить пользователей в сообщество",
+ "Communities": "Сообщества",
+ "Invalid community ID": "Недопустимый ID сообщества",
+ "'%(groupId)s' is not a valid community ID": "'%(groupId)s' - недействительный ID сообщества",
+ "Related Communities": "Связанные сообщества",
+ "Related communities for this room:": "Связанные сообщества для этой комнаты:",
+ "This room has no related communities": "Эта комната не имеет связанных сообществ",
+ "New community ID (e.g. +foo:%(localDomain)s)": "Новый ID сообщества (напр. +foo:%(localDomain)s)",
+ "Remove from community": "Удалить из сообщества",
+ "Failed to remove user from community": "Не удалось удалить пользователя из сообщества",
+ "Filter community members": "Фильтр участников сообщества",
+ "Filter community rooms": "Фильтр комнат сообщества",
+ "Failed to remove room from community": "Не удалось удалить комнату из сообщества",
+ "Removing a room from the community will also remove it from the community page.": "Удаление комнаты из сообщества также удалит ее со страницы сообщества.",
+ "Community IDs may only contain alphanumeric characters": "ID сообщества могут содержать только буквенно-цифровые символы",
+ "Create Community": "Создать сообщество",
+ "Community Name": "Имя сообщества",
+ "Community ID": "ID сообщества",
+ "example": "пример",
+ "Add rooms to the community summary": "Добавить комнаты в сводку сообщества",
+ "Add users to the community summary": "Добавить пользователей в сводку сообщества",
+ "Failed to update community": "Не удалось обновить сообщество",
+ "Leave Community": "Покинуть сообщество",
+ "%(inviter)s has invited you to join this community": "%(inviter)s пригласил(а) вас присоединиться к этому сообществу",
+ "You are a member of this community": "Вы являетесь участником этого сообщества",
+ "You are an administrator of this community": "Вы являетесь администратором этого сообщества",
+ "Community %(groupId)s not found": "Сообщество %(groupId)s не найдено",
+ "This Home server does not support communities": "Этот домашний сервер не поддерживает сообщества",
+ "Failed to load %(groupId)s": "Ошибка загрузки %(groupId)s",
+ "Your Communities": "Ваши сообщества",
+ "You're not currently a member of any communities.": "В настоящее время вы не являетесь членом каких-либо сообществ.",
+ "Error whilst fetching joined communities": "Ошибка при загрузке сообществ",
+ "Create a new community": "Создать новое сообщество",
+ "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Создайте сообщество для объединения пользователей и комнат! Создайте собственную домашнюю страницу, чтобы выделить свое пространство во вселенной Matrix.",
+ "Join an existing community": "Присоединиться к существующему сообществу",
+ "To join an existing community you'll have to know its community identifier; this will look something like +example:matrix.org.": "Чтобы присоединиться к существующему сообществу, вам нужно знать его ID; это будет выглядеть примерно так+primer:matrix.org.",
+ "Something went wrong whilst creating your community": "При создании сообщества что-то пошло не так",
+ "%(names)s and %(count)s others are typing|other": "%(names)s и %(count)s другие печатают",
+ "And %(count)s more...|other": "И более %(count)s...",
+ "Delete Widget": "Удалить виджет",
+ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Удаление виджета удаляет его для всех пользователей этой комнаты. Вы действительно хотите удалить этот виджет?",
+ "Message removed": "Сообщение удалено",
+ "Mirror local video feed": "Зеркальное отображение видео",
+ "Invite": "Пригласить",
+ "Remove this room from the community": "Удалить эту комнату из сообщества",
+ "Mention": "Упоминание",
+ "Failed to withdraw invitation": "Не удалось отозвать приглашение",
+ "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "ID сообществ могут содержать только символы a-z, 0-9, или '=_-./'",
+ "%(names)s and %(count)s others are typing|one": "%(names)s и еще кто-то печатает",
+ "%(senderName)s sent an image": "%(senderName)s отправил(а) изображение",
+ "%(senderName)s sent a video": "%(senderName)s отправил(а) видео",
+ "%(senderName)s uploaded a file": "%(senderName)s загрузил(а) файл",
+ "Disinvite this user?": "Отменить приглашение этого пользователя?",
+ "Kick this user?": "Выгнать этого пользователя?",
+ "Unban this user?": "Разблокировать этого пользователя?",
+ "Ban this user?": "Заблокировать этого пользователя?",
+ "Drop here to favourite": "Перетащите сюда для добавления в избранные",
+ "You have been kicked from this room by %(userName)s.": "%(userName)s выгнал(а) вас из этой комнаты.",
+ "You have been banned from this room by %(userName)s.": "%(userName)s заблокировал(а) вас в этой комнате.",
+ "You are trying to access a room.": "Вы пытаетесь получить доступ к комнате.",
+ "Members only (since the point in time of selecting this option)": "Только участники (с момента выбора этого параметра)",
+ "Members only (since they were invited)": "Только участники (с момента их приглашения)",
+ "Members only (since they joined)": "Только участники (с момента их присоединения)",
+ "An email has been sent to %(emailAddress)s": "Письмо было отправлено на %(emailAddress)s",
+ "A text message has been sent to %(msisdn)s": "Текстовое сообщение отправлено на %(msisdn)s",
+ "Disinvite this user from community?": "Отозвать приглашение этого пользователя в сообщество?",
+ "Remove this user from community?": "Удалить этого пользователя из сообщества?",
+ "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s",
+ "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)s присоединились %(count)s раз",
+ "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)s присоединились",
+ "%(oneUser)sjoined %(count)s times|other": "%(oneUser)s присоединился(-лась) %(count)s раз",
+ "%(oneUser)sjoined %(count)s times|one": "%(oneUser)s присоединился(-лась)",
+ "%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s покинули %(count)s раз",
+ "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s покинули",
+ "%(oneUser)sleft %(count)s times|other": "%(oneUser)sl покинул(а) %(count)s раз",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)s покинул(а)",
+ "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s присоединились и покинули %(count)s раз",
+ "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)s присоединились и покинули",
+ "%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)s присоединился(-лась) и покинул(а) %(count)s раз",
+ "%(oneUser)sjoined and left %(count)s times|one": "%(oneUser)s присоединился(-лась) и покинул(а)",
+ "%(severalUsers)sleft and rejoined %(count)s times|other": "%(severalUsers)s покинули и снова присоединились %(count)s раз",
+ "%(severalUsers)sleft and rejoined %(count)s times|one": "%(severalUsers)s покинули и снова присоединились",
+ "%(oneUser)sleft and rejoined %(count)s times|other": "%(oneUser)s покинул(а) и снова присоединился(-лась) %(count)s раз",
+ "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)s покинул(а) и снова присоединился(-лась)",
+ "were invited %(count)s times|other": "были приглашены %(count)s раз",
+ "were invited %(count)s times|one": "были приглашены",
+ "was invited %(count)s times|other": "был(а) приглашен(а) %(count)s раз",
+ "was invited %(count)s times|one": "был(а) приглашен(а)",
+ "were banned %(count)s times|other": "были заблокированы %(count)s раз",
+ "were banned %(count)s times|one": "были заблокированы",
+ "was banned %(count)s times|other": "был(а) заблокирован(а) %(count)s раз",
+ "was banned %(count)s times|one": "был(а) заблокирован(а)",
+ "were unbanned %(count)s times|other": "были разблокированы %(count)s раз",
+ "were unbanned %(count)s times|one": "были разблокированы",
+ "was unbanned %(count)s times|other": "был(а) разблокирован(а) %(count)s раз",
+ "was unbanned %(count)s times|one": "был(а) разблокирован(а)",
+ "were kicked %(count)s times|other": "были выкинуты %(count)s раз",
+ "were kicked %(count)s times|one": "были выкинуты",
+ "was kicked %(count)s times|other": "был(а) выкинут(а) %(count)s раз",
+ "was kicked %(count)s times|one": "был(а) выкинут(а)",
+ "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s изменили свое имя %(count)s раз",
+ "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)s изменили свое имя",
+ "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)s изменил(а) свое имя %(count)s раз",
+ "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s изменил(а) свое имя",
+ "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)s изменили свои аватары %(count)s раз",
+ "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s изменили свои аватары",
+ "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s изменил(а) свой аватар %(count)s раз",
+ "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s изменил(а) свой аватар",
+ "%(items)s and %(count)s others|other": "%(items)s и %(count)s других",
+ "%(items)s and %(count)s others|one": "%(items)s и один другой",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Сообщение отправлено на %(emailAddress)s. После перехода по ссылке в отправленном вам письме, щелкните ниже.",
+ "Room Notification": "Уведомления комнаты",
+ "Drop here to tag direct chat": "Перетащите сюда, чтобы отметить как прямой чат",
+ "Drop here to restore": "Перетащиет сюда для восстановления",
+ "Drop here to demote": "Перетащите сюда для понижения",
+ "Community Invites": "Приглашения в сообщества",
+ "Notify the whole room": "Уведомить всю комнату",
+ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Эти комнаты отображаются для участников сообщества на странице сообщества. Участники сообщества могут присоединиться к комнатам, щелкнув на них.",
+ "Show these rooms to non-members on the community page and room list?": "Следует ли показывать эти комнаты посторонним на странице сообщества и в комнате?"
}
diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json
new file mode 100644
index 0000000000..837a55e380
--- /dev/null
+++ b/src/i18n/strings/sk.json
@@ -0,0 +1,930 @@
+{
+ "This email address is already in use": "Táto emailová adresa sa už používa",
+ "This phone number is already in use": "Toto telefónne číslo sa už používa",
+ "Failed to verify email address: make sure you clicked the link in the email": "Nepodarilo sa overiť emailovú adresu: Uistite sa, že ste správne klikli na odkaz v emailovej správe",
+ "Call Timeout": "Časový limit hovoru",
+ "The remote side failed to pick up": "Vzdialenej strane sa nepodarilo priať hovor",
+ "Unable to capture screen": "Nie je možné zachytiť obrazovku",
+ "Existing Call": "Existujúci hovor",
+ "You are already in a call.": "Už ste súčasťou iného hovoru.",
+ "VoIP is unsupported": "VoIP nie je podporovaný",
+ "You cannot place VoIP calls in this browser.": "Použitím tohoto webového prehliadača nemôžete uskutočniť hovory.",
+ "You cannot place a call with yourself.": "Nemôžete uskutočniť hovor so samým sebou.",
+ "Conference calls are not supported in this client": "Tento klient nepodporuje konferenčné hovory",
+ "Conference calls are not supported in encrypted rooms": "Konferenčné hovory nie sú podporované v šifrovaných miestnostiach",
+ "Warning!": "Upozornenie!",
+ "Conference calling is in development and may not be reliable.": "Konferenčné hovory sú stále vo vývoji a nemusia byť úplne spoľahlivé.",
+ "Failed to set up conference call": "Nepodarilo sa nastaviť konferenčný hovor",
+ "Conference call failed.": "Konferenčný hovor sa nepodarilo uskutočniť.",
+ "The file '%(fileName)s' failed to upload": "Nepodarilo sa nahrať súbor '%(fileName)s'",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Veľkosť súboru '%(fileName)s' prekračuje limit veľkosti súboru nahrávania na tento domovský server",
+ "Upload Failed": "Nahrávanie zlyhalo",
+ "Sun": "Ne",
+ "Mon": "Po",
+ "Tue": "Ut",
+ "Wed": "St",
+ "Thu": "Št",
+ "Fri": "Pi",
+ "Sat": "So",
+ "Jan": "Jan",
+ "Feb": "Feb",
+ "Mar": "Mar",
+ "Apr": "Apr",
+ "May": "Maj",
+ "Jun": "Jun",
+ "Jul": "Jul",
+ "Aug": "Aug",
+ "Sep": "Sep",
+ "Oct": "Okt",
+ "Nov": "Nov",
+ "Dec": "Dec",
+ "PM": "PM",
+ "AM": "AM",
+ "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s",
+ "Who would you like to add to this community?": "Koho si želáte pridať do tejto komunity?",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Pozor: Každá osoba, ktorú pridáte do komunity bude verejne dostupná pre všetkých, čo poznajú ID komunity",
+ "Invite new community members": "Pozvať nových členov komunity",
+ "Name or matrix ID": "Meno alebo matrix ID",
+ "Invite to Community": "Pozvať do komunity",
+ "Which rooms would you like to add to this community?": "Ktoré miestnosti by ste radi pridali do tejto komunity?",
+ "Add rooms to the community": "Pridať miestnosti do komunity",
+ "Room name or alias": "Názov miestnosti alebo alias",
+ "Add to community": "Pridať do komunity",
+ "Failed to invite the following users to %(groupId)s:": "Do komunity %(groupId)s sa nepodarilo pozvať nasledujúcich používateľov:",
+ "Failed to invite users to community": "Do komunity sa nepodarilo pozvať používateľov",
+ "Failed to invite users to %(groupId)s": "Do komunity %(groupId)s sa nepodarilo pozvať používateľov",
+ "Failed to add the following rooms to %(groupId)s:": "Do komunity %(groupId)s sa nepodarilo pridať nasledujúce miestnosti:",
+ "Riot does not have permission to send you notifications - please check your browser settings": "Riot nemá udelené povolenie, aby vám mohol posielať oznámenia - Prosím, skontrolujte nastavenia vašeho prehliadača",
+ "Riot was not given permission to send notifications - please try again": "Aplikácii Riot neboli udelené oprávnenia potrebné pre posielanie oznámení - prosím, skúste to znovu",
+ "Unable to enable Notifications": "Nie je možné povoliť oznámenia",
+ "This email address was not found": "Túto emailovú adresu sa nepodarilo nájsť",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Zdá sa, že vaša emailová adresa nie je priradená k žiadnemu Matrix ID na tomto domovskom servery.",
+ "Default": "Predvolené",
+ "User": "Používateľ",
+ "Moderator": "Moderátor",
+ "Admin": "Správca",
+ "Start a chat": "Začať konverzáciu",
+ "Who would you like to communicate with?": "S kým si želáte komunikovať?",
+ "Email, name or matrix ID": "Emailová adresa, meno alebo matrix ID",
+ "Start Chat": "Začať konverzáciu",
+ "Invite new room members": "Pozvať nových členov do miestnosti",
+ "Who would you like to add to this room?": "Koho si želáte pridať do tejto miestnosti?",
+ "Send Invites": "Poslať pozvánky",
+ "Failed to invite user": "Nepodarilo sa pozvať používateľa",
+ "Operation failed": "Operácia zlyhala",
+ "Failed to invite": "Pozvanie zlyhalo",
+ "Failed to invite the following users to the %(roomName)s room:": "Do miestnosti %(roomName)s sa nepodarilo pozvať nasledujúcich používateľov:",
+ "You need to be logged in.": "Mali by ste byť prihlásení.",
+ "You need to be able to invite users to do that.": "Na uskutočnenie tejto akcie by ste mali byť schopní pozývať používateľov.",
+ "Unable to create widget.": "Nie je možné vytvoriť widget.",
+ "Failed to send request.": "Nepodarilo sa odoslať požiadavku.",
+ "This room is not recognised.": "Nie je možné rozpoznať takúto miestnosť.",
+ "Power level must be positive integer.": "Úroveň moci musí byť kladné celé číslo.",
+ "You are not in this room.": "Nenachádzate sa v tejto miestnosti.",
+ "You do not have permission to do that in this room.": "V tejto miestnosti nemáte oprávnenie na vykonanie takejto akcie.",
+ "Missing room_id in request": "V požiadavke chýba room_id",
+ "Must be viewing a room": "Musí byť zobrazená miestnosť",
+ "Room %(roomId)s not visible": "Miestnosť %(roomId)s nie je viditeľná",
+ "Missing user_id in request": "V požiadavke chýba user_id",
+ "Failed to lookup current room": "Nepodarilo sa vyhľadať aktuálnu miestnosť",
+ "Usage": "Použitie",
+ "/ddg is not a command": "/ddg nie je žiaden príkaz",
+ "To use it, just wait for autocomplete results to load and tab through them.": "Ak to chcete použiť, len počkajte na načítanie výsledkov automatického dopĺňania a cyklicky prechádzajte stláčaním klávesu tab..",
+ "Unrecognised room alias:": "Nerozpoznaný alias miestnosti:",
+ "Ignored user": "Ignorovaný používateľ",
+ "You are now ignoring %(userId)s": "Od teraz ignorujete používateľa %(userId)s",
+ "Unignored user": "Ignorácia zrušená",
+ "You are no longer ignoring %(userId)s": "Od teraz viac neignorujete používateľa %(userId)s",
+ "Unknown (user, device) pair:": "Neznámy pár (používateľ, zariadenie):",
+ "Device already verified!": "Zariadenie už overené!",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "POZOR: Zariadenie je už overené, ale kľúče SA NEZHODUJÚ!",
+ "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "POZOR: OVERENIE KĽÚČOV ZLYHALO! Podpisovací kľúč zo zariadenia %(deviceId)s používateľa %(userId)s je \"%(fprint)s\" čo sa nezhoduje s poskytnutým kľúčom \"%(fingerprint)s\". Mohlo by to znamenať, že vaša komunikácia je práve odpočúvaná!",
+ "Verified key": "Kľúč overený",
+ "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Podpisovací kľúč, ktorý ste poskytli súhlasí s podpisovacím kľúčom, ktorý ste dostali zo zariadenia %(deviceId)s používateľa %(userId)s's. Zariadenie je považované za overené.",
+ "Unrecognised command:": "Nerozpoznaný príkaz:",
+ "Reason": "Dôvod",
+ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s prijal pozvanie pre %(displayName)s.",
+ "%(targetName)s accepted an invitation.": "%(targetName)s prijal pozvanie.",
+ "%(senderName)s requested a VoIP conference.": "%(senderName)s požiadal o VOIP konferenciu.",
+ "%(senderName)s invited %(targetName)s.": "%(senderName)s pozval %(targetName)s.",
+ "%(senderName)s banned %(targetName)s.": "%(senderName)s zakázal vstup %(targetName)s.",
+ "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s si zmenil zobrazované meno z %(oldDisplayName)s na %(displayName)s.",
+ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s si nastavil zobrazované meno %(displayName)s.",
+ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s odstránil svoje zobrazované meno (%(oldDisplayName)s).",
+ "%(senderName)s removed their profile picture.": "%(senderName)s si z profilu odstránil obrázok.",
+ "%(senderName)s changed their profile picture.": "%(senderName)s si zmenil obrázok v profile.",
+ "%(senderName)s set a profile picture.": "%(senderName)s si nastavil obrázok v profile.",
+ "VoIP conference started.": "Začala VoIP konferencia.",
+ "%(targetName)s joined the room.": "%(targetName)s vstúpil do miestnosti.",
+ "VoIP conference finished.": "Skončila VoIP konferencia.",
+ "%(targetName)s rejected the invitation.": "%(targetName)s odmietol pozvanie.",
+ "%(targetName)s left the room.": "%(targetName)s opustil miestnosť.",
+ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s povolil vstup %(targetName)s.",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s vykopol %(targetName)s.",
+ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s stiahol pozvanie %(targetName)s.",
+ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s zmenil tému na \"%(topic)s\".",
+ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s odstránil názov miestnosti.",
+ "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s zmenil názov miestnosti na %(roomName)s.",
+ "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s poslal obrázok.",
+ "Someone": "Niekto",
+ "(not supported by this browser)": "(Nepodporované v tomto prehliadači)",
+ "%(senderName)s answered the call.": "%(senderName)s prijal hovor.",
+ "(could not connect media)": "(nie je možné spojiť médiá)",
+ "(no answer)": "(žiadna odpoveď)",
+ "(unknown failure: %(reason)s)": "(neznáma chyba: %(reason)s)",
+ "%(senderName)s ended the call.": "%(senderName)s ukončil hovor.",
+ "%(senderName)s placed a %(callType)s call.": "%(senderName)s uskutočnil %(callType)s hovor.",
+ "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s pozval %(targetDisplayName)s vstúpiť do miestnosti.",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s sprístupnil budúcu históriu miestnosti pre všetkých členov, od kedy boli pozvaní.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s sprístupnil budúcu históriu miestnosti pre všetkých členov, od kedy vstúpili.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s sprístupnil budúcu históriu miestnosti pre všetkých členov.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s sprístupnil budúcu históriu miestnosti pre všetkých.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s sprístupnil budúcu históriu miestnosti neznámym (%(visibility)s).",
+ "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s povolil E2E šifrovanie (algoritmus %(algorithm)s).",
+ "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s z %(fromPowerLevel)s na %(toPowerLevel)s",
+ "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s zmenil úroveň moci pre %(powerLevelDiffText)s.",
+ "%(senderName)s changed the pinned messages for the room.": "%(senderName)s zmenil pripnuté správy pre túto miestnosť.",
+ "%(widgetName)s widget modified by %(senderName)s": "%(senderName)s zmenil widget %(widgetName)s",
+ "%(widgetName)s widget added by %(senderName)s": "%(senderName)s pridal widget %(widgetName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s odstránil widget %(widgetName)s",
+ "Communities": "Komunity",
+ "Message Pinning": "Pripnutie správ",
+ "%(displayName)s is typing": "%(displayName)s píše",
+ "%(names)s and %(count)s others are typing|other": "%(names)s a %(count)s ďalší píšu",
+ "%(names)s and %(count)s others are typing|one": "%(names)s a jeden ďalší píše",
+ "%(names)s and %(lastPerson)s are typing": "%(names)s a %(lastPerson)s píšu",
+ "Failure to create room": "Nepodarilo sa vytvoriť miestnosť",
+ "Server may be unavailable, overloaded, or you hit a bug.": "Server môže byť nedostupný, preťažený, alebo ste narazili na chybu.",
+ "Unnamed Room": "Nepomenovaná miestnosť",
+ "Your browser does not support the required cryptography extensions": "Váš prehliadač nepodporuje požadované kryptografické rozšírenia",
+ "Not a valid Riot keyfile": "Toto nie je správny súbor s kľúčami Riot",
+ "Authentication check failed: incorrect password?": "Kontrola overenia zlyhala: Nesprávne heslo?",
+ "Failed to join room": "Nepodarilo sa vstúpiť do miestnosti",
+ "Active call (%(roomName)s)": "Aktívny hovor (%(roomName)s)",
+ "unknown caller": "neznámeho volajúceho",
+ "Incoming voice call from %(name)s": "Prichádzajúci audio hovor od %(name)s",
+ "Incoming video call from %(name)s": "Prichádzajúci video hovor od %(name)s",
+ "Incoming call from %(name)s": "Prichádzajúci hovor od %(name)s",
+ "Decline": "Odmietnuť",
+ "Accept": "Prijať",
+ "Error": "Chyba",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Na číslo +%(msisdn)s bola odoslaná textová správa, ktorá obsahuje overovací kód. Prosím zadajte tento overovací kód",
+ "Incorrect verification code": "Nesprávny overovací kód",
+ "Enter Code": "Vložte kód",
+ "Submit": "Odoslať",
+ "Phone": "Telefón",
+ "Add phone number": "Pridať telefónne číslo",
+ "Add": "Pridať",
+ "Failed to upload profile picture!": "Do profilu sa nepodarilo nahrať obrázok!",
+ "Upload new:": "Nahrať nový:",
+ "No display name": "Žiadne zobrazované meno",
+ "New passwords don't match": "Nové heslá sa nezhodujú",
+ "Passwords can't be empty": "Heslá nemôžu byť prázdne",
+ "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Zmena hesla momentálne obnoví šifrovacie kľúče na všetkých vašich zariadeniach, čo spôsobí, že história vašich šifrovaných konverzácií sa stane nečitateľná, jedine že si pred zmenou hesla exportujete kľúče miestností do súboru a po zmene kľúče importujete naspäť. V budúcnosti bude táto funkcia vylepšená.",
+ "Continue": "Pokračovať",
+ "Export E2E room keys": "Exportovať E2E šifrovacie kľúče miestností",
+ "Do you want to set an email address?": "Želáte si nastaviť emailovú adresu?",
+ "Current password": "Súčasné heslo",
+ "Password": "Heslo",
+ "New Password": "Nové heslo",
+ "Confirm password": "Potvrdiť heslo",
+ "Change Password": "Zmeniť heslo",
+ "Your home server does not support device management.": "Zdá sa, že váš domovský server nepodporuje správu zariadení.",
+ "Unable to load device list": "Nie je možné načítať zoznam zariadení",
+ "Device ID": "ID zariadenia",
+ "Device Name": "Názov zariadenia",
+ "Last seen": "Naposledy aktívne",
+ "Failed to set display name": "Nepodarilo sa nastaviť zobrazované meno",
+ "Authentication": "Overenie",
+ "Failed to delete device": "Nepodarilo sa vymazať zariadenie",
+ "Delete": "Vymazať",
+ "Disable Notifications": "Zakázať oznámenia",
+ "Enable Notifications": "Povoliť oznámenia",
+ "Cannot add any more widgets": "Nie je možné pridať ďalšie widgety",
+ "The maximum permitted number of widgets have already been added to this room.": "Do tejto miestnosti už bol pridaný maximálny povolený počet widgetov.",
+ "Add a widget": "Pridať widget",
+ "Drop File Here": "Pretiahnite sem súbor",
+ "Drop file here to upload": "Pretiahnutím sem nahráte súbor",
+ " (unsupported)": " (nepodporované)",
+ "Join as voice or video.": "Pripojte sa ako audio alebo video.",
+ "Ongoing conference call%(supportedText)s.": "Prebiehajúci%(supportedText)s hovor.",
+ "%(senderName)s sent an image": "%(senderName)s poslal obrázok",
+ "%(senderName)s sent a video": "%(senderName)s poslal video",
+ "%(senderName)s uploaded a file": "%(senderName)s nahral súbor",
+ "Options": "Možnosti",
+ "Undecryptable": "Nedešifrovateľné",
+ "Encrypted by a verified device": "Zašifrované overeným zariadením",
+ "Encrypted by an unverified device": "Zašifrované neovereným zariadením",
+ "Unencrypted message": "Nešifrovaná správa",
+ "Please select the destination room for this message": "Prosím, vyberte cieľovú miestnosť pre túto správu",
+ "Blacklisted": "Na čiernej listine",
+ "Verified": "Overené",
+ "Unverified": "Neoverené",
+ "device id: ": "ID zariadenia: ",
+ "Disinvite": "Stiahnuť pozvanie",
+ "Kick": "Vykopnúť",
+ "Disinvite this user?": "Stiahnuť pozvanie tohoto používateľa?",
+ "Kick this user?": "Vykopnúť tohoto používateľa?",
+ "Failed to kick": "Nepodarilo sa vykopnúť",
+ "Unban": "Povoliť vstup",
+ "Ban": "Zakázať vstup",
+ "Unban this user?": "Povoliť vstúpiť tomuto používateľovi?",
+ "Ban this user?": "Zakázať vstúpiť tomuto používateľovi?",
+ "Failed to ban user": "Nepodarilo sa zakázať vstup používateľa",
+ "Failed to mute user": "Nepodarilo sa umlčať používateľa",
+ "Failed to toggle moderator status": "Nepodarilo sa prepnúť stav moderátor",
+ "Failed to change power level": "Nepodarilo sa zmeniť úroveň moci",
+ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Túto zmenu nebudete môcť vrátiť späť pretože tomuto používateľovi udeľujete rovnakú úroveň moci, akú máte vy.",
+ "Are you sure?": "Ste si istí?",
+ "No devices with registered encryption keys": "Žiadne zariadenia so zaregistrovanými šifrovacími kľúčmi",
+ "Devices": "Zariadenia",
+ "Unignore": "Prestať ignorovať",
+ "Ignore": "Ignorovať",
+ "Jump to read receipt": "Preskočiť na potvrdenie o prečítaní",
+ "Mention": "Zmieniť sa",
+ "Invite": "Pozvať",
+ "User Options": "Možnosti používateľa",
+ "Direct chats": "Priame konverzácie",
+ "Unmute": "Zrušiť umlčanie",
+ "Mute": "Umlčať",
+ "Revoke Moderator": "Odobrať stav moderátor",
+ "Make Moderator": "Udeliť stav moderátor",
+ "Admin Tools": "Nástroje správcu",
+ "Level:": "Úroveň:",
+ "and %(count)s others...|other": "a ďalších %(count)s...",
+ "and %(count)s others...|one": "a jeden ďalší...",
+ "Invited": "Pozvaní",
+ "Filter room members": "Filtrovať členov v miestnosti",
+ "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (moc %(powerLevelNumber)s)",
+ "Attachment": "Príloha",
+ "Upload Files": "Nahrať súbory",
+ "Are you sure you want to upload the following files?": "Ste si istí, že chcete nahrať nasledujúce súbory?",
+ "Encrypted room": "Šifrovaná miestnosť",
+ "Unencrypted room": "Nešifrovaná miestnosť",
+ "Hangup": "Zavesiť",
+ "Voice call": "Audio hovor",
+ "Video call": "Video hovor",
+ "Hide Apps": "Skriť aplikácie",
+ "Show Apps": "Zobraziť aplikácie",
+ "Upload file": "Nahrať súbor",
+ "Show Text Formatting Toolbar": "Zobraziť lištu formátovania textu",
+ "Send an encrypted message": "Odoslať šifrovanú správu",
+ "Send a message (unencrypted)": "Odoslať správu (nešifrovanú)",
+ "You do not have permission to post to this room": "Nemáte udelené právo posielať do tejto miestnosti",
+ "Turn Markdown on": "Povoliť Markdown",
+ "Turn Markdown off": "Zakázať Markdown",
+ "Hide Text Formatting Toolbar": "Skriť lištu formátovania textu",
+ "Server error": "Chyba servera",
+ "Server unavailable, overloaded, or something else went wrong.": "Server je nedostupný, preťažený, alebo sa pokazilo niečo iné.",
+ "Command error": "Chyba príkazu",
+ "bold": "tučné",
+ "italic": "kurzíva",
+ "strike": "preškrtnutie",
+ "underline": "podčiarknutie",
+ "code": "kód",
+ "quote": "citácia",
+ "bullet": "odrážky",
+ "numbullet": "číslované odrážky",
+ "Markdown is disabled": "Markdown je zakázaný",
+ "Markdown is enabled": "Markdown je povolený",
+ "Unpin Message": "Zrušiť pripnutie správy",
+ "Jump to message": "Preskočiť na správu",
+ "No pinned messages.": "Žiadne pripnuté správy.",
+ "Loading...": "Načítanie...",
+ "Pinned Messages": "Pripnuté správy",
+ "for %(amount)ss": "na %(amount)ss",
+ "for %(amount)sm": "na %(amount)sm",
+ "for %(amount)sh": "na %(amount)sh",
+ "for %(amount)sd": "na %(amount)sd",
+ "Online": "Prítomný",
+ "Idle": "Nečinný",
+ "Offline": "Nedostupný",
+ "Unknown": "Neznámy",
+ "Seen by %(userName)s at %(dateTime)s": "%(userName)s videl %(dateTime)s",
+ "Unnamed room": "Nepomenovaná miestnosť",
+ "World readable": "Viditeľné pre všetkých",
+ "Guests can join": "Aj hostia môžu vstúpiť",
+ "No rooms to show": "Žiadne miestnosti na zobrazenie",
+ "Failed to set avatar.": "Nepodarilo sa nastaviť avatara.",
+ "Save": "Uložiť",
+ "(~%(count)s results)|other": "(~%(count)s výsledkov)",
+ "(~%(count)s results)|one": "(~%(count)s výsledok)",
+ "Join Room": "Vstúpiť do miestnosti",
+ "Upload avatar": "Nahrať avatara",
+ "Remove avatar": "Odstrániť avatara",
+ "Settings": "Nastavenia",
+ "Forget room": "Zabudnúť miestnosť",
+ "Search": "Hľadať",
+ "Show panel": "Zobraziť panel",
+ "Drop here to favourite": "Pretiahnutím sem označíte ako obľúbené",
+ "Drop here to tag direct chat": "Pretiahnutím sem označíte ako priamu konverzáciu",
+ "Drop here to restore": "Pretiahnutím sem obnovíte z pozadia",
+ "Drop here to demote": "Pretiahnutím sem presuniete do pozadia",
+ "Drop here to tag %(section)s": "Pretiahnutím sem pridáte značku %(section)s",
+ "Press to start a chat with someone": "Stlačením tlačidla otvoríte diskusiu s kýmkoľvek",
+ "You're not in any rooms yet! Press to make a room or to browse the directory": "Zatiaľ ste nevstúpili do žiadnej miestnosti! Stlačením tlačidla môžete vytvoriť novú miestnosť alebo si po stlačení tlačidla môžete prezrieť adresár miestností",
+ "Community Invites": "Pozvánky do komunity",
+ "Invites": "Pozvánky",
+ "Favourites": "Obľúbené",
+ "People": "Ľudia",
+ "Rooms": "Miestnosti",
+ "Low priority": "Nízka priorita",
+ "Historical": "Historické",
+ "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Nie je možné si byť istý že toto pozvanie bola odoslaná na emailovú adresu priradenú k vašemu účtu.",
+ "This invitation was sent to an email address which is not associated with this account:": "Toto pozvanie bolo odoslané na emailovú adresu, ktorá nie je priradená k tomuto účtu:",
+ "You may wish to login with a different account, or add this email to this account.": "Môžete sa prihlásiť k inému účtu, alebo pridať emailovú adresu do práve prihláseného účtu.",
+ "You have been invited to join this room by %(inviterName)s": "Používateľ %(inviterName)s vás pozval vstúpiť do tejto miestnosti",
+ "Would you like to accept or decline this invitation?": "Chcete prijať alebo odmietnuť toto pozvanie?",
+ "Reason: %(reasonText)s": "Dôvod: %(reasonText)s",
+ "Rejoin": "Vstúpiť znovu",
+ "You have been kicked from %(roomName)s by %(userName)s.": "Používateľ %(userName)s vás vykopol z miestnosti %(roomName)s.",
+ "You have been kicked from this room by %(userName)s.": "Používateľ %(userName)s vás vykopol z tejto miestnosti.",
+ "You have been banned from %(roomName)s by %(userName)s.": "Používateľ %(userName)s vám zakázal vstúpiť do miestnosti %(roomName)s.",
+ "You have been banned from this room by %(userName)s.": "Používateľ %(userName)s vám zakázal vstúpiť do tejto miestnosti.",
+ "This room": "Táto miestnosť",
+ "%(roomName)s does not exist.": "%(roomName)s neexistuje.",
+ "%(roomName)s is not accessible at this time.": "%(roomName)s nie je momentálne prístupná.",
+ "You are trying to access %(roomName)s.": "Pristupujete k miestnosti %(roomName)s.",
+ "You are trying to access a room.": "Pristupujete k miestnosti.",
+ "Click here to join the discussion!": "Kliknutím sem vstúpite do diskusie!",
+ "This is a preview of this room. Room interactions have been disabled": "Toto je náhľad na miestnosť. Všetky akcie pre túto miestnosť sú zakázané",
+ "To change the room's avatar, you must be a": "Aby ste mohli meniť avatara miestnosti, musíte byť",
+ "To change the room's name, you must be a": "Aby ste mohli meniť názov miestnosti, musíte byť",
+ "To change the room's main address, you must be a": "Aby ste mohli meniť hlavnú adresu miestnosti, musíte byť",
+ "To change the room's history visibility, you must be a": "Aby ste mohli meniť viditeľnosť histórie miestnosti, musíte byť",
+ "To change the permissions in the room, you must be a": "Aby ste mohli meniť oprávnenia v miestnosti, musíte byť",
+ "To change the topic, you must be a": "Aby ste mohli meniť tému, musíte byť",
+ "To modify widgets in the room, you must be a": "Aby ste v miestnosti mohli meniť widgety, musíte byť",
+ "Failed to unban": "Nepodarilo sa povoliť vstup",
+ "Banned by %(displayName)s": "Vstup zakázal %(displayName)s",
+ "Privacy warning": "Upozornenie súkromia",
+ "Changes to who can read history will only apply to future messages in this room": "Zmeny určujúce kto môže čítať históriu sa uplatnia len na budúce správy v tejto miestnosti",
+ "The visibility of existing history will be unchanged": "Viditeľnosť existujúcej histórie ostane bez zmeny",
+ "unknown error code": "neznámy kód chyby",
+ "Failed to forget room %(errCode)s": "Nepodarilo sa zabudnúť miestnosť %(errCode)s",
+ "End-to-end encryption is in beta and may not be reliable": "E2E šifrovanie je v štádiu beta a nemusí byť úplne spoľahlivé",
+ "You should not yet trust it to secure data": "Nemali by ste zatiaľ spoliehať, že vám toto šifrovanie dokáže zabezpečiť vaše údaje",
+ "Devices will not yet be able to decrypt history from before they joined the room": "Zariadenia zatiaľ nedokážu dešifrovať správy poslané skôr, než ste na nich vstúpili do miestnosti",
+ "Once encryption is enabled for a room it cannot be turned off again (for now)": "Ak v miestnosti povolíte šifrovanie, šifrovanie nie je viac možné zakázať (aspoň zatiaľ nie)",
+ "Encrypted messages will not be visible on clients that do not yet implement encryption": "Šifrované správy nebudú vôbec zobrazené v klientoch, ktorí zatiaľ nepodporujú šifrovanie",
+ "Never send encrypted messages to unverified devices in this room from this device": "Z tohoto zariadenia nikdy v tejto miestnosti neposielať šifrované správy na neoverené zariadenia",
+ "Enable encryption": "Povoliť šifrovanie",
+ "(warning: cannot be disabled again!)": "(Pozor: Nie je viac možné zakázať!)",
+ "Encryption is enabled in this room": "V tejto miestnosti je povolené šifrovanie",
+ "Encryption is not enabled in this room": "V tejto miestnosti nie je povolené šifrovanie",
+ "Privileged Users": "Poverení používatelia",
+ "%(user)s is a": "%(user)s je",
+ "No users have specific privileges in this room": "Žiadny používatelia nemajú v tejto miestnosti pridelené konkrétne poverenia",
+ "Banned users": "Používatelia, ktorým bol zakázaný vstup",
+ "This room is not accessible by remote Matrix servers": "Táto miestnosť nie je prístupná cez vzdialené Matrix servery",
+ "Leave room": "Opustiť miestnosť",
+ "Favourite": "Obľúbená",
+ "Tagged as: ": "Označená ako: ",
+ "To link to a room it must have an address.": "Ak chcete vytvoriť odkaz do miestnosti, musíte najprv nastaviť jej adresu.",
+ "Guests cannot join this room even if explicitly invited.": "Hostia nemôžu vstúpiť do tejto miestnosti ani ak ich priamo pozvete.",
+ "Click here to fix": "Kliknutím sem to opravíte",
+ "Who can access this room?": "Kto môže vstúpiť do tejto miestnosti?",
+ "Only people who have been invited": "Len pozvaní ľudia",
+ "Anyone who knows the room's link, apart from guests": "Ktokoľvek, kto pozná odkaz do miestnosti (okrem hostí)",
+ "Anyone who knows the room's link, including guests": "Ktokoľvek, kto pozná odkaz do miestnosti (vrátane hostí)",
+ "Publish this room to the public in %(domain)s's room directory?": "Uverejniť túto miestnosť v adresáry miestností na servery %(domain)s?",
+ "Who can read history?": "Kto môže čítať históriu?",
+ "Anyone": "Ktokoľvek",
+ "Members only (since the point in time of selecting this option)": "Len členovia (odkedy je aktívna táto voľba)",
+ "Members only (since they were invited)": "Len členovia (odkedy boli pozvaní)",
+ "Members only (since they joined)": "Len členovia (odkedy vstúpili)",
+ "Room Colour": "Farba miestnosti",
+ "Permissions": "Oprávnenia",
+ "The default role for new room members is": "Predvolený status pre nových členov je",
+ "To send messages, you must be a": "Aby ste mohli posielať správy, musíte byť",
+ "To invite users into the room, you must be a": "Aby ste mohli pozývať používateľov do miestnosti, musíte byť",
+ "To configure the room, you must be a": "Aby ste mohli nastavovať miestnosť, musíte byť",
+ "To kick users, you must be a": "Aby ste mohli vykopávať používateľov, musíte byť",
+ "To ban users, you must be a": "Aby ste používateľom mohli zakazovať vstup, musíte byť",
+ "To remove other users' messages, you must be a": "Aby ste mohli odstraňovať správy, ktoré poslali iní používatelia, musíte byť",
+ "To send events of type , you must be a": "Aby ste mohli posielať udalosti typu , musíte byť",
+ "Advanced": "Pokročilé",
+ "This room's internal ID is": "Interné ID tejto miestnosti je",
+ "Add a topic": "Pridať tému",
+ "Cancel": "Zrušiť",
+ "Scroll to unread messages": "Posunúť na neprečítané správy",
+ "Jump to first unread message.": "Preskočiť na prvú neprečítanú správu.",
+ "Close": "Zatvoriť",
+ "Invalid alias format": "Nesprávny formát aliasu",
+ "'%(alias)s' is not a valid format for an alias": "'%(alias)s' nie je platný formát pre alias",
+ "Invalid address format": "Nesprávny formát adresy",
+ "'%(alias)s' is not a valid format for an address": "'%(alias)s' nie je platný formát adresy",
+ "not specified": "nezadané",
+ "not set": "nenastavené",
+ "Remote addresses for this room:": "Vzdialené adresy do tejto miestnosti:",
+ "The main address for this room is": "Hlavná adresa tejto miestnosti je",
+ "Local addresses for this room:": "Lokálne adresy do tejto miestnosti:",
+ "This room has no local addresses": "Pre túto miestnosť nie sú žiadne lokálne adresy",
+ "New address (e.g. #foo:%(localDomain)s)": "Nová adresa (napr. #foo:%(localDomain)s)",
+ "Invalid community ID": "Nesprávne ID komunity",
+ "'%(groupId)s' is not a valid community ID": "'%(groupId)s' nie je platným ID komunity",
+ "Related Communities": "Súvisiace komunity",
+ "Related communities for this room:": "Komunity spojené s touto miestnosťou:",
+ "This room has no related communities": "Pre túto miestnosť nie sú žiadne súvisiace komunity",
+ "New community ID (e.g. +foo:%(localDomain)s)": "Nové ID komunity (napr. +foo:%(localDomain)s)",
+ "Disable URL previews by default for participants in this room": "Predvolene zakázať náhľady URL adries pre členov tejto miestnosti",
+ "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "Náhľady URL adries sú predvolene %(globalDisableUrlPreview)s pre členov tejto miestnosti.",
+ "disabled": "zakázané",
+ "enabled": "povolené",
+ "You have disabled URL previews by default.": "Predvolene máte zakázané náhľady URL adries.",
+ "You have enabled URL previews by default.": "Predvolene máte povolené náhľady URL adries.",
+ "URL Previews": "Náhľady URL adries",
+ "Enable URL previews for this room (affects only you)": "Povoliť náhľady URL adries pre túto miestnosť (ovplyvňuje len vás)",
+ "Disable URL previews for this room (affects only you)": "Zakázať náhľady URL adries pre túto miestnosť (ovplyvňuje len vás)",
+ "Error decrypting audio": "Chyba pri dešifrovaní zvuku",
+ "Error decrypting attachment": "Chyba pri dešifrovaní prílohy",
+ "Decrypt %(text)s": "Dešifrovať %(text)s",
+ "Download %(text)s": "Stiahnuť %(text)s",
+ "Invalid file%(extra)s": "Neplatný súbor%(extra)s",
+ "Error decrypting image": "Chyba pri dešifrovaní obrázka",
+ "Image '%(Body)s' cannot be displayed.": "Nie je možné zobraziť obrázok '%(Body)s'.",
+ "This image cannot be displayed.": "Tento obrázok nie je možné zobraziť.",
+ "Error decrypting video": "Chyba pri dešifrovaní videa",
+ "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s zmenil avatara pre %(roomName)s",
+ "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s z miestnosti odstránil avatara.",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s zmenil avatara miestnosti na
",
+ "Copied!": "Skopírované!",
+ "Failed to copy": "Nepodarilo sa skopírovať",
+ "Add an Integration": "Pridať integráciu",
+ "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Budete presmerovaní na stránku tretej strany, aby ste mohli overiť svoj účet na použitie s %(integrationsUrl)s. Chcete pokračovať?",
+ "Removed or unknown message type": "Odstránený alebo neznámy typ udalosti",
+ "Message removed by %(userId)s": "Správu odstránil %(userId)s",
+ "Message removed": "správa odstránená",
+ "Robot check is currently unavailable on desktop - please use a web browser": "Overenie, že nieste robot nie je možné cez aplikáciu na pracovnej ploche - prosím prejdite do prehliadača webu",
+ "This Home Server would like to make sure you are not a robot": "Tento domovský server by sa rád uistil, že nieste robot",
+ "Sign in with CAS": "Prihlásiť sa s použitím CAS",
+ "Custom Server Options": "Vlastné možnosti servera",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Vlastné nastavenia servera môžete použiť na pripojenie k iným serverom Matrix a to zadaním URL adresy domovského servera.",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "Umožní vám to použiť túto aplikáciu s už existujúcim Matrix účtom na akomkoľvek domovskom servery.",
+ "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Môžete tiež zadať vlastnú adresu servera totožností, čo však za štandardných okolností znemožní interakcie medzi používateľmi založené emailovou adresou.",
+ "Dismiss": "Zamietnuť",
+ "To continue, please enter your password.": "Aby ste mohli pokračovať, prosím zadajte svoje heslo.",
+ "Password:": "Heslo:",
+ "An email has been sent to %(emailAddress)s": "Na adresu %(emailAddress)s bola odoslaná správa",
+ "Please check your email to continue registration.": "Prosím, skontrolujte si emaily, aby ste mohli pokračovať v registrácii.",
+ "Token incorrect": "Nesprávny token",
+ "A text message has been sent to %(msisdn)s": "Na číslo %(msisdn)s bola odoslaná textová správa",
+ "Please enter the code it contains:": "Prosím, zadajte kód z tejto správy:",
+ "Start authentication": "Spustiť overenie",
+ "powered by Matrix": "Poháňa Matrix",
+ "User name": "Meno používateľa",
+ "Mobile phone number": "Číslo mobilného telefónu",
+ "Forgot your password?": "Zabudli ste heslo?",
+ "%(serverName)s Matrix ID": "Matrix ID na servery %(serverName)s",
+ "Sign in with": "Na prihlásenie sa použije",
+ "Email address": "Emailová adresa",
+ "Sign in": "Prihlásiť sa",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Ak nezadáte vašu emailovú adresu, nebudete si môcť obnoviť heslo. Ste si istí?",
+ "Email address (optional)": "Emailová adresa (nepovinné)",
+ "You are registering with %(SelectedTeamName)s": "Registrujete sa s %(SelectedTeamName)s",
+ "Mobile phone number (optional)": "Číslo mobilného telefónu (nepovinné)",
+ "Register": "Zaregistrovať",
+ "Default server": "Predvolený server",
+ "Custom server": "Vlastný server",
+ "Home server URL": "Adresa domovského servera",
+ "Identity server URL": "Adresa servera totožností",
+ "What does this mean?": "Čo je toto?",
+ "Remove from community": "Odstrániť z komunity",
+ "Disinvite this user from community?": "Zrušiť pozvanie tohoto používateľa z komunity?",
+ "Remove this user from community?": "Odstrániť tohoto používateľa z komunity?",
+ "Failed to withdraw invitation": "Nepodarilo sa stiahnuť pozvanie",
+ "Failed to remove user from community": "Nepodarilo sa odstrániť používateľa z komunity",
+ "Filter community members": "Filtrovať členov komunity",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Ste si istí, že chcete odstrániť miestnosť '%(roomName)s' z komunity %(groupId)s?",
+ "Removing a room from the community will also remove it from the community page.": "Keď odstránite miestnosť z komunity, odstráni sa aj odkaz do miestnosti zo stránky komunity.",
+ "Remove": "Odstrániť",
+ "Failed to remove room from community": "Nepodarilo sa odstrániť miestnosť z komunity",
+ "Failed to remove '%(roomName)s' from %(groupId)s": "Nepodarilo sa odstrániť miestnosť '%(roomName)s' z komunity %(groupId)s",
+ "Something went wrong!": "Niečo sa pokazilo!",
+ "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Nie je možné aktualizovať viditeľnosť miestnosti '%(roomName)s' v komunite %(groupId)s.",
+ "Visibility in Room List": "Viditeľnosť v zozname miestností",
+ "Visible to everyone": "Viditeľná pre všetkých",
+ "Only visible to community members": "Viditeľná len pre členov komunity",
+ "Filter community rooms": "Filtrovať miestnosti v komunite",
+ "Unknown Address": "Neznáma adresa",
+ "NOTE: Apps are not end-to-end encrypted": "POZOR: Aplikácie nie sú šifrované",
+ "Do you want to load widget from URL:": "Chcete načítať widget z URL adresy:",
+ "Allow": "Povoliť",
+ "Delete Widget": "Vymazať widget",
+ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Týmto vymažete widget pre všetkých používateľov v tejto miestnosti. Ste si istí, že chcete vymazať tento widget?",
+ "Delete widget": "Vymazať widget",
+ "Revoke widget access": "Odmietnuť prístup k widgetu",
+ "Edit": "Upraviť",
+ "Create new room": "Vytvoriť novú miestnosť",
+ "Unblacklist": "Odstrániť z čiernej listiny",
+ "Blacklist": "Pridať na čiernu listinu",
+ "Unverify": "Zrušiť overenie",
+ "Verify...": "Overiť...",
+ "No results": "Žiadne výsledky",
+ "Home": "Domov",
+ "Integrations Error": "Chyba integrácií",
+ "Could not connect to the integration server": "Nie je možné sa pripojiť k integračnému serveru",
+ "Manage Integrations": "Spravovať integrácie",
+ "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s",
+ "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)s%(count)s krát vstúpili",
+ "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)svstúpili",
+ "%(oneUser)sjoined %(count)s times|other": "%(oneUser)s%(count)s krát vstúpil",
+ "%(oneUser)sjoined %(count)s times|one": "%(oneUser)svstúpil",
+ "%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s%(count)s krát opustili",
+ "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)sopustili",
+ "%(oneUser)sleft %(count)s times|other": "%(oneUser)s%(count)s krát opustil",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)sopustil",
+ "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s%(count)s krát vstúpili a opustili",
+ "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)svstúpili a opustili",
+ "%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)s%(count)s krát vstúpil a opustil",
+ "%(oneUser)sjoined and left %(count)s times|one": "%(oneUser)svstúpil a opustil",
+ "%(severalUsers)sleft and rejoined %(count)s times|other": "%(severalUsers)s%(count)s krát opustili a znovu vstúpili",
+ "%(severalUsers)sleft and rejoined %(count)s times|one": "%(severalUsers)sopustili a znovu vstúpili",
+ "%(oneUser)sleft and rejoined %(count)s times|other": "%(oneUser)s%(count)s krát opustil a znovu vstúpil",
+ "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)sopustil a znovu vstúpil",
+ "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)s%(count)s krát odmietli pozvanie",
+ "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)sodmietly pozvanie",
+ "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s%(count)s krát odmietol pozvanie",
+ "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)sodmietol pozvanie",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "%(severalUsers)smali %(count)s krát stiahnuté pozvanie",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|one": "%(severalUsers)smali stiahnuté pozvanie",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|other": "%(oneUser)smal %(count)s krát stiahnuté pozvanie",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|one": "%(oneUser)smal stiahnuté pozvanie",
+ "were invited %(count)s times|other": "boli %(count)s krát pozvaní",
+ "were invited %(count)s times|one": "boli pozvaní",
+ "was invited %(count)s times|other": "bol %(count)s krát pozvaný",
+ "was invited %(count)s times|one": "bol pozvaný",
+ "were banned %(count)s times|other": "mali %(count)s krát zakázaný vstup",
+ "were banned %(count)s times|one": "mali zakázaný vstup",
+ "was banned %(count)s times|other": "mal %(count)s krát zakázaný vstup",
+ "was banned %(count)s times|one": "mal zakázaný vstup",
+ "were unbanned %(count)s times|other": "mali %(count)s krát povolený vstup",
+ "were unbanned %(count)s times|one": "mali povolený vstup",
+ "was unbanned %(count)s times|other": "mal %(count)s krát povolený vstup",
+ "was unbanned %(count)s times|one": "mal povolený vstup",
+ "were kicked %(count)s times|other": "boli %(count)s krát vykopnutí",
+ "were kicked %(count)s times|one": "boli vykopnutí",
+ "was kicked %(count)s times|other": "bol %(count)s krát vykopnutý",
+ "was kicked %(count)s times|one": "bol vykopnutý",
+ "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)ssi %(count)s krát zmenili meno",
+ "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)ssi zmenili meno",
+ "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)ssi %(count)s krát zmenil meno",
+ "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)ssi zmenil meno",
+ "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)ssi %(count)s krát zmenili avatara",
+ "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)ssi zmenili avatara",
+ "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)ssi %(count)s krát zmenil avatara",
+ "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)ssi zmenil avatara",
+ "%(items)s and %(count)s others|other": "%(items)s a %(count)s ďalší",
+ "%(items)s and %(count)s others|one": "%(items)s a jeden ďalší",
+ "%(items)s and %(lastItem)s": "%(items)s a tiež %(lastItem)s",
+ "Custom level": "Vlastná úroveň",
+ "Room directory": "Adresár miestností",
+ "Start chat": "Začať konverzáciu",
+ "And %(count)s more...|other": "A %(count)s ďalších...",
+ "ex. @bob:example.com": "pr. @jan:priklad.sk",
+ "Add User": "Pridať používateľa",
+ "Matrix ID": "Matrix ID",
+ "Matrix Room ID": "ID Matrix miestnosti",
+ "email address": "emailová adresa",
+ "Try using one of the following valid address types: %(validTypesList)s.": "Skúste použiť niektorý z nasledujúcich správnych typov adresy: %(validTypesList)s.",
+ "You have entered an invalid address.": "Zadali ste neplatnú adresu.",
+ "Create a new chat or reuse an existing one": "Vytvorte novú konverzáciu alebo sa pripojte už k existujúcej",
+ "Start new chat": "Začať novú konverzáciu",
+ "You already have existing direct chats with this user:": "S týmto používateľom už máte spoločné priame konverzácie:",
+ "Start chatting": "Začať konverzovať",
+ "Click on the button below to start chatting!": "Konverzovať môžete začať kliknutím na tlačidlo nižšie!",
+ "Start Chatting": "Začať konverzovať",
+ "Confirm Removal": "Potvrdiť odstránenie",
+ "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Ste si istí, že chcete odstrániť (vymazať) túto udalosť? Všimnite si: ak vymažete zmenu názvu miestnosti alebo zmenu témy, môžete tak vrátiť zodpovedajúcu zmenu.",
+ "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "ID komunity môže obsahovať len znaky a-z, 0-9, alebo '=_-./'",
+ "Something went wrong whilst creating your community": "Niečo sa pokazilo počas vytvárania požadovanej komunity",
+ "Create Community": "Vytvoriť komunitu",
+ "Community Name": "Názov komunity",
+ "Example": "Príklad",
+ "Community ID": "ID komunity",
+ "example": "príklad",
+ "Create": "Vytvoriť",
+ "Create Room": "Vytvoriť miestnosť",
+ "Room name (optional)": "Názov miestnosti (nepovinné)",
+ "Advanced options": "Pokročilé voľby",
+ "Block users on other matrix homeservers from joining this room": "Blokovať vstup do tejto miestnosti používateľom z ostatných domovských serverov Matrix",
+ "This setting cannot be changed later!": "Toto nastavenie už viac nie je možné meniť!",
+ "Unknown error": "Neznáma chyba",
+ "Incorrect password": "Nesprávne heslo",
+ "Deactivate Account": "Deaktivovať účet",
+ "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Toto spôsobí, že váš účet nebude viac použiteľný. Tak tiež si nebudete môcť znovu zaregistrovať rovnaké používateľské ID.",
+ "This action is irreversible.": "Túto akciu nie je možné vrátiť späť.",
+ "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Ak chcete overiť, či toto zariadenie je skutočne dôverihodné, kontaktujte jeho vlastníka iným spôsobom (napr. osobne alebo cez telefón) a opýtajte sa ho, či kľúč, ktorý má pre toto zariadenie zobrazený v nastaveniach sa zhoduje s kľúčom zobrazeným nižšie:",
+ "Device name": "Názov zariadenia",
+ "Device key": "Kľúč zariadenia",
+ "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Ak sa kľúče zhodujú, stlačte tlačidlo Overiť nižšie. Ak sa nezhodujú, niekto ďalší odpočúva toto zariadenie a v takomto prípade by ste asi mali namiesto toho stlačiť tlačidlo Pridať na čiernu listinu.",
+ "In future this verification process will be more sophisticated.": "V budúcnosti plánujeme tento proces overovania zariadení zjednodušiť.",
+ "Verify device": "Overiť zariadenie",
+ "I verify that the keys match": "Overil som, kľúče sa zhodujú",
+ "An error has occurred.": "Vyskytla sa chyba.",
+ "OK": "OK",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "Pridali ste nové zariadenie nazvané '%(displayName)s', ktoré žiada o šifrovacie kľúče.",
+ "Your unverified device '%(displayName)s' is requesting encryption keys.": "Vaše neoverené zariadenie nazvané '%(displayName)s' žiada o šifrovacie kľúče.",
+ "Start verification": "Spustiť overenie",
+ "Share without verifying": "Zdieľať bez overenia",
+ "Ignore request": "Ignorovať žiadosť",
+ "Loading device info...": "Načítanie informácií o zariadení...",
+ "Encryption key request": "Žiadosť o šifrovacie kľúče",
+ "Otherwise, click here to send a bug report.": "inak kliknutím sem nahláste chybu.",
+ "Unable to restore session": "Nie je možné obnoviť reláciu",
+ "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Pri pokuse o obnovenie vašej predchádzajúcej relácie sa vyskytla chyba. Ak budete pokračovať, musíte sa znovu prihlásiť, a história šifrovaných konverzácii nebude viac čitateľná.",
+ "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ak ste sa v minulosti prihlásili s novšou verziou programu Riot, vaša relácia nemusí byť kompatibilná s touto verziou. Zatvorte prosím toto okno a vráťte sa cez najnovšiu verziu Riot.",
+ "Continue anyway": "Napriek tomu pokračovať",
+ "Invalid Email Address": "Nesprávna emailová adresa",
+ "This doesn't appear to be a valid email address": "Zdá sa, že toto nie je platná emailová adresa",
+ "Verification Pending": "Nedokončené overenie",
+ "Please check your email and click on the link it contains. Once this is done, click continue.": "Prosím, skontrolujte si email a kliknite na odkaz v správe, ktorú sme vám poslali. Keď budete mať toto za sebou, kliknite na tlačidlo Pokračovať.",
+ "Unable to add email address": "Nie je možné pridať emailovú adresu",
+ "Unable to verify email address.": "Nie je možné overiť emailovú adresu.",
+ "This will allow you to reset your password and receive notifications.": "Toto vám umožní obnoviť si heslo a prijímať oznámenia emailom.",
+ "Skip": "Preskočiť",
+ "User names may only contain letters, numbers, dots, hyphens and underscores.": "Používateľské meno môže obsahovať len písmená, číslice, bodky, pomlčky a podčiarkovníky.",
+ "Username not available": "Používateľské meno nie je k dispozícii",
+ "Username invalid: %(errMessage)s": "Neplatné používateľské meno: %(errMessage)s",
+ "An error occurred: %(error_string)s": "Vyskytla sa chyba: %(error_string)s",
+ "Username available": "Používateľské meno je k dispozícii",
+ "To get started, please pick a username!": "Začnite tým, že si zvolíte používateľské meno!",
+ "This will be your account name on the homeserver, or you can pick a different server.": "Toto bude názov vašeho účtu na domovskom servery , alebo si môžete zvoliť iný server.",
+ "If you already have a Matrix account you can log in instead.": "Ak už máte Matrix účet, môžete sa hneď Prihlásiť.",
+ "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Momentálne sa ku všetkym neovereným zariadeniam správate ako by boli na čiernej listine; aby ste na tieto zariadenia mohli posielať správy, mali by ste ich overiť.",
+ "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Odporúčame vám prejsť procesom overenia pre všetky tieto zariadenia aby ste si potvrdili, že skutočne patria ich pravým vlastníkom, ak si to však želáte, môžete tiež znovu poslať správu bez overovania.",
+ "Room contains unknown devices": "V miestnosti sú neznáme zariadenia",
+ "\"%(RoomName)s\" contains devices that you haven't seen before.": "V miestnosti \"%(RoomName)s\" sa našli zariadenia, s ktorými ste doposiaľ nikdy nekomunikovali.",
+ "Unknown devices": "Neznáme zariadenia",
+ "Send anyway": "Napriek tomu odoslať",
+ "Private Chat": "Súkromná konverzácia",
+ "Public Chat": "Verejná konverzácia",
+ "Custom": "Vlastné",
+ "Alias (optional)": "Alias (nepovinné)",
+ "Name": "Názov",
+ "Topic": "Téma",
+ "Make this room private": "Urobiť z tejto miestnosti súkromnú miestnosť",
+ "Share message history with new users": "Zdieľať históriu s novými používateľmi",
+ "Encrypt room": "Zašifrovať miestnosť",
+ "You must register to use this functionality": "Aby ste mohli použiť túto vlastnosť, musíte byť zaregistrovaný",
+ "You must join the room to see its files": "Aby ste si mohli zobraziť zoznam súborov, musíte vstúpiť do miestnosti",
+ "There are no visible files in this room": "V tejto miestnosti nie sú žiadne viditeľné súbory",
+ "HTML for your community's page
\n\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n\n You can even use 'img' tags\n
\n": "HTML kód hlavnej stránky komunity
\n\n Dlhý popis môžete použiť na predstavenie komunity novým členom, alebo uvedenie \n dôležitých odkazov\n
\n\n Môžete tiež používať HTML značku 'img'\n
\n",
+ "Add rooms to the community summary": "Pridať miestnosti do prehľadu komunity",
+ "Which rooms would you like to add to this summary?": "Ktoré miestnosti si želáte pridať do tohoto prehľadu?",
+ "Add to summary": "Pridať do prehľadu",
+ "Failed to add the following rooms to the summary of %(groupId)s:": "Do prehľadu komunity %(groupId)s sa nepodarilo pridať nasledujúce miestnosti:",
+ "Add a Room": "Pridať miestnosť",
+ "Failed to remove the room from the summary of %(groupId)s": "Z prehľadu komunity %(groupId)s sa nepodarilo odstrániť miestnosť",
+ "The room '%(roomName)s' could not be removed from the summary.": "Nie je možné odstrániť miestnosť '%(roomName)s' z prehľadu.",
+ "Add users to the community summary": "Pridať používateľov do prehľadu komunity",
+ "Who would you like to add to this summary?": "Koho si želáte pridať do tohoto prehľadu?",
+ "Failed to add the following users to the summary of %(groupId)s:": "Do prehľadu komunity %(groupId)s sa nepodarilo pridať nasledujúcich používateľov:",
+ "Add a User": "Pridať používateľa",
+ "Failed to remove a user from the summary of %(groupId)s": "Z prehľadu komunity %(groupId)s sa nepodarilo odstrániť používateľa",
+ "The user '%(displayName)s' could not be removed from the summary.": "Nie je možné odstrániť používateľa '%(displayName)s' z prehľadu.",
+ "Failed to upload image": "Nepodarilo sa nahrať obrázok",
+ "Failed to update community": "Nepodarilo sa aktualizovať komunitu",
+ "Unable to accept invite": "Nie je možné prijať pozvanie",
+ "Unable to reject invite": "Nie je možné odmietnuť pozvanie",
+ "Leave Community": "Opustiť komunitu",
+ "Leave %(groupName)s?": "Opustiť komunitu %(groupName)s?",
+ "Leave": "Opustiť",
+ "Unable to leave room": "Nie je možné opustiť miestnosť",
+ "Community Settings": "Nastavenia komunity",
+ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Tieto miestnosti sú zobrazené všetkým členom na stránke komunity. Členovia komunity môžu vstúpiť do miestnosti kliknutím.",
+ "Add rooms to this community": "Pridať miestnosti do tejto komunity",
+ "Featured Rooms:": "Hlavné miestnosti:",
+ "Featured Users:": "Významní používatelia:",
+ "%(inviter)s has invited you to join this community": "%(inviter)s vás pozval vstúpiť do tejto komunity",
+ "You are an administrator of this community": "Ste správcom tejto komunity",
+ "You are a member of this community": "Ste členom tejto komunity",
+ "Community Member Settings": "Nastavenia členstva v komunite",
+ "Publish this community on your profile": "Uverejniť túto komunitu vo vašom profile",
+ "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Vaša komunita nemá vyplnený dlhý popis, ktorý tvorí stránku komunity viditeľnú jej členom.
Kliknutím sem otvoríte nastavenia, kde ho môžete vyplniť!",
+ "Long Description (HTML)": "Dlhý popis (HTML)",
+ "Description": "Popis",
+ "Community %(groupId)s not found": "Komunita %(groupId)s nebola nájdená",
+ "This Home server does not support communities": "Tento domovský server nepodporuje komunity",
+ "Failed to load %(groupId)s": "Nepodarilo sa načítať komunitu %(groupId)s",
+ "Reject invitation": "Odmietnuť pozvanie",
+ "Are you sure you want to reject the invitation?": "Ste si istí, že chcete odmietnuť toto pozvanie?",
+ "Failed to reject invitation": "Nepodarilo sa odmietnuť pozvanie",
+ "Are you sure you want to leave the room '%(roomName)s'?": "Ste si istí, že chcete opustiť miestnosť '%(roomName)s'?",
+ "Failed to leave room": "Nepodarilo sa opustiť miestnosť",
+ "Signed Out": "Ste odhlásení",
+ "For security, this session has been signed out. Please sign in again.": "Kôli bezpečnosti ste boli odhlásení z tejto relácie. Prosím, prihláste sa znovu.",
+ "Logout": "Odhlásiť sa",
+ "Your Communities": "Vaše komunity",
+ "You're not currently a member of any communities.": "V súčasnosti nie ste členom žiadnej komunity.",
+ "Error whilst fetching joined communities": "Pri získavaní vašich komunít sa vyskytla chyba",
+ "Create a new community": "Vytvoriť novú komunitu",
+ "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Vytvorte si komunitu s cieľom zoskupiť miestnosti a používateľov! Zostavte si vlastnú domovskú stránku a vymedzte tak svoj priestor vo svete Matrix.",
+ "Join an existing community": "Vstúpiť do existujúcej komunity",
+ "To join an existing community you'll have to know its community identifier; this will look something like +example:matrix.org.": "Aby ste mohli vstúpiť do existujúcej komunity, musíte poznať jej identifikátor; Mal by vizerať nejako takto +priklad:matrix.org.",
+ "You have no visible notifications": "Nie sú k dispozícii žiadne oznámenia",
+ "Scroll to bottom of page": "Posunúť na spodok stránky",
+ "Connectivity to the server has been lost.": "Spojenie so serverom bolo prerušené.",
+ "Sent messages will be stored until your connection has returned.": "Odoslané správy ostanú uložené, kým sa spojenie nenadviaže znovu.",
+ "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Znovu odoslať všetky alebo zrušiť všetky teraz. Môžete tiež znovu poslať alebo zrušiť odosielanie jednotlivých správ zvlášť.",
+ "%(count)s new messages|other": "%(count)s nových správ",
+ "%(count)s new messages|one": "%(count)s nová správa",
+ "Active call": "Aktívny hovor",
+ "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Okrem vás v tejto miestnosti nie je nik iný! Želáte si pozvať ďalších alebo prestať upozorňovať na prázdnu miestnosť?",
+ "You seem to be uploading files, are you sure you want to quit?": "Zdá sa, že práve nahrávate súbory, ste si istí, že chcete skončiť?",
+ "You seem to be in a call, are you sure you want to quit?": "Zdá sa, že máte prebiehajúci hovor, ste si istí, že chcete skončiť?",
+ "Some of your messages have not been sent.": "Niektoré vaše správy ešte neboli odoslané.",
+ "Message not sent due to unknown devices being present": "Neodoslaná správa kvôli nájdeným neznámym zariadeniam",
+ "Failed to upload file": "Nepodarilo sa nahrať súbor",
+ "Server may be unavailable, overloaded, or the file too big": "Server môže byť nedostupný, preťažený, alebo je súbor príliš veľký",
+ "Search failed": "Hľadanie zlyhalo",
+ "Server may be unavailable, overloaded, or search timed out :(": "Server môže byť nedostupný, preťažený, alebo vypršal časový limit hľadania :(",
+ "No more results": "Žiadne ďalšie výsledky",
+ "Unknown room %(roomId)s": "Neznáma miestnosť %(roomId)s",
+ "Room": "Miestnosť",
+ "Failed to save settings": "Nepodarilo sa uložiť nastavenia",
+ "Failed to reject invite": "Nepodarilo sa odmietnuť pozvanie",
+ "Fill screen": "Vyplniť obrazovku",
+ "Click to unmute video": "Kliknutím zrušíte stlmenie videa",
+ "Click to mute video": "Kliknutím stlmíte video",
+ "Click to unmute audio": "Kliknutím zrušíte stlmenie zvuku",
+ "Click to mute audio": "Kliknutím stlmíte zvuk",
+ "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Pri pokuse načítať konkrétny bod v histórii tejto miestnosti sa vyskytla chyba, nemáte oprávnenie na zobrazenie zodpovedajúcej správy.",
+ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Pri pokuse načítať konkrétny bod v histórii tejto miestnosti sa vyskytla chyba, Správu nie je možné nájsť.",
+ "Failed to load timeline position": "Nepodarilo sa načítať pozíciu na časovej osi",
+ "Uploading %(filename)s and %(count)s others|other": "Nahrávanie %(filename)s a %(count)s ďalších súborov",
+ "Uploading %(filename)s and %(count)s others|zero": "Nahrávanie %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Nahrávanie %(filename)s a %(count)s ďalší súbor",
+ "Autoplay GIFs and videos": "Automaticky prehrávať animované GIF obrázky a videá",
+ "Hide read receipts": "Skriť potvrdenia o prečítaní",
+ "Don't send typing notifications": "Neposielať oznámenia keď píšete",
+ "Always show message timestamps": "Vždy zobrazovať časovú značku správ",
+ "Show timestamps in 12 hour format (e.g. 2:30pm)": "Pri zobrazovaní časových značiek používať 12 hodinový formát (napr. 2:30pm)",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Skriť správy o vstupe a opustení miestnosti (netýka sa pozvaní/vykopnutí/zákazov vstupu)",
+ "Hide avatar and display name changes": "Skriť zmeny zobrazovaného mena a avatara",
+ "Use compact timeline layout": "Použiť kompaktné rozloženie časovej osy",
+ "Hide removed messages": "Skriť odstránené správy",
+ "Enable automatic language detection for syntax highlighting": "Povoliť automatickú detegciu jazyka pre zvýrazňovanie syntaxe",
+ "Automatically replace plain text Emoji": "Automaticky nahrádzať textové Emoji",
+ "Disable Emoji suggestions while typing": "Zakázať návrhy Emoji počas písania",
+ "Hide avatars in user and room mentions": "Skriť avatarov pri zmienkach miestností a používateľov",
+ "Disable big emoji in chat": "Zakázať veľké Emoji v konverzácii",
+ "Mirror local video feed": "Zrkadliť lokálne video",
+ "Opt out of analytics": "Odhlásiť sa zo zberu analytických údajov",
+ "Disable Peer-to-Peer for 1:1 calls": "Zakázať P2P počas priamych volaní",
+ "Never send encrypted messages to unverified devices from this device": "Z tohoto zariadenia nikdy neposielať šifrované správy neovereným zariadeniam",
+ "Light theme": "Svetlá téma",
+ "Dark theme": "Tmavá téma",
+ "Can't load user settings": "Nie je možné načítať používateľské nastavenia",
+ "Server may be unavailable or overloaded": "Server môže byť nedostupný alebo preťažený",
+ "Sign out": "Odhlásiť sa",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "S cieľom posilniť bezpečnosť sa všetky E2E šifrovacie kľúče pri odhlásení odstránia z tohoto prehliadača. Ak chcete, aby ste mohli čítať históriu šifrovaných konverzácií aj po opätovnom prihlásení, prosím exportujte a bezpečne si uchovajte kľúče miestností.",
+ "Failed to change password. Is your password correct?": "Nepodarilo sa zmeniť heslo. Zadali ste správne heslo?",
+ "Success": "Úspech",
+ "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Úspešne ste si zmenili heslo. Na ostatných zariadeniach sa vám nebudú zobrazovať okamžité oznámenia, kým sa aj na nich opätovne neprihlásite",
+ "Remove Contact Information?": "Odstrániť kontaktné informácie?",
+ "Remove %(threePid)s?": "Odstrániť %(threePid)s?",
+ "Unable to remove contact information": "Nie je možné odstrániť kontaktné informácie",
+ "Refer a friend to Riot:": "Odporučte Riot známemu:",
+ "Interface Language": "Jazyk rozhrania",
+ "User Interface": "Používateľské rozhranie",
+ "Autocomplete Delay (ms):": "Oneskorenie automatického dokončovania (ms):",
+ "Disable inline URL previews by default": "Predvolene zakázať náhľady URL adries",
+ "": "",
+ "Import E2E room keys": "Importovať E2E kľúče miestností",
+ "Cryptography": "Kryptografia",
+ "Device ID:": "ID zariadenia:",
+ "Device key:": "Kľúč zariadenia:",
+ "Ignored Users": "Ignorovaní používatelia",
+ "Bug Report": "Hlásenie chyby",
+ "Found a bug?": "Našli ste chybu?",
+ "Report it": "Ohláste ju",
+ "Analytics": "Analytické údaje",
+ "Riot collects anonymous analytics to allow us to improve the application.": "Riot zbiera anonymné analytické údaje, čo nám umožňuje aplikáciu ďalej zlepšovať.",
+ "Labs": "Experimenty",
+ "These are experimental features that may break in unexpected ways": "Tieto funkcie sú experimentálne a môžu sa nečakane pokaziť",
+ "Use with caution": "Pri používaní buďte opatrní",
+ "Deactivate my account": "Deaktivovať môj účet",
+ "Clear Cache": "Vyprázdniť vyrovnávaciu pamäť",
+ "Clear Cache and Reload": "Vyprázdniť vyrovnávaciu pamäť a načítať znovu",
+ "Updates": "Aktualizácie",
+ "Check for update": "Skontrolovať dostupnosť aktualizácie",
+ "Reject all %(invitedRooms)s invites": "Odmietnuť všetky %(invitedRooms)s pozvania",
+ "Bulk Options": "Hromadné možnosti",
+ "Desktop specific": "Špecifické pre pracovnú plochu",
+ "Start automatically after system login": "Spustiť automaticky po prihlásení do systému",
+ "No media permissions": "Žiadne oprávnenia k médiám",
+ "You may need to manually permit Riot to access your microphone/webcam": "Mali by ste aplikácii Riot ručne udeliť právo pristupovať k mikrofónu a kamere",
+ "Missing Media Permissions, click here to request.": "Kliknutím sem vyžiadate chýbajúce oprávnenia na prístup k mediálnym zariadeniam.",
+ "No Microphones detected": "Neboli nájdené žiadne mikrofóny",
+ "No Webcams detected": "Neboli nájdené žiadne kamery",
+ "Default Device": "Predvolené zariadenie",
+ "Microphone": "Mikrofón",
+ "Camera": "Kamera",
+ "VoIP": "VoIP",
+ "Email": "Email",
+ "Add email address": "Pridať emailovú adresu",
+ "Notifications": "Oznámenia",
+ "Profile": "Profil",
+ "Display name": "Zobrazované meno",
+ "Account": "Účet",
+ "To return to your account in future you need to set a password": "Aby ste sa v budúcnosti mohli vrátiť k vašemu účtu mali by ste si teraz nastaviť heslo",
+ "Logged in as:": "Prihlásený ako:",
+ "Access Token:": "Prístupový token:",
+ "click to reveal": "Odkryjete kliknutím",
+ "Homeserver is": "Domovský server je",
+ "Identity Server is": "Server totožností je",
+ "matrix-react-sdk version:": "Verzia matrix-react-sdk:",
+ "riot-web version:": "Verzia riot-web:",
+ "olm version:": "Verzia olm:",
+ "Failed to send email": "Nepodarilo sa odoslať email",
+ "The email address linked to your account must be entered.": "Musíte zadať emailovú adresu prepojenú s vašim účtom.",
+ "A new password must be entered.": "Musíte zadať nové heslo.",
+ "New passwords must match each other.": "Obe nové heslá musia byť zhodné.",
+ "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Zmena hesla momentálne obnoví šifrovacie kľúče na všetkých vašich zariadeniach, čo spôsobí, že história vašich šifrovaných konverzácií sa stane nečitateľná, jedine že si pred zmenou hesla exportujete kľúče miestností do súboru a po zmene kľúče importujete naspäť. V budúcnosti bude táto funkcia vylepšená.",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Na adresu %(emailAddress)s bola odoslaná správa. Potom, čo prejdete na odkaz z tejto správy, kliknite nižšie.",
+ "I have verified my email address": "Overil som si emailovú adresu",
+ "Your password has been reset": "Vaše heslo bolo obnovené",
+ "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Boli ste odhlásení na všetkych zariadeniach a nebudete viac dostávať okamžité oznámenia. Oznámenia znovu povolíte tak, že sa opätovne prihlásite na každom zariadení",
+ "Return to login screen": "Vrátiť sa na prihlasovaciu obrazovku",
+ "To reset your password, enter the email address linked to your account": "Ak chcete obnoviť vaše heslo, zadajte emailovú adresu prepojenú s vašim účtom",
+ "New password": "Nové heslo",
+ "Confirm your new password": "Potvrďte vaše nové heslo",
+ "Send Reset Email": "Poslať obnovovací email",
+ "Create an account": "Vytvoriť účet",
+ "This Home Server does not support login using email address.": "Tento domovský server nepodporuje prihlasovanie sa emailom.",
+ "Incorrect username and/or password.": "Nesprávne meno používateľa a / alebo heslo.",
+ "Guest access is disabled on this Home Server.": "Na tomto domovskom servery je zakázaný prístup pre hostí.",
+ "The phone number entered looks invalid": "Zdá sa, že zadané telefónne číslo je neplatné",
+ "Error: Problem communicating with the given homeserver.": "Chyba: Nie je možné komunikovať so zadaným domovským serverom.",
+ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "K domovskému serveru nie je možné pripojiť sa použitím protokolu HTTP keďže v adresnom riadku prehliadača máte HTTPS adresu. Použite protokol HTTPS alebo povolte nezabezpečené skripty.",
+ "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nie je možné pripojiť sa k domovskému serveru - skontrolujte prosím funkčnosť vašeho pripojenia na internet, uistite sa že certifikát domovského servera je dôverihodný, a že žiaden doplnok nainštalovaný v prehliadači nemôže blokovať požiadavky.",
+ "Sorry, this homeserver is using a login which is not recognised ": "Prepáčte, tento domovský server používa neznámy spôsob prihlasovania ",
+ "Login as guest": "Prihlásiť sa ako hosť",
+ "Return to app": "Vrátiť sa do aplikácie",
+ "Failed to fetch avatar URL": "Nepodarilo sa získať URL adresu avatara",
+ "Set a display name:": "Nastaviť zobrazované meno:",
+ "Upload an avatar:": "Nahrať avatara:",
+ "This server does not support authentication with a phone number.": "Tento server nepodporuje overenie telefónnym číslom.",
+ "Missing password.": "Chýba heslo.",
+ "Passwords don't match.": "Heslá sa nezhodujú.",
+ "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Heslo je veľmi krátke (minimálne %(MIN_PASSWORD_LENGTH)s).",
+ "This doesn't look like a valid email address.": "Zdá sa, že toto nie je platná emailová adresa.",
+ "This doesn't look like a valid phone number.": "Zdá sa, že toto nie je platné telefónne číslo.",
+ "You need to enter a user name.": "Musíte zadať používateľské meno.",
+ "An unknown error occurred.": "Vyskytla sa neznáma chyba.",
+ "I already have an account": "Už mám účet",
+ "Displays action": "Zobrazí akciu",
+ "Bans user with given id": "Zakáže vstup používateľovi so zadaným ID",
+ "Unbans user with given id": "Povolí vstup používateľovi so zadaným ID",
+ "Define the power level of a user": "Určí úroveň sili používateľa",
+ "Deops user with given id": "Zruší stav moderátor používateľovi so zadaným ID",
+ "Invites user with given id to current room": "Pošle používateľovi so zadaným ID pozvanie do tejto miestnosti",
+ "Joins room with given alias": "Vstúpi do miestnosti so zadaným aliasom",
+ "Sets the room topic": "Nastaví tému miestnosti",
+ "Kicks user with given id": "Vykopne používateľa so zadaným ID",
+ "Changes your display nickname": "Zmení vaše zobrazované meno",
+ "Searches DuckDuckGo for results": "Vyhľadá výsledky na DuckDuckGo",
+ "Changes colour scheme of current room": "Zmení farebnú schému aktuálnej miestnosti",
+ "Verifies a user, device, and pubkey tuple": "Overí zadané údaje používateľa, zariadenie a verejný kľúč",
+ "Ignores a user, hiding their messages from you": "Ignoruje používateľa a skrije všetky jeho správy",
+ "Stops ignoring a user, showing their messages going forward": "Prestane ignorovať používateľa a začne zobrazovať jeho správy",
+ "Commands": "Príkazy",
+ "Results from DuckDuckGo": "Výsledky z DuckDuckGo",
+ "Emoji": "Emoji",
+ "Notify the whole room": "Oznamovať celú miestnosť",
+ "Room Notification": "Oznámenie miestnosti",
+ "Users": "Používatelia",
+ "unknown device": "neznáme zariadenie",
+ "NOT verified": "NE-overené",
+ "verified": "overené",
+ "Verification": "Overenie",
+ "Ed25519 fingerprint": "Odtlačok prsta Ed25519",
+ "User ID": "ID používateľa",
+ "Curve25519 identity key": "Kľúč totožnosti Curve25519",
+ "none": "žiadny",
+ "Claimed Ed25519 fingerprint key": "Údajne kľúč s odtlačkom prsta Ed25519",
+ "Algorithm": "Algoritmus",
+ "unencrypted": "nešifrované",
+ "Decryption error": "Chyba dešifrovania",
+ "Session ID": "ID relácie",
+ "End-to-end encryption information": "Informácie o šifrovaní E2E",
+ "Event information": "Informácie o udalosti",
+ "Sender device information": "Informácie o zariadení odosielateľa",
+ "Passphrases must match": "Heslá sa musia zhodovať",
+ "Passphrase must not be empty": "Heslo nesmie byť prázdne",
+ "Export room keys": "Exportovať kľúče miestností",
+ "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Tento proces vás prevedie exportom kľúčov určených na dešifrovanie správ, ktoré ste dostali v šifrovaných miestnostiach do lokálneho súboru. Tieto kľúče zo súboru môžete neskôr importovať do iného Matrix klienta, aby ste v ňom mohli dešifrovať vaše šifrované správy.",
+ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Tento súbor umožní komukoľvek, k to má ku nemu prístup dešifrovať všetky vami viditeľné šifrované správy, mali by ste teda byť opatrní a tento súbor si bezpečne uchovať. Aby bolo toto pre vás jednoduchšie, nižšie zadajte heslo, ktorým budú údaje v súbore zašifrované. Importovať údaje zo súboru bude možné len po zadaní tohoto istého hesla.",
+ "Enter passphrase": "Zadajte heslo",
+ "Confirm passphrase": "Potvrďte heslo",
+ "Export": "Exportovať",
+ "Import room keys": "Importovať kľúče miestností",
+ "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Tento proces vás prevedie importom šifrovacích kľúčov, ktoré ste si v minulosti exportovali v inom Matrix klientovi. Po úspešnom importe budete v tomto klientovi môcť dešifrovať všetky správy, ktoré ste mohli dešifrovať v spomínanom klientovi.",
+ "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Exportovaný súbor je chránený heslom. Súbor môžete importovať len ak zadáte zodpovedajúce heslo.",
+ "File to import": "Importovať zo súboru",
+ "Import": "Importovať",
+ "Show these rooms to non-members on the community page and room list?": "Zobrazovať tieto miestnosti na domovskej stránke komunity a v zozname miestností aj pre nečlenov?"
+}
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index fd15771cec..f14a563117 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -1,6 +1,5 @@
{
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ett SMS har skickats till +%(msisdn)s. Vänligen ange verifieringskoden ur meddelandet",
- "accept": "acceptera",
"%(targetName)s accepted an invitation.": "%(targetName)s accepterade en inbjudan.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepterade inbjudan för %(displayName)s.",
"Account": "Konto",
@@ -22,8 +21,6 @@
"Always show message timestamps": "Visa alltid tidsstämpel för meddelanden",
"Hide removed messages": "Göm raderade meddelanden",
"Authentication": "Autentisering",
- "an address": "en address",
- "and": "och",
"%(items)s and %(remaining)s others": "%(items)s och %(remaining)s andra",
"%(items)s and one other": "%(items)s och en annan",
"%(items)s and %(lastItem)s": "%(items)s och %(lastItem)s",
@@ -31,7 +28,6 @@
"and %(count)s others...|one": "och en annan...",
"%(names)s and %(lastPerson)s are typing": "%(names)s och %(lastPerson)s skriver",
"%(names)s and one other are typing": "%(names)s och en annan skriver",
- "%(names)s and %(count)s others are typing": "%(names)s och %(count)s andra skriver",
"An email has been sent to": "Ett epostmeddelande har sänts till",
"A new password must be entered.": "Ett nytt lösenord måste anges.",
"%(senderName)s answered the call.": "%(senderName)s svarade på samtalet.",
@@ -53,7 +49,6 @@
"Ban": "Banna",
"Attachment": "Bilaga",
"Call Timeout": "Samtalstimeout",
- "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Det gick inte att ansluta till hemservern - kontrollera anslutningen och att hemserverns TLS-certifikat är pålitat.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Det går inte att ansluta till en hemserver via HTTP då adressen i webbläsaren är HTTPS. Använd HTTPS, eller sätt på osäkra skript.",
"Can't load user settings": "Det gick inte att ladda användarinställningar",
"Change Password": "Byt lösenord",
@@ -68,7 +63,6 @@
"Claimed Ed25519 fingerprint key": "Påstådd Ed25519-fingeravtrycksnyckel",
"Clear Cache and Reload": "Töm cache och ladda om",
"Clear Cache": "Töm cache",
- "Click here": "Klicka här",
"Click here to fix": "Klicka här för att fixa",
"Click to mute audio": "Klicka för att dämpa ljud",
"Click to mute video": "Klicka för att stänga av video",
@@ -94,11 +88,9 @@
"/ddg is not a command": "/ddg är inte ett kommando",
"Deactivate Account": "Deaktivera konto",
"Deactivate my account": "Deaktivera mitt konto",
- "decline": "avböj",
"Decrypt %(text)s": "Dekryptera %(text)s",
"Decryption error": "Dekrypteringsfel",
"Delete": "Radera",
- "demote": "degradera",
"Deops user with given id": "Degraderar användaren med givet id",
"Default": "Standard",
"Device already verified!": "Enheten är redan verifierad!",
@@ -149,7 +141,6 @@
"Failed to load timeline position": "Det gick inte att hämta positionen på tidslinjen",
"Failed to lookup current room": "Det gick inte att hämta det nuvarande rummet",
"Failed to mute user": "Det gick inte att dämpa användaren",
- "Failed to register as guest:": "Det gick inte att registrera som gästanvändare:",
"Failed to reject invite": "Det gick inte att avböja inbjudan",
"Failed to reject invitation": "Det gick inte att avböja inbjudan",
"Failed to save settings": "Det gick inte att spara inställningarna",
@@ -163,14 +154,12 @@
"Failed to upload file": "Det gick inte att ladda upp filen",
"Failed to verify email address: make sure you clicked the link in the email": "Det gick inte att bekräfta epostadressen, klicka på länken i epostmeddelandet",
"Favourite": "Favorit",
- "favourite": "favorit",
"a room": "ett rum",
"Accept": "Godkänn",
"Access Token:": "Åtkomsttoken:",
"Active call (%(roomName)s)": "Aktiv samtal (%(roomName)s)",
"Add": "Lägg till",
"Admin Tools": "Admin verktyg",
- "And %(count)s more...": "Och %(count)s till...",
"Alias (optional)": "Alias (valfri)",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Det gick inte att ansluta till servern - kontrollera anslutningen, försäkra att din hemservers TLS-certifikat är betrott, och att inget webbläsartillägg blockerar förfrågningar.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ändrade maktnivån av %(powerLevelDiffText)s.",
@@ -204,7 +193,6 @@
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s från %(fromPowerLevel)s till %(toPowerLevel)s",
"Guest access is disabled on this Home Server.": "Gäståtkomst är inte aktiverat på den här hemservern.",
"Guests cannot join this room even if explicitly invited.": "Gäster kan inte gå med i det här rummet fastän de är uttryckligen inbjudna.",
- "had": "hade",
"Hangup": "Lägg på",
"Hide read receipts": "Göm kvitteringar",
"Hide Text Formatting Toolbar": "Göm textformatteringsverktygsfältet",
@@ -236,8 +224,6 @@
"Sign in with": "Logga in med",
"Join as voice or video.": "Gå med som röst eller video.",
"Join Room": "Gå med i rum",
- "joined and left": "gick med och lämnade",
- "joined": "gick med",
"%(targetName)s joined the room.": "%(targetName)s gick med i rummet.",
"Joins room with given alias": "Går med i rummet med givet alias",
"Jump to first unread message.": "Hoppa till första olästa meddelande.",
@@ -247,8 +233,6 @@
"Labs": "Labb",
"Last seen": "Senast sedd",
"Leave room": "Lämna rummet",
- "left and rejoined": "lämnade rummet och kom tillbaka",
- "left": "lämnade",
"%(targetName)s left the room.": "%(targetName)s lämnade rummet.",
"Level:": "Nivå:",
"Local addresses for this room:": "Lokala adresser för rummet:",
@@ -276,7 +260,6 @@
"%(serverName)s Matrix ID": "%(serverName)s Matrix-ID",
"Name": "Namn",
"Never send encrypted messages to unverified devices from this device": "Skicka aldrig krypterade meddelanden till overifierade enheter från den här enheten",
- "Never send encrypted messages to unverified devices in this room": "Skicka aldrig krypterade meddelanden till overifierade enheter i det här rummet",
"Never send encrypted messages to unverified devices in this room from this device": "Skicka aldrig krypterade meddelanden till overifierade enheter i det här rummet från den här enheten",
"New address (e.g. #foo:%(localDomain)s)": "Ny address (t.ex. #foo:%(localDomain)s)",
"New password": "Nytt lösenord",
@@ -321,7 +304,6 @@
"Revoke Moderator": "Degradera moderator",
"Refer a friend to Riot:": "Hänvisa en vän till Riot:",
"Register": "Registrera",
- "rejected": "avvisade",
"%(targetName)s rejected the invitation.": "%(targetName)s avvisade inbjudan.",
"Reject invitation": "Avvisa inbjudan",
"Rejoin": "Gå med tillbaka",
@@ -334,7 +316,6 @@
"%(senderName)s requested a VoIP conference.": "%(senderName)s begärde en VoIP-konferens.",
"Report it": "Rapportera det",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Om du återställer ditt lösenord kommer alla krypteringsnycklar på alla enheter att återställas, vilket gör krypterad meddelandehistorik oläsbar om du inte först exporterar dina rumsnycklar och sedan importerar dem igen. I framtiden kommer det här att förbättras.",
- "restore": "återställ",
"Results from DuckDuckGo": "Resultat från DuckDuckGo",
"Return to app": "Tillbaka till appen",
"Return to login screen": "TIllbaka till login-skärmen",
@@ -374,7 +355,6 @@
"Session ID": "Sessions-ID",
"%(senderName)s set a profile picture.": "%(senderName)s satte en profilbild.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s bytte sitt visningnamn till %(displayName)s.",
- "Set": "Sätt",
"Settings": "Inställningar",
"Show panel": "Visa panel",
"Show Text Formatting Toolbar": "Visa textformatteringsverktygsfält",
@@ -399,13 +379,6 @@
"Room directory": "Rumskatalog",
"Start chat": "Starta chatt",
"unknown error code": "okänd felkod",
- "Sunday": "söndag",
- "Monday": "måndag",
- "Tuesday": "tisdag",
- "Wednesday": "onsdag",
- "Thursday": "torsdag",
- "Friday": "fredag",
- "Saturday": "lördag",
"Add a widget": "Lägg till en widget",
"Allow": "Tillåt",
"Cannot add any more widgets": "Det går inte att lägga till fler widgets",
@@ -417,5 +390,24 @@
"Enable automatic language detection for syntax highlighting": "Aktivera automatisk språkdetektering för syntaxmarkering",
"Hide Apps": "Dölj Appar",
"Hide avatar and display name changes": "Dölj avatar och visningsnamns ändringar",
- "Integrations Error": "Integrationsfel"
+ "Integrations Error": "Integrationsfel",
+ "Publish this room to the public in %(domain)s's room directory?": "Publicera rummet i den offentliga rumskatalogen på %(domain)s?",
+ "AM": "a.m.",
+ "PM": "p.m.",
+ "NOTE: Apps are not end-to-end encrypted": "OBS: Apparna är inte end-to-end-krypterade",
+ "Revoke widget access": "Upphäv widget-åtkomst",
+ "Show Apps": "Visa appar",
+ "Submit": "Lämna",
+ "Tagged as: ": "Taggad som: ",
+ "The default role for new room members is": "Standardrollen för nya medlemmar är",
+ "The main address for this room is": "Huvudadressen för det här rummet är",
+ "The maximum permitted number of widgets have already been added to this room.": "Den största tillåtna mängden widgetar har redan tillsats till rummet.",
+ "The phone number entered looks invalid": "Telefonnumret ser felaktigt ut",
+ "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Signeringsnyckeln du angav matchar signeringsnyckeln som mottogs från enheten %(deviceId)s som tillhör %(userId)s. Enheten är markerad som verifierad.",
+ "This email address is already in use": "Den här epostadressen är redan i bruk",
+ "This email address was not found": "Den här epostadressen fanns inte",
+ "%(actionVerb)s this person?": "%(actionVerb)s den här personen?",
+ "The email address linked to your account must be entered.": "Epostadressen som är kopplad till ditt konto måste anges.",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Filen '%(fileName)s' överskrider serverns största tillåtna filstorlek",
+ "The file '%(fileName)s' failed to upload": "Filen '%(fileName)s' kunde inte laddas upp"
}
diff --git a/src/i18n/strings/te.json b/src/i18n/strings/te.json
index 4cf9c847fb..d542f8140c 100644
--- a/src/i18n/strings/te.json
+++ b/src/i18n/strings/te.json
@@ -30,11 +30,7 @@
"You do not have permission to post to this room": "మీకు ఈ గదికి పోస్ట్ చేయడానికి అనుమతి లేదు",
"You have been invited to join this room by %(inviterName)s": "%(inviterName)s ఈ గదిలో చేరడానికి మీరు ఆహ్వానించబడ్డారు",
"Active call (%(roomName)s)": "క్రియాశీల కాల్ల్ (%(roomName)s)",
- "And %(count)s more...": "మరియు %(count)s ఇంకా ...",
- "and": "మరియు",
- "and one other...": "మరియు మరొకటి ...",
"%(names)s and one other are typing": "%(names)s మరియు మరొకటి టైప్ చేస్తున్నారు",
- "%(names)s and %(count)s others are typing": "%(names)s మరియు %(count)s ఇతరులు టైప్ చేస్తున్నారు",
"An email has been sent to": "ఒక ఇమెయిల్ పంపబడింది",
"A new password must be entered.": "కొత్త పాస్ వర్డ్ ను తప్పక నమోదు చేయాలి.",
"%(senderName)s answered the call.": "%(senderName)s కు సమాధానం ఇచ్చారు.",
@@ -68,7 +64,6 @@
"You cannot place VoIP calls in this browser.": "మీరు ఈ బ్రౌజర్లో VoIP కాల్లను ఉంచలేరు.",
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "మీరు అన్ని పరికరాల నుండి లాగ్ అవుట్ అయ్యారు మరియు ఇకపై పుష్ ఉండదు.\nప్రకటనలను నోటిఫికేషన్లను పునఃప్రారంభించడానికి, ప్రతి పరికరంలో మళ్లీ సైన్ ఇన్ చేయండి",
"You have no visible notifications": "మీకు కనిపించే నోటిఫికేషన్లు లేవు",
- "you must be a": "మీరు తప్పక",
"You need to be able to invite users to do that.": "మీరు దీన్ని చేయడానికి వినియోగదారులను ఆహ్వానించగలరు.",
"Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "పాస్ వర్డ్ మార్చడం వల్ల ప్రస్తుతం అన్ని పరికరాల్లో ఏదైనా ఎండ్-టు-ఎండ్ ఎన్క్రిప్షన్ కీలను రీసెట్ చేస్తుంది, ఎన్క్రిప్టెడ్ చాట్ చరిత్రను చదవటానికి వీలెకుండ చెస్తుంది, మీరు మొదట మీ గది కీలను ఎగుమతి చేసి, తర్వాత వాటిని తిరిగి దిగుమతి చేసుకోకపోతే. భవిష్యత్తులో ఇది మెరుగవుతుంది.",
"Claimed Ed25519 fingerprint key": "ఎడ్25519 వేలిముద్ర కీ ని పేర్కొన్నారు",
@@ -108,7 +103,6 @@
"Decline": "డిక్లైన్",
"Decryption error": "గుప్తలేఖన లోపం",
"Delete": "తొలగించు",
- "demote": "స్థానానికి తగ్గించు",
"Deops user with given id": "ఇచ్చిన ID తో వినియోగదారుని విడదీస్తుంది",
"Default": "డిఫాల్ట్",
"Device already verified!": "పరికరం ఇప్పటికే ధృవీకరించబడింది!",
@@ -119,7 +113,6 @@
"Wed": "బుధవారం",
"Thu": "గురువారం",
"Fri": "శుక్రువారం",
- "Friday": "శుక్రువారం",
"Sat": "శనివారం",
"Jan": "జనవరి",
"Feb": "ఫిబ్రవరి",
@@ -169,12 +162,6 @@
"Sent messages will be stored until your connection has returned.": "మీ కనెక్షన్ తిరిగి వచ్చే వరకు పంపిన సందేశాలు నిల్వ చేయబడతాయి.",
"Cancel": "రద్దు",
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "అన్నీ మళ్లీ పంపులేదాఅన్నింటినీ రద్దు చేయండిప్పుడు.వ్యక్తిగత సందేశాలను మీరు మళ్ళీ చేసుకోవచ్చు లేదా రద్దు చేసుకోవచ్చు.",
- "Monday": "సోమవారం",
- "Tuesday": "మంగళవారం",
- "Wednesday": "బుధవారం",
- "Thursday": "గురువారం",
- "Saturday": "శనివారం",
- "Sunday": "ఆదివారం",
"bold": "బోల్డ్",
"italic": "ఇటాలిక్",
"strike": "సమ్మె",
@@ -190,7 +177,6 @@
"riot-web version:": "రయట్-వెబ్ సంస్కరణ:",
"Riot was not given permission to send notifications - please try again": "రయట్ కు ప్రకటనలను పంపడానికి అనుమతి లేదు - దయచేసి మళ్ళీ ప్రయత్నించండి",
"Return to app": "అనువర్తనానికి తిరిగి వెళ్ళు",
- "restore": "పునరుద్దరించండి",
"to restore": "పునరుద్ధరించడానికి",
"Unable to restore session": "సెషన్ను పునరుద్ధరించడానికి సాధ్యపడలేదు",
"Report it": "దానిని నివేదించండి",
diff --git a/src/i18n/strings/th.json b/src/i18n/strings/th.json
index e4ebb862ec..2cdf7f20a8 100644
--- a/src/i18n/strings/th.json
+++ b/src/i18n/strings/th.json
@@ -1,12 +1,10 @@
{
- "accept": "ยอมรับ",
"Account": "บัญชี",
"Add phone number": "เพิ่มหมายเลขโทรศัพท์",
"Microphone": "ไมโครโฟน",
"No Microphones detected": "ไม่พบไมโครโฟน",
"Camera": "กล้อง",
"Advanced": "ขึ้นสูง",
- "and": "และ",
"Ban": "แบน",
"Bug Report": "รายงานจุดบกพร่อง",
"Change Password": "เปลี่ยนรหัสผ่าน",
@@ -27,7 +25,6 @@
"enabled": "เปิดใช้งานแล้ว",
"Error": "ข้อผิดพลาด",
"Found a bug?": "พบจุดบกพร่อง?",
- "is a": "เป็น",
"%(displayName)s is typing": "%(displayName)s กำลังพิมพ์",
"Kick": "เตะ",
"Low priority": "ความสำคัญต่ำ",
@@ -54,13 +51,6 @@
"Search": "ค้นหา",
"Settings": "การตั้งค่า",
"unknown error code": "รหัสข้อผิดพลาดที่ไม่รู้จัก",
- "Sunday": "วันอาทิตย์",
- "Monday": "วันจันทร์",
- "Tuesday": "วันอังคาร",
- "Wednesday": "วันพุธ",
- "Thursday": "วันพฤหัสบดี",
- "Friday": "วันศุกร์",
- "Saturday": "วันเสาร์",
"olm version:": "เวอร์ชัน olm:",
"Report it": "รายงานเลย",
"Remove": "ลบ",
@@ -79,7 +69,6 @@
"Algorithm": "อัลกอริทึม",
"Hide removed messages": "ซ่อนข้อความที่ถูกลบแล้ว",
"Authentication": "การยืนยันตัวตน",
- "an address": "ที่อยู่",
"%(items)s and %(remaining)s others": "%(items)s และอีก %(remaining)s ผู้ใช้",
"%(items)s and one other": "%(items)s และอีกหนึ่งผู้ใช้",
"%(items)s and %(lastItem)s": "%(items)s และ %(lastItem)s",
@@ -87,7 +76,6 @@
"and %(count)s others...|other": "และอีก %(count)s ผู้ใช้...",
"%(names)s and %(lastPerson)s are typing": "%(names)s และ %(lastPerson)s กำลังพิมพ์",
"%(names)s and one other are typing": "%(names)s และอีกหนึ่งคนกำลังพิมพ์",
- "%(names)s and %(count)s others are typing": "%(names)s และอีก %(count)s คนกำลังพิมพ์",
"%(senderName)s answered the call.": "%(senderName)s รับสายแล้ว",
"An error has occurred.": "เกิดข้อผิดพลาด",
"Anyone": "ทุกคน",
@@ -110,7 +98,6 @@
"Changes your display nickname": "เปลี่ยนชื่อเล่นที่แสดงของคุณ",
"Clear Cache and Reload": "ล้างแคชแล้วโหลดใหม่",
"Clear Cache": "ล้างแคช",
- "Click here": "คลิกที่นี่",
"Click here to fix": "คลิกที่นี่เพื่อแก้ไข",
"Click to mute audio": "คลิกที่นี่เพื่อปิดเสียง",
"Click to mute video": "คลิกที่นี่เพื่อปิดกล้อง",
@@ -132,9 +119,7 @@
"/ddg is not a command": "/ddg ไม่ใช่คำสั่ง",
"Deactivate Account": "ปิดการใช้งานบัญชี",
"Deactivate my account": "ปิดการใช้งานบัญชีของฉัน",
- "decline": "ปฏิเสธ",
"Decryption error": "การถอดรหัสผิดพลาด",
- "demote": "ลดขั้น",
"Device already verified!": "ยืนยันอุปกรณ์แล้ว!",
"Device key:": "Key อุปกรณ์:",
"Devices will not yet be able to decrypt history from before they joined the room": "อุปกรณ์จะยังไม่สามารถถอดรหัสประวัติแชทก่อนจะเข้าร่วมห้องได้",
@@ -161,7 +146,6 @@
"Failed to kick": "การเตะล้มเหลว",
"Failed to leave room": "การออกจากห้องล้มเหลว",
"Failed to lookup current room": "การหาห้องปัจจุบันล้มเหลว",
- "Failed to register as guest:": "การลงทะเบียนในฐานะแขกล้มเหลว:",
"Failed to reject invite": "การปฏิเสธคำเชิญล้มเหลว",
"Failed to reject invitation": "การปฏิเสธคำเชิญล้มเหลว",
"Failed to save settings": "การบันทึกการตั้งค่าล้มเหลว",
@@ -173,13 +157,11 @@
"Failed to upload file": "การอัปโหลดไฟล์ล้มเหลว",
"Failed to verify email address: make sure you clicked the link in the email": "การยืนยันอีเมลล้มเหลว: กรุณาตรวจสอบว่าคุณคลิกลิงก์ในอีเมลแล้ว",
"Failure to create room": "การสร้างห้องล้มเหลว",
- "favourite": "รายการโปรด",
"Favourites": "รายการโปรด",
"Filter room members": "กรองสมาชิกห้อง",
"Forget room": "ลืมห้อง",
"Forgot your password?": "ลิมรหัสผ่าน?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s จาก %(fromPowerLevel)s ไปเป็น %(toPowerLevel)s",
- "had": "เคยมี",
"Hangup": "วางสาย",
"Historical": "ประวัติแชทเก่า",
"Homeserver is": "เซิร์ฟเวอร์บ้านคือ",
@@ -202,15 +184,11 @@
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' ไม่ใช่รูปแบบที่ถูกต้องสำหรับนามแฝง",
"Sign in with": "เข้าสู่ระบบด้วย",
"Join Room": "เข้าร่วมห้อง",
- "joined and left": "เข้าร่วมแล้วออกจากห้อง",
- "joined": "เข้าร่วมแล้ว",
"%(targetName)s joined the room.": "%(targetName)s เข้าร่วมห้องแล้ว",
"Jump to first unread message.": "ข้ามไปยังข้อความแรกที่ยังไม่ได้อ่าน",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s เตะ %(targetName)s แล้ว",
"Labs": "ห้องทดลอง",
"Leave room": "ออกจากห้อง",
- "left and rejoined": "ออกแล้วกลับเข้าร่วมอีกครั้ง",
- "left": "ออกไปแล้ว",
"%(targetName)s left the room.": "%(targetName)s ออกจากห้องแล้ว",
"Logged in as:": "เข้าสู่ระบบในชื่อ:",
"Login as guest": "เข้าสู่ระบบในฐานะแขก",
@@ -242,13 +220,11 @@
"Privileged Users": "ผู้ใช้ที่มีสิทธิพิเศษ",
"Revoke Moderator": "เพิกถอนผู้ช่วยดูแล",
"Refer a friend to Riot:": "แนะนำเพื่อนให้รู้จัก Riot:",
- "rejected": "ปฏิเสธแล้ว",
"%(targetName)s rejected the invitation.": "%(targetName)s ปฏิเสธคำเชิญแล้ว",
"Reject invitation": "ปฏิเสธคำเชิญ",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s ลบชื่อที่แสดงแล้ว (%(oldDisplayName)s)",
"%(senderName)s removed their profile picture.": "%(senderName)s ลบรูปโปรไฟล์ของเขาแล้ว",
"Remove %(threePid)s?": "ลบ %(threePid)s?",
- "restore": "กู้คืน",
"Return to login screen": "กลับไปยังหน้าลงชื่อเข้าใช้",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot ไม่มีสิทธิ์ส่งการแจ้งเตือน - กรุณาตรวจสอบการตั้งค่าเบราว์เซอร์ของคุณ",
"Riot was not given permission to send notifications - please try again": "Riot ไม่ได้รับสิทธิ์ส่งการแจ้งเตือน - กรุณาลองใหม่อีกครั้ง",
@@ -286,7 +262,6 @@
"Start Chat": "เริ่มแชท",
"Submit": "ส่ง",
"Success": "สำเร็จ",
- "tag direct chat": "แท็กว่าแชทตรง",
"Tagged as: ": "แท็กไว้ว่า: ",
"The main address for this room is": "ที่อยู่หลักของห้องนี้คือ",
"This email address is already in use": "ที่อยู่อีเมลถูกใช้แล้ว",
@@ -294,11 +269,9 @@
"%(actionVerb)s this person?": "%(actionVerb)s บุคคลนี้?",
"The file '%(fileName)s' failed to upload": "การอัปโหลดไฟล์ '%(fileName)s' ล้มเหลว",
"This Home Server does not support login using email address.": "เซิร์ฟเวอร์บ้านนี้ไม่รองรับการลงชื่อเข้าใช้ด้วยที่อยู่อีเมล",
- "this invitation?": "คำเชิญนี้?",
"This is a preview of this room. Room interactions have been disabled": "นี่คือตัวอย่างของห้อง การตอบสนองภายในห้องถูกปิดใช้งาน",
"This phone number is already in use": "หมายเลขโทรศัพท์นี้ถูกใช้งานแล้ว",
"This room's internal ID is": "ID ภายในของห้องนี้คือ",
- "times": "ครั้ง",
"%(oneUser)schanged their name": "%(oneUser)sเปลี่ยนชื่อของเขาแล้ว",
"%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)sเปลี่ยนชื่อของพวกเขา %(repeats)s ครั้ง",
"%(oneUser)schanged their name %(repeats)s times": "%(oneUser)sเปลี่ยนชื่อของเขา %(repeats)s ครั้ง",
@@ -322,7 +295,6 @@
"The phone number entered looks invalid": "ดูเหมือนว่าหมายเลขโทรศัพท์ที่กรอกรมาไม่ถูกต้อง",
"The email address linked to your account must be entered.": "กรุณากรอกที่อยู่อีเมลที่เชื่อมกับบัญชีของคุณ",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "ไฟล์ '%(fileName)s' มีขนาดใหญ่เกินจำกัดของเซิร์ฟเวอร์บ้าน",
- "to start a chat with someone": "เพื่อเริ่มแชทกับผู้อื่น",
"to tag direct chat": "เพื่อแทกว่าแชทตรง",
"Turn Markdown off": "ปิด markdown",
"Turn Markdown on": "เปิด markdown",
@@ -358,11 +330,9 @@
"Who can read history?": "ใครสามารถอ่านประวัติแชทได้?",
"Who would you like to add to this room?": "คุณต้องการเพิ่มใครเข้าห้องนี้?",
"Who would you like to communicate with?": "คุณต้องการคุยกับใคร?",
- "You're not in any rooms yet! Press": "คุณยังไม่ได้อยู่ในห้องใดเลย! กด",
"You are trying to access %(roomName)s.": "คุณกำลังพยายามเข้าสู่ %(roomName)s",
"You have disabled URL previews by default.": "ค่าเริ่มต้นของคุณปิดใช้งานตัวอย่าง URL เอาไว้",
"You have enabled URL previews by default.": "ค่าเริ่มต้นของคุณเปิดใช้งานตัวอย่าง URL เอาไว้",
- "you must be a": "คุณต้องเป็น",
"You must register to use this functionality": "คุณต้องลงทะเบียนเพื่อใช้ฟังก์ชันนี้",
"You need to be logged in.": "คุณต้องเข้าสู่ระบบก่อน",
"You need to enter a user name.": "คุณต้องกรอกชื่อผู้ใช้ก่อน",
@@ -395,15 +365,12 @@
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "รหัสผ่านสั้นเกินไป (ขึ้นต่ำ %(MIN_PASSWORD_LENGTH)s ตัวอักษร)",
"An unknown error occurred.": "เกิดข้อผิดพลาดที่ไม่รู้จัก",
"I already have an account": "ฉันมีบัญชีอยู่แล้ว",
- "An error occured: %(error_string)s": "เกิดข้อผิดพลาด: %(error_string)s",
"Topic": "หัวข้อ",
"Make Moderator": "เลื่อนขั้นเป็นผู้ช่วยดูแล",
"Make this room private": "ทำให้ห้องนี้เป็นส่วนตัว",
"Share message history with new users": "แบ่งประวัติแชทให้ผู้ใช้ใหม่",
"Encrypt room": "เข้ารหัสห้อง",
"Room": "ห้อง",
- "(~%(searchCount)s results)": "(~%(searchCount)s ผลลัพธ์)",
- "or": "หรือ",
"bold": "หนา",
"italic": "เอียง",
"strike": "ขีดทับ",
@@ -441,7 +408,7 @@
"This allows you to use this app with an existing Matrix account on a different home server.": "ทั้งนี่เพื่อให้คุณสามารถใช้ Riot กับบัญชี Matrix ที่มีอยู่แล้วบนเซิร์ฟเวอร์บ้านอื่น ๆ ได้",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "คุณอาจเลือกเซิร์ฟเวอร์ระบุตัวตนเองด้วยก็ได้ แต่คุณจะไม่สามารถเชิญผู้ใช้อื่นด้วยที่อยู่อีเมล หรือรับคำเชิญจากผู้ใช้อื่นทางที่อยู่อีเมลได้",
"Default server": "เซิร์ฟเวอร์เริ่มต้น",
- "Custom server": "เซิร์ฟเวอร์ที่กำหนดเอง",
+ "Custom server": "กำหนดเซิร์ฟเวอร์เอง",
"Home server URL": "URL เซิร์ฟเวอร์บ้าน",
"Identity server URL": "URL เซิร์ฟเวอร์ระบุตัวตน",
"%(severalUsers)sleft %(repeats)s times": "%(severalUsers)sออกจากห้อง %(repeats)s ครั้ง",
@@ -458,14 +425,11 @@
"Home": "เมนูหลัก",
"Last seen": "เห็นครั้งสุดท้าย",
"Rejoin": "กลับเข้าร่วม",
- "Set": "ตั้ง",
"This room": "ห้องนี้",
"Unnamed Room": "ห้องที่ยังไม่ได้ตั้งชื่อ",
"%(user)s is a": "%(user)s เป็น",
"(~%(count)s results)|one": "(~%(count)s ผลลัพท์)",
"(~%(count)s results)|other": "(~%(count)s ผลลัพท์)",
- "Admin tools": "เครื่องมือผู้ดูแล",
- "And %(count)s more...": "เพิ่มอีก %(count)s ชิ้น...",
"Missing Media Permissions, click here to request.": "ไม่มีสิทธิ์เข้าถึงสื่อ, คลิกที่นี่เพื่อขอสิทธิ์",
"Alias (optional)": "นามแฝง (ไม่ใส่ก็ได้)",
"An email has been sent to": "ส่งอีเมลไปแล้วถึง",
@@ -486,7 +450,6 @@
"Otherwise, click here to send a bug report.": "หรือคลิกที่นี่เพื่อรายงานจุดบกพร่อง",
"Power level must be positive integer.": "ระดับอำนาจต้องเป็นจำนวนเต็มบวก",
"%(roomName)s does not exist.": "ไม่มีห้อง %(roomName)s อยู่จริง",
- "to browse the directory": "เพื่อเรียกดูไดเรกทอรี",
"To link to a room it must have an address.": "ห้องต้องมีที่อยู่ก่อน ถึงจะลิงก์ได้",
"Enter passphrase": "กรอกรหัสผ่าน",
"Seen by %(userName)s at %(dateTime)s": "%(userName)s เห็นแล้วเมื่อเวลา %(dateTime)s",
@@ -503,7 +466,7 @@
"Verified": "ตรวจสอบแล้ว",
"You are already in a call.": "คุณอยู่ในสายแล้ว",
"You cannot place a call with yourself.": "คุณไม่สามารถโทรหาตัวเองได้",
- "Unverify": "ถอนการตรวสอบ",
+ "Unverify": "ถอนการตรวจสอบ",
"Verify...": "ตรวจสอบ...",
"What does this mean?": "นี่แปลว่าอะไร?",
"Error decrypting audio": "เกิดข้อผิดพลาดในการถอดรหัสเสียง",
diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json
index 98be1c9a64..5f1e8256ac 100644
--- a/src/i18n/strings/tr.json
+++ b/src/i18n/strings/tr.json
@@ -13,7 +13,6 @@
"Add phone number": "Telefon numarası ekle",
"Admin": "Admin",
"Admin Tools": "Admin araçları",
- "And %(count)s more...": "Ve %(count)s fazlası...",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Medya İzinleri Yok , talep etmek için burayı tıklayın.",
"No Microphones detected": "Hiçbir Mikrofon bulunamadı",
@@ -29,7 +28,6 @@
"Always show message timestamps": "Her zaman mesaj zaman dalgalarını (timestamps) gösterin",
"Authentication": "Doğrulama",
"Alias (optional)": "Diğer ad (isteğe bağlı)",
- "and": "ve",
"%(items)s and %(remaining)s others": "%(items)s ve %(remaining)s diğerleri",
"%(items)s and one other": "%(items)s ve bir başkası",
"%(items)s and %(lastItem)s": "%(items)s ve %(lastItem)s",
@@ -37,7 +35,6 @@
"and %(count)s others...|other": "ve %(count)s diğerleri...",
"%(names)s and %(lastPerson)s are typing": "%(names)s ve %(lastPerson)s yazıyorlar",
"%(names)s and one other are typing": "%(names)s ve birisi yazıyor",
- "%(names)s and %(count)s others are typing": "%(names)s ve %(count)s diğeri yazıyor",
"An email has been sent to": "Bir e-posta gönderildi",
"A new password must be entered.": "Yeni bir şifre girilmelidir.",
"%(senderName)s answered the call.": "%(senderName)s aramayı cevapladı.",
@@ -110,7 +107,6 @@
"Decrypt %(text)s": "%(text)s metninin şifresini çöz",
"Decryption error": "Şifre çözme hatası",
"Delete": "Sil",
- "demote": "Terfiyi Geri Al",
"Deops user with given id": "ID'leriyle birlikte , düşürülmüş kullanıcılar",
"Default": "Varsayılan",
"Device already verified!": "Cihaz zaten doğrulandı!",
@@ -171,7 +167,6 @@
"Failed to load timeline position": "Zaman çizelgesi konumu yüklenemedi",
"Failed to lookup current room": "Geçerli odayı aramak başarısız oldu",
"Failed to mute user": "Kullanıcıyı sessize almak başarısız oldu",
- "Failed to register as guest:": "Misafir olarak kayıt yapılamadı :",
"Failed to reject invite": "Daveti reddetme başarısız oldu",
"Failed to reject invitation": "Davetiyeyi reddetme başarısız oldu",
"Failed to save settings": "Ayarlar kaydetme başarısız oldu",
@@ -187,7 +182,6 @@
"Failed to verify email address: make sure you clicked the link in the email": "E-posta adresini doğrulama başarısız : e-postadaki bağlantıya tıkladığınızdan emin olun",
"Failure to create room": "Oda oluşturulamadı",
"Favourite": "Favori",
- "favourite": "favori",
"Favourites": "Favoriler",
"Fill screen": "Ekranı Doldur",
"Filter room members": "Oda üyelerini Filtrele",
@@ -199,7 +193,6 @@
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s %(fromPowerLevel)s den %(toPowerLevel)s ' ye",
"Guest access is disabled on this Home Server.": "Misafir erişimi bu Ana Sunucu için devre dışı.",
"Guests cannot join this room even if explicitly invited.": "Misafirler açıkca davet edilseler bile bu odaya katılamazlar.",
- "had": "vardı",
"Hangup": "Sorun",
"Hide read receipts": "Okundu bilgilerini gizle",
"Hide Text Formatting Toolbar": "Metin Biçimlendirme Araç Çubuğunu Gizle",
@@ -231,8 +224,6 @@
"Sign in with": "Şununla giriş yap",
"Join as voice or video.": " ses veya video olarak katılın.",
"Join Room": "Odaya Katıl",
- "joined and left": "katıldı ve ayrıldı",
- "joined": "katıldı",
"%(targetName)s joined the room.": "%(targetName)s odaya katıldı.",
"Joins room with given alias": "Verilen takma ad (nick name) ile odaya katıl",
"Jump to first unread message.": "İlk okunmamış iletiye atla.",
@@ -242,8 +233,6 @@
"Labs": "Laboratuarlar",
"Last seen": "Son görülme",
"Leave room": "Odadan ayrıl",
- "left and rejoined": "ayrıldı ve yeniden katıldı",
- "left": "ayrıldı",
"%(targetName)s left the room.": "%(targetName)s odadan ayrıldı.",
"Level:": "Seviye :",
"Local addresses for this room:": "Bu oda için yerel adresler :",
@@ -271,7 +260,6 @@
"Mute": "Sessiz",
"Name": "İsim",
"Never send encrypted messages to unverified devices from this device": "Bu cihazdan doğrulanmamış cihazlara asla şifrelenmiş mesajlar göndermeyin",
- "Never send encrypted messages to unverified devices in this room": "Bu odada doğrulanmamış cihazlara asla şifreli mesajlar göndermeyin",
"Never send encrypted messages to unverified devices in this room from this device": "Bu odada bu cihazdan doğrulanmamış cihazlara asla şifrelenmiş mesajlar göndermeyin",
"New address (e.g. #foo:%(localDomain)s)": "Yeni adres (e.g. #foo:%(localDomain)s)",
"New password": "Yeni Şifre",
@@ -316,7 +304,6 @@
"Revoke Moderator": "Moderatörü İptal Et",
"Refer a friend to Riot:": "Riot'tan bir arkadaşa bakın :",
"Register": "Kaydolun",
- "rejected": "reddedildi",
"%(targetName)s rejected the invitation.": "%(targetName)s daveti reddetti.",
"Reject invitation": "Daveti Reddet",
"Rejoin": "Yeniden Katıl",
@@ -329,7 +316,6 @@
"%(senderName)s requested a VoIP conference.": "%(senderName)s bir VoIP konferansı talep etti.",
"Report it": "Bunu rapor et",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Şifrenizi sıfırlamak , eğer Oda Anahtarlarınızı dışa aktarmaz ve daha sonra içe aktarmaz iseniz , şu anda tüm cihazlarda uçtan uca şifreleme anahtarlarını sıfırlayarak şifreli sohbetleri okunamaz hale getirecek . Gelecekte bu iyileştirilecek.",
- "restore": "geri yükle",
"Results from DuckDuckGo": "DuckDuckGo Sonuçları",
"Return to app": "Uygulamaya dön",
"Return to login screen": "Giriş ekranına dön",
@@ -369,7 +355,6 @@
"Session ID": "Oturum ID",
"%(senderName)s set a profile picture.": "%(senderName)s bir profil resmi ayarladı.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s görünür ismini %(displayName)s ' a ayarladı.",
- "Set": "Ayarla",
"Settings": "Ayarlar",
"Show panel": "Paneli göster",
"Show Text Formatting Toolbar": "Metin Biçimlendirme Araç Çubuğunu Göster",
@@ -388,7 +373,6 @@
"Start Chat": "Sohbet Başlat",
"Submit": "Gönder",
"Success": "Başarı",
- "tag direct chat": "Doğrudan sohbeti etiketle",
"Tagged as: ": "Olarak etiketlendi : ",
"The default role for new room members is": "Yeni oda üyelerinin varsayılan rolü",
"The main address for this room is": "Bu oda için ana adres",
@@ -413,15 +397,11 @@
"This room": "Bu oda",
"This room is not accessible by remote Matrix servers": "Bu oda uzak Matrix Sunucuları tarafından erişilebilir değil",
"This room's internal ID is": "Bu odanın Dahili ID'si",
- "times": "kere",
- "to browse the directory": "Dizine göz atmak için",
"to demote": "indirgemek için",
"to favourite": "favorilemek",
"To link to a room it must have an address.": "Bir odaya bağlanmak için oda bir adrese sahip olmalı.",
- "to make a room or": "bir oda oluşturmak için ya da",
"To reset your password, enter the email address linked to your account": "Parolanızı sıfırlamak için hesabınıza bağlı e-posta adresinizi girin",
"to restore": "yenilemek için",
- "to start a chat with someone": "birisiyle sohbet başlatmak için",
"to tag direct chat": "doğrudan sohbeti etiketlemek için",
"To use it, just wait for autocomplete results to load and tab through them.": "Kullanmak için , otomatik tamamlama sonuçlarının yüklenmesini ve bitmesini bekleyin.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Bu odanın zaman çizelgesinde belirli bir nokta yüklemeye çalışıldı , ama geçerli mesajı görüntülemeye izniniz yok.",
@@ -510,12 +490,10 @@
"You have enabled URL previews by default.": "URL önizlemelerini varsayılan olarak etkinleştirdiniz .",
"You have no visible notifications": "Hiçbir görünür bildiriminiz yok",
"You may wish to login with a different account, or add this email to this account.": "Farklı bir hesap ile giriş yapmak veya bu e-postayı bu hesaba eklemek istemiş olabilirsiniz.",
- "you must be a": "olabilirsiniz",
"You must register to use this functionality": "Bu işlevi kullanmak için Kayıt Olun ",
"You need to be able to invite users to do that.": "Bunu yapmak için kullanıcıları davet etmeye ihtiyacınız var.",
"You need to be logged in.": "Oturum açmanız gerekiyor.",
"You need to enter a user name.": "Bir kullanıcı ismi girmeniz gerekiyor.",
- "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Bu cihaz için uçtan uca şifreleme anahtarları oluşturmak için yeniden giriş yapmanız ve genel anahtarı Ana Sunucu'nuza göndermeniz gerekir . Bu bir kez kapalı ; rahatsızlıktan dolayı özür dileriz.",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "E-posta adresiniz bu Ana Sunucu'da ki Matrix ID'si ile ilişkili gözükmüyor.",
"Your password has been reset": "Şifreniz sıfırlandı",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Şifreniz başarıyla değiştirildi . Diğer cihazlara girene kadar onlara bildirim almayacaksınız",
@@ -571,15 +549,7 @@
"(~%(count)s results)|one": "(~%(count)s sonuç)",
"(~%(count)s results)|other": "(~%(count)s sonuçlar)",
"Cancel": "İptal Et",
- "or": "veya",
"Active call": "Aktif çağrı",
- "Monday": "Pazartesi",
- "Tuesday": "Salı",
- "Wednesday": "Çarşamba",
- "Thursday": "Perşembe",
- "Friday": "Cuma",
- "Saturday": "Cumartesi",
- "Sunday": "Pazar",
"bold": "kalın",
"italic": "italik",
"strike": "vurgulu",
@@ -738,7 +708,7 @@
"Start chatting": "Sohbeti başlat",
"Start Chatting": "Sohbeti Başlat",
"Click on the button below to start chatting!": "Sohbeti başlatmak için aşağıdaki butona tıklayın!",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName odanın avatarını
olarak çevirdi",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s odanın avatarını
olarak çevirdi",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s odanın avatarını kaldırdı.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s %(roomName)s için avatarı değiştirdi",
"Username available": "Kullanıcı ismi uygun",
diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json
index 697ed818a2..078147640a 100644
--- a/src/i18n/strings/uk.json
+++ b/src/i18n/strings/uk.json
@@ -6,7 +6,7 @@
"Dismiss": "Відхилити",
"Drop here %(toAction)s": "Кидайте сюди %(toAction)s",
"Error": "Помилка",
- "Failed to forget room %(errCode)s": "Не вдалось забути кімнату %(errCode)s",
+ "Failed to forget room %(errCode)s": "Не вдалось видалити кімнату %(errCode)s",
"Favourite": "Вибране",
"Mute": "Стишити",
"Notifications": "Сповіщення",
@@ -18,13 +18,6 @@
"Settings": "Налаштування",
"Start chat": "Почати розмову",
"unknown error code": "невідомий код помилки",
- "Sunday": "Неділя",
- "Monday": "Понеділок",
- "Tuesday": "Вівторок",
- "Wednesday": "Середа",
- "Thursday": "Четвер",
- "Friday": "П'ятниця",
- "Saturday": "Субота",
"OK": "Гаразд",
"Failed to change password. Is your password correct?": "Не вдалось змінити пароль. Ви впевнені, що пароль введено правильно?",
"Continue": "Продовжити",
@@ -42,13 +35,11 @@
"Add phone number": "Додати номер телефону",
"Admin": "Адміністратор",
"Admin Tools": "Засоби адміністрування",
- "And %(count)s more...": "І %(count)s більше...",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Відсутні дозволи, натисніть для запиту.",
"No Microphones detected": "Мікрофон не виявлено",
"No Webcams detected": "Веб-камеру не виявлено",
"Favourites": "Вибрані",
- "favourite": "вибране",
"Fill screen": "На весь екран",
"No media permissions": "Нема дозволів на відео/аудіо",
"You may need to manually permit Riot to access your microphone/webcam": "Можливо, вам треба дозволити Riot використання мікрофону/камери вручну",
@@ -61,7 +52,6 @@
"Always show message timestamps": "Завжди показувати часові позначки повідомлень",
"Authentication": "Впізнавання",
"Alias (optional)": "Псевдонім (необов'язково)",
- "and": "та",
"%(items)s and %(remaining)s others": "%(items)s та інші %(remaining)s",
"%(items)s and one other": "%(items)s і ще один інший",
"%(items)s and %(lastItem)s": "%(items)s та %(lastItem)s",
@@ -69,7 +59,49 @@
"and %(count)s others...|other": "та %(count)s інші...",
"%(names)s and %(lastPerson)s are typing": "%(names)s та %(lastPerson)s пишуть",
"%(names)s and one other are typing": "%(names)s та інші пишуть",
- "%(names)s and %(count)s others are typing": "%(names)s та %(count)s інших пишуть",
"An email has been sent to": "Лист було надіслано",
- "A new password must be entered.": "Має бути введений новий пароль."
+ "A new password must be entered.": "Має бути введений новий пароль.",
+ "Add a widget": "Добавити віджет",
+ "Allow": "Принюти",
+ "%(senderName)s answered the call.": "%(senderName)s відповіла на дзвінок.",
+ "An error has occurred.": "Трапилась помилка.",
+ "Anyone": "Кожний",
+ "Anyone who knows the room's link, apart from guests": "Кожний, хто знає посилання на кімнату, окрім гостей",
+ "Anyone who knows the room's link, including guests": "Кожний, хто знає посилання на кімнату, включно гостей",
+ "Are you sure?": "Ви впевнені?",
+ "Are you sure you want to leave the room '%(roomName)s'?": "Ви впевнені, що хочете покинути '%(roomName)s'?",
+ "Are you sure you want to reject the invitation?": "Ви впевнені, що ви хочете відхилити запрошення?",
+ "Are you sure you want to upload the following files?": "Ви впевнені, що ви хочете відправити наступний файл?",
+ "Attachment": "Прикріплення",
+ "Autoplay GIFs and videos": "Автовідтворення GIF і відео",
+ "%(senderName)s banned %(targetName)s.": "%(senderName)s заблокував(ла) %(targetName)s.",
+ "Ban": "Заблокувати",
+ "Banned users": "Заблоковані користувачі",
+ "Bans user with given id": "Блокує користувача з заданим ID",
+ "Blacklisted": "В чорному списку",
+ "Bug Report": "Звіт про помилку",
+ "Bulk Options": "Групові параметри",
+ "Call Timeout": "Час очікування виклика",
+ "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Не вдається підключитись до домашнього серверу - перевірте підключення, переконайтесь, що ваш SSL-сертифікат домашнього сервера є довіреним і що розширення браузера не блокує запити.",
+ "Can't load user settings": "Неможливо завантажити настройки користувача",
+ "Cannot add any more widgets": "Неможливо додати більше віджетів",
+ "Change Password": "Поміняти пароль",
+ "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s змінено з %(oldDisplayName)s на %(displayName)s.",
+ "%(senderName)s changed their profile picture.": "%(senderName)s змінив зображення профіля.",
+ "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s змінив(ла) рівень доступу для %(powerLevelDiffText)s.",
+ "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s змінив(ла) назву кімнати на %(roomName)s.",
+ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s видалив ім'я кімнати.",
+ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s змінив тему на %(topic)s.",
+ "Email": "е-почта",
+ "Email address": "Адреса е-почти",
+ "Email address (optional)": "Адреса е-почти (не обов'язково)",
+ "Email, name or matrix ID": "Е-почта, ім'я або matrix ID",
+ "Failed to send email": "Помилка відправки е-почти",
+ "Edit": "Редактувати",
+ "Unpin Message": "Відкріпити повідомлення",
+ "Register": "Зарегіструватись",
+ "Rooms": "Кімнати",
+ "Add rooms to this community": "Добавити кімнати в це суспільство",
+ "This email address is already in use": "Ця адреса елект. почти вже використовується",
+ "This phone number is already in use": "Цей телефонний номер вже використовується"
}
diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json
index f185640572..474233909f 100644
--- a/src/i18n/strings/zh_Hans.json
+++ b/src/i18n/strings/zh_Hans.json
@@ -6,7 +6,6 @@
"/ddg is not a command": "/ddg 不是一个命令",
"Deactivate Account": "销毁账号",
"Deactivate my account": "销毁我的账号",
- "decline": "拒绝",
"Decrypt %(text)s": "解密 %(text)s",
"Decryption error": "解密出错",
"Delete": "删除",
@@ -31,7 +30,7 @@
"Encrypted room": "加密聊天室",
"%(senderName)s ended the call.": "%(senderName)s 结束了通话。.",
"End-to-end encryption information": "端到端加密信息",
- "End-to-end encryption is in beta and may not be reliable": "端到端加密现为测试版,不一定可靠",
+ "End-to-end encryption is in beta and may not be reliable": "端到端加密现为 beta 版,不一定可靠",
"Enter Code": "输入代码",
"Error": "错误",
"Error decrypting attachment": "解密附件时出错",
@@ -62,7 +61,6 @@
"Failed to verify email address: make sure you clicked the link in the email": "邮箱验证失败: 请确保你已点击邮件中的链接",
"Failure to create room": "创建聊天室失败",
"Favourite": "收藏",
- "favourite": "收藏",
"Favourites": "收藏夹",
"Fill screen": "满屏显示",
"Filter room members": "过滤聊天室成员",
@@ -73,7 +71,6 @@
"Found a bug?": "发现漏洞?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s 从 %(fromPowerLevel)s 变为 %(toPowerLevel)s",
"Guests cannot join this room even if explicitly invited.": "游客不能加入此聊天室,即使有人主动邀请。.",
- "had": "已经",
"Hangup": "挂断",
"Hide read receipts": "隐藏已读回执",
"Hide Text Formatting Toolbar": "隐藏格式工具栏",
@@ -81,7 +78,7 @@
"Homeserver is": "主服务器是",
"Identity Server is": "身份认证服务器是",
"I have verified my email address": "我已经验证了我的邮箱地址",
- "Import E2E room keys": "导入聊天室端对端加密密钥",
+ "Import E2E room keys": "导入聊天室端到端加密密钥",
"Incorrect verification code": "验证码错误",
"Interface Language": "界面语言",
"Invalid alias format": "别名格式错误",
@@ -90,7 +87,6 @@
"Invalid file%(extra)s": "非法文件%(extra)s",
"Report it": "报告",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "重设密码会导致所有设备上的端到端加密密钥被重置,使得加密的聊天记录不可读,除非你事先导出密钥,修改密码后再导入。此问题将来会得到改善。.",
- "restore": "恢复",
"Return to app": "返回 App",
"Return to login screen": "返回登录页面",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot 未被允许向你推送消息 - 请检查浏览器设置",
@@ -153,10 +149,7 @@
"Advanced": "高级",
"Algorithm": "算法",
"Always show message timestamps": "总是显示消息时间戳",
- "an address": "一个地址",
- "and": "和",
"%(names)s and %(lastPerson)s are typing": "%(names)s 和 %(lastPerson)s 正在打字",
- "%(names)s and %(count)s others are typing": "%(names)s 和另外 %(count)s 个人正在打字",
"An email has been sent to": "一封邮件已经被发送到",
"A new password must be entered.": "一个新的密码必须被输入。.",
"%(senderName)s answered the call.": "%(senderName)s 接了通话。.",
@@ -166,7 +159,6 @@
"%(senderName)s banned %(targetName)s.": "%(senderName)s 封禁了 %(targetName)s.",
"Ban": "封禁",
"Banned users": "被封禁的用户",
- "Click here": "点击这里",
"Click here to fix": "点击这里修复",
"Confirm password": "确认密码",
"Confirm your new password": "确认你的新密码",
@@ -174,7 +166,6 @@
"Ed25519 fingerprint": "Ed25519指纹",
"Invite new room members": "邀请新的聊天室成员",
"Join Room": "加入聊天室",
- "joined": "已加入",
"%(targetName)s joined the room.": "%(targetName)s 已加入聊天室。",
"Jump to first unread message.": "跳到第一条未读消息。",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s 把 %(targetName)s 踢出了聊天室。.",
@@ -225,7 +216,7 @@
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s 把话题修改为 “%(topic)s”。",
"Changes to who can read history will only apply to future messages in this room": "修改阅读历史的权限仅对此聊天室以后的消息有效",
"Changes your display nickname": "修改昵称",
- "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "目前,修改密码会导致所有设备上的端对端密钥被重置,使得加密的聊天记录不再可读。除非你事先导出聊天室密钥,修改密码后再导入。这个问题未来会改善。",
+ "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "目前,修改密码会导致所有设备上的端到端密钥被重置,使得加密的聊天记录不再可读。除非你事先导出聊天室密钥,修改密码后再导入。这个问题未来会改善。",
"Clear Cache and Reload": "清除缓存并刷新",
"Clear Cache": "清除缓存",
"Click here to join the discussion!": "点此 加入讨论!",
@@ -265,7 +256,6 @@
"Error: Problem communicating with the given homeserver.": "错误: 与指定的主服务器通信时出错。",
"Export": "导出",
"Failed to fetch avatar URL": "获取 Avatar URL 失败",
- "Failed to register as guest:": "无法注册为游客:",
"Failed to upload profile picture!": "无法上传头像!",
"Guest access is disabled on this Home Server.": "此服务器禁用了游客访问。",
"Home": "主页面",
@@ -280,7 +270,7 @@
"Invites user with given id to current room": "邀请指定 ID 的用户加入当前聊天室",
"'%(alias)s' is not a valid format for an address": "'%(alias)s' 不是一个合法的电子邮件地址格式",
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' 不是一个合法的昵称格式",
- "%(displayName)s is typing": "%(displayName)s 正在输入",
+ "%(displayName)s is typing": "%(displayName)s 正在打字",
"Sign in with": "第三方登录",
"Message not sent due to unknown devices being present": "消息未发送,因为有未知的设备存在",
"Missing room_id in request": "请求中没有 room_id",
@@ -291,7 +281,6 @@
"Mute": "静音",
"Name": "姓名",
"Never send encrypted messages to unverified devices from this device": "不要从此设备向未验证的设备发送消息",
- "Never send encrypted messages to unverified devices in this room": "不要在此聊天室里向未验证的设备发送消息",
"New passwords don't match": "两次输入的新密码不符",
"none": "无",
"not set": "未设置",
@@ -319,13 +308,6 @@
"Room directory": "聊天室目录",
"Start chat": "开始聊天",
"unknown error code": "未知错误代码",
- "Sunday": "星期日",
- "Monday": "星期一",
- "Tuesday": "星期二",
- "Wednesday": "星期三",
- "Thursday": "星期四",
- "Friday": "星期五",
- "Saturday": "星期六",
"Account": "账户",
"Add": "添加",
"Allow": "允许",
@@ -334,11 +316,8 @@
"Curve25519 identity key": "Curve25519 认证密钥",
"Edit": "编辑",
"Hide Apps": "隐藏应用",
- "joined and left": "加入并离开",
"Joins room with given alias": "以指定的别名加入聊天室",
"Labs": "实验室",
- "left and rejoined": "离开并加入",
- "left": "离开",
"%(targetName)s left the room.": "%(targetName)s 离开了聊天室。",
"Logged in as:": "登录为:",
"Logout": "登出",
@@ -346,7 +325,6 @@
"Markdown is disabled": "Markdown 已禁用",
"Markdown is enabled": "Markdown 已启用",
"matrix-react-sdk version:": "matrix-react-sdk 版本:",
- "Matrix Apps": "Matrix 应用",
"No more results": "没有更多结果",
"olm version:": "olm 版本:",
"Only people who have been invited": "只有被邀请的人",
@@ -356,7 +334,6 @@
"Privileged Users": "特权用户",
"Reason": "原因",
"Register": "注册",
- "rejected": "拒绝",
"%(targetName)s rejected the invitation.": "%(targetName)s 拒绝了邀请。",
"Reject invitation": "拒绝邀请",
"Rejoin": "重新加入",
@@ -372,7 +349,6 @@
"VoIP conference started.": "VoIP 会议开始。",
"VoIP is unsupported": "不支持 VoIP",
"Warning!": "警告!",
- "you must be a": "你必须是",
"You must register to use this functionality": "你必须注册以使用这个功能",
"You need to be logged in.": "你需要登录。",
"You need to enter a user name.": "你需要输入一个用户名。",
@@ -439,12 +415,8 @@
"Start verification": "开始验证",
"Ignore request": "忽略请求",
"Loading device info...": "正在加载设备信息...",
- "Groups": "群",
- "Create a new group": "创建一个新群",
- "Group Name": "群名称",
"Example": "例子",
"Create": "创建",
- "Edit Group": "编辑群",
"Failed to upload image": "上传图像失败",
"Add a widget": "添加一个小部件",
"a room": "一个聊天室",
@@ -532,11 +504,8 @@
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "验证码将发送到+%(msisdn)s,请输入接收到的验证码",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s 接受了 %(displayName)s 的邀请。",
"Active call (%(roomName)s)": "%(roomName)s 的呼叫",
- "And %(count)s more...": "添加%(count)s 个...",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s 将级别调整到%(powerLevelDiffText)s 。",
"Changes colour scheme of current room": "修改了样式",
- "changing room on a RoomView is not supported": "暂不支持修改",
- "demote": "降级",
"Deops user with given id": "Deops user",
"Join as voice or video.": "通过 语言 或者 视频加入.",
"%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s 设定历史浏览功能为 所有聊天室成员,从他们被邀请开始.",
@@ -546,27 +515,22 @@
"%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s 设定历史浏览功能为 未知的 (%(visibility)s).",
"AM": "上午",
"PM": "下午",
- "NOTE: Apps are not end-to-end encrypted": "提示:APP不支持端对端加密",
+ "NOTE: Apps are not end-to-end encrypted": "提示:APP不支持端到端加密",
"People": "联系人",
"Profile": "个人配置",
"Public Chat": "公开的",
"Refer a friend to Riot:": "介绍朋友加入Riot:",
"%(roomName)s is not accessible at this time.": "%(roomName)s 此时无法访问。",
- "Set": "设置",
"Start authentication": "开始认证",
- "tag direct chat": "标签",
"The maximum permitted number of widgets have already been added to this room.": "小部件的最大允许数量已经添加到这个房间了。",
"The phone number entered looks invalid": "输入的电话号码看起来无效",
"The remote side failed to pick up": "远端未能接收到",
"This Home Server does not support login using email address.": "HS不支持使用电子邮件地址登陆。",
"This invitation was sent to an email address which is not associated with this account:": "此邀请被发送到与此帐户不相关的电子邮件地址:",
"This room is not recognised.": "这个房间未匹配。",
- "times": "次",
"To get started, please pick a username!": "请点击用户名!",
"Unable to add email address": "无法添加电子邮件地址",
- "Failed to update group": "更新群组失败",
"Automatically replace plain text Emoji": "文字、表情自动转换",
- "Join an existing group": "试图加入一个不存在的群组",
"To reset your password, enter the email address linked to your account": "要重置你的密码,请输入关联你的帐号的电子邮箱地址",
"Unable to verify email address.": "无法验证电子邮箱地址。",
"Unknown room %(roomId)s": "未知聊天室 %(roomId)s",
@@ -640,7 +604,6 @@
"Sent messages will be stored until your connection has returned.": "已发送的消息会被保存直到你的连接回来。",
"(~%(count)s results)|one": "(~%(count)s 个结果)",
"(~%(count)s results)|other": "(~%(count)s 个结果)",
- "or": "或者",
"%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s 加入了 %(repeats)s 次",
"%(oneUser)sjoined %(repeats)s times": "%(oneUser)s 加入了 %(repeats)s 次",
"%(severalUsers)sjoined": "%(severalUsers)s 加入了",
@@ -671,5 +634,81 @@
"Please select the destination room for this message": "请选择这条消息的目标聊天室",
"Start automatically after system login": "在系统登录后自动启动",
"Analytics": "分析",
- "Reject all %(invitedRooms)s invites": "拒绝所有 %(invitedRooms)s 邀请"
+ "Reject all %(invitedRooms)s invites": "拒绝所有 %(invitedRooms)s 邀请",
+ "You may wish to login with a different account, or add this email to this account.": "你可能希望用另外一个账户登录,或者添加这个电子邮件到这个账户上。",
+ "Sun": "星期日",
+ "Mon": "星期一",
+ "Tue": "星期二",
+ "Wed": "星期三",
+ "Thu": "星期四",
+ "Fri": "星期五",
+ "Sat": "星期六",
+ "Jan": "一月",
+ "Feb": "二月",
+ "Mar": "三月",
+ "Apr": "四月",
+ "May": "五月",
+ "Jun": "六月",
+ "Jul": "七月",
+ "Aug": "八月",
+ "Sep": "九月",
+ "Oct": "十月",
+ "Nov": "十一月",
+ "Dec": "十二月",
+ "%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers)s 加入并离开了 %(repeats)s 次",
+ "were unbanned %(repeats)s times": "被解封 %(repeats)s 次",
+ "was unbanned %(repeats)s times": "被解封 %(repeats)s 次",
+ "were unbanned": "被解封",
+ "was unbanned": "被解封",
+ "were kicked %(repeats)s times": "被踢出 %(repeats)s 次",
+ "was kicked %(repeats)s times": "被踢出 %(repeats)s 次",
+ "were kicked": "被踢出",
+ "was kicked": "被踢出",
+ "Desktop specific": "桌面特有的",
+ "You must join the room to see its files": "你必须加入聊天室以看到它的文件",
+ "Failed to invite the following users to the %(roomName)s room:": "邀请以下用户到 %(roomName)s 聊天室失败:",
+ "Confirm Removal": "确认移除",
+ "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "这会让你的账户永远不可用。你无法重新注册同一个用户 ID.",
+ "Verifies a user, device, and pubkey tuple": "验证一个用户、设备和密钥元组",
+ "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "我们在尝试恢复你之前的会话时遇到了一个错误。如果你继续,你将需要重新登录,加密的聊天历史将会不可读。",
+ "Unknown devices": "未知设备",
+ "Unknown Address": "未知地址",
+ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s 删除了他们的昵称 (%(oldDisplayName)s).",
+ "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "你提供的签名密钥和你从 %(userId)s 的设备 (deviceId)s 收到的签名密钥匹配。设备被标记为已验证。",
+ "These are experimental features that may break in unexpected ways": "这些是可能以意外的方式坏掉的实验性的特性",
+ "The visibility of existing history will be unchanged": "现有历史记录的可见性不会被改变",
+ "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s 打开了端到端加密 (算法 %(algorithm)s).",
+ "Unable to remove contact information": "无法移除联系人信息",
+ "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "现在 重发全部 或者 取消全部。你也可以选择重发或取消单独的消息。",
+ "were invited %(repeats)s times": "被邀请 %(repeats)s 次",
+ "was invited %(repeats)s times": "被邀请 %(repeats)s 次",
+ "Riot collects anonymous analytics to allow us to improve the application.": "Riot 收集匿名的分析数据来允许我们改善这个应用。",
+ "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" 包含你以前没见过的设备。",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "你可以使用自定义的服务器选项来通过指定一个不同的主服务器 URL 来登录其他 Matrix 服务器。",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "这允许你用一个已有在不同主服务器的 Matrix 账户使用这个应用。",
+ "Please check your email to continue registration.": "请查看你的电子邮件以继续注册。",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "如果你不指定一个电子邮箱地址,你将不能重置你的密码。你确定吗?",
+ "Home server URL": "主服务器 URL",
+ "Identity server URL": "身份服务器 URL",
+ "What does this mean?": "这是什么意思?",
+ "Image '%(Body)s' cannot be displayed.": "图像 '%(Body)s' 无法显示。",
+ "This image cannot be displayed.": "图像无法显示。",
+ "Add an Integration": "添加一个集成",
+ "Removed or unknown message type": "被移除或未知的消息类型",
+ "Disable URL previews by default for participants in this room": "对这个聊天室的参与者默认禁用 URL 预览",
+ "Enable URL previews for this room (affects only you)": "在这个聊天室启用 URL 预览(只影响你)",
+ "Ongoing conference call%(supportedText)s.": "正在进行的会议通话 %(supportedText)s.",
+ "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s 修改了 %(roomName)s 的头像",
+ "This will be your account name on the homeserver, or you can pick a different server.": "这将会成为你在 主服务器上的账户名,或者你可以选择一个 不同的服务器。",
+ "Your browser does not support the required cryptography extensions": "你的浏览器不支持所需的密码学扩展",
+ "Authentication check failed: incorrect password?": "身份验证失败:密码错误?",
+ "This will allow you to reset your password and receive notifications.": "这将允许你重置你的密码和接收通知。",
+ "Share without verifying": "不验证就分享",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "你添加了一个新的设备 '%(displayName)s',它正在请求加密密钥。",
+ "Your unverified device '%(displayName)s' is requesting encryption keys.": "你的未验证的设备 '%(displayName)s' 正在请求加密密钥。",
+ "Encryption key request": "加密密钥请求",
+ "Autocomplete Delay (ms):": "自动完成延迟(毫秒):",
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s 小组建被 %(senderName)s 添加",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s 小组建被 %(senderName)s 移除",
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s 小组建被 %(senderName)s 修改"
}
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 6903c35d8c..6e0cfd3892 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -15,12 +15,10 @@
"Blacklisted": "已列入黑名單",
"Bug Report": "臭蟲回報",
"Call Timeout": "通話超時",
- "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "無法連結主伺服器 - 請檢查網路狀況並確保您的 主伺服器 SSL 證書 得到信任",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "當瀏覽器網址列裡有 HTTPS URL 時,不能使用 HTTP 連線到家伺服器。請採用 HTTPS 或者允許不安全的指令稿。",
"Can't load user settings": "無法載入使用者設定",
"Change Password": "變更密碼",
"%(targetName)s left the room.": "%(targetName)s 離開了聊天室。.",
- "accept": "接受",
"Account": "帳號",
"Access Token:": "取用令牌:",
"Add email address": "添加郵件地址",
@@ -30,17 +28,12 @@
"Algorithm": "算法",
"Always show message timestamps": "總是顯示訊息時間戳",
"Authentication": "授權",
- "an address": "一個地址",
- "and": "和",
"%(items)s and %(remaining)s others": "%(items)s 和 %(remaining)s 其它",
"%(items)s and one other": "%(items)s 和其它",
"%(items)s and %(lastItem)s": "%(items)s 和 %(lastItem)s",
- "and one other...": "與另一個...",
"%(names)s and %(lastPerson)s are typing": "%(names)s 和 %(lastPerson)s 正在打字",
- "%(names)s and %(count)s others are typing": "%(names)s 和另外 %(count)s 個人正在打字",
"%(senderName)s answered the call.": "%(senderName)s 接了通話。.",
"Clear Cache": "清理緩存",
- "Click here": "點擊這里",
"Click here to fix": "點擊這里修復",
"Confirm password": "確認密碼",
"Confirm your new password": "確認你的新密碼",
@@ -52,7 +45,6 @@
"/ddg is not a command": "/ddg 不是一個命令",
"Deactivate Account": "銷毀賬號",
"Deactivate my account": "銷毀我的帳號",
- "decline": "拒絕",
"Decrypt %(text)s": "解密 %(text)s",
"Decryption error": "解密出錯",
"Delete": "刪除",
@@ -109,7 +101,6 @@
"Failed to verify email address: make sure you clicked the link in the email": "電子郵件地址驗證失敗: 請確保你已點擊郵件中的連結",
"Failure to create room": "創建聊天室失敗",
"Favourite": "我的最愛",
- "favourite": "收藏",
"Favourites": "收藏夾",
"Fill screen": "全螢幕顯示",
"Filter room members": "過濾聊天室成員",
@@ -120,7 +111,6 @@
"Found a bug?": "發現漏洞?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s 從 %(fromPowerLevel)s 變為 %(toPowerLevel)s",
"Guests cannot join this room even if explicitly invited.": "游客不能加入此聊天室,即使有人主動邀請。.",
- "had": "已經",
"Hangup": "掛斷",
"Hide read receipts": "隱藏已讀回執",
"Hide Text Formatting Toolbar": "隱藏格式工具欄",
@@ -137,7 +127,6 @@
"Invalid file%(extra)s": "非法文件%(extra)s",
"Invite new room members": "邀請新的聊天室成員",
"Join Room": "加入聊天室",
- "joined": "加入了",
"%(targetName)s joined the room.": "%(targetName)s 加入了聊天室。.",
"Jump to first unread message.": "跳到第一則未讀訊息。",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s 把 %(targetName)s 踢出了聊天室。.",
@@ -146,7 +135,6 @@
"New password": "新密碼",
"Report it": "報告",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "重設密碼目前會把所有裝置上的端到端加密金鑰重設,讓已加密的聊天歷史不可讀,除非您先匯出您的聊天室金鑰並在稍後重新匯入。這會在未來改進。",
- "restore": "恢復",
"Return to app": "返回 App",
"Return to login screen": "返回登錄頁面",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot 未被允許向你推送通知 ── 請檢查您的瀏覽器設定",
@@ -209,9 +197,7 @@
"Unable to add email address": "無法加入電郵地址",
"Unable to capture screen": "無法截取畫面",
"Unable to enable Notifications": "無法啟用通知功能",
- "Would you like to": "你要",
"You are already in a call.": "您正在通話中。",
- "You're not in any rooms yet! Press": "你尚未加入任何聊天室!請按",
"You are trying to access %(roomName)s.": "您將嘗試進入 %(roomName)s 聊天室。",
"You cannot place a call with yourself.": "你不能打電話給自已。",
"You cannot place VoIP calls in this browser.": "在此瀏覽器中您無法撥打 VoIP 通話。",
@@ -228,7 +214,7 @@
"Idle": "閒置",
"Offline": "下線",
"Disable URL previews for this room (affects only you)": "在這個房間禁止URL預覽(只影響你)",
- "$senderDisplayName changed the room avatar to
": "$senderDisplayName 更改了聊天室的圖像為
",
+ "%(senderDisplayName)s changed the room avatar to
": "%(senderDisplayName)s 更改了聊天室的圖像為
",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s 移除了聊天室圖片。",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s 更改了聊天室 %(roomName)s 圖像",
"Cancel": "取消",
@@ -240,13 +226,6 @@
"powered by Matrix": "由 Matrix 架設",
"Remove": "移除",
"unknown error code": "未知的錯誤代碼",
- "Sunday": "星期日",
- "Monday": "星期一",
- "Tuesday": "星期二",
- "Wednesday": "星期三",
- "Thursday": "星期四",
- "Friday": "星期五",
- "Saturday": "星期六",
"OK": "確定",
"Add a topic": "新增標題",
"VoIP": "VoIP",
@@ -260,8 +239,7 @@
"Device ID:": "裝置 ID:",
"device id: ": "裝置 ID: ",
"Reason": "原因",
- "Register": "注冊",
- "rejected": "拒絕",
+ "Register": "註冊",
"Default server": "預設伺服器",
"Custom server": "自定的伺服器",
"Home server URL": "自家伺服器網址",
@@ -294,7 +272,6 @@
"Active call (%(roomName)s)": "活躍的通話(%(roomName)s)",
"Add": "新增",
"Admin Tools": "管理員工具",
- "And %(count)s more...": "還有 %(count)s 個...",
"Missing Media Permissions, click here to request.": "遺失媒體權限,點選這裡來要求。",
"No Microphones detected": "未偵測到麥克風",
"No Webcams detected": "未偵測到網路攝影機",
@@ -302,7 +279,6 @@
"You may need to manually permit Riot to access your microphone/webcam": "您可能需要手動允許 Riot 存取您的麥克風/網路攝影機",
"Hide removed messages": "隱藏已移除的訊息",
"Alias (optional)": "別名(選擇性)",
- "and %(overflowCount)s others...": "和另外 %(overflowCount)s 個...",
"%(names)s and one other are typing": "%(names)s 與另外一個人正在輸入",
"Are you sure you want to leave the room '%(roomName)s'?": "您確定您要想要離開房間 '%(roomName)s' 嗎?",
"Bans user with given id": "禁止有指定 ID 的使用者",
@@ -355,7 +331,6 @@
"Export": "匯出",
"Failed to change power level": "變更權限等級失敗",
"Failed to fetch avatar URL": "擷取大頭貼 URL 失敗",
- "Failed to register as guest:": "註冊為訪客失敗:",
"Failed to upload profile picture!": "上傳基本資料圖片失敗!",
"Guest access is disabled on this Home Server.": "此家伺服器的訪客存取已停用。",
"Home": "家",
@@ -373,14 +348,11 @@
"%(displayName)s is typing": "%(displayName)s 正在輸入",
"Sign in with": "登入使用",
"Join as voice or video.": "加入為語音或視訊。",
- "joined and left": "加入並離開",
"Joins room with given alias": "以指定的別名加入房間",
"Kick": "踢出",
"Kicks user with given id": "踢出指定 ID 的使用者",
"Labs": "實驗室",
"Last seen": "上次檢視",
- "left and rejoined": "離開並重新加入",
- "left": "離開",
"Level:": "等級:",
"Local addresses for this room:": "此房間的本機地址:",
"Logged in as:": "登入為:",
@@ -405,7 +377,6 @@
"Must be viewing a room": "必須檢視房間",
"Name": "名稱",
"Never send encrypted messages to unverified devices from this device": "從不自此裝置傳送加密的訊息到未驗證的裝置",
- "Never send encrypted messages to unverified devices in this room": "從不在此房間傳送加密的訊息到未驗證的裝置",
"Never send encrypted messages to unverified devices in this room from this device": "從不在此房間中從此裝置上傳送未加密的訊息到未驗證的裝置",
"New address (e.g. #foo:%(localDomain)s)": "新地址(例如:#foo:%(localDomain)s)",
"New passwords don't match": "新密碼不相符",
@@ -433,7 +404,6 @@
"Permissions": "權限",
"Phone": "電話",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s 打了 %(callType)s 通話。",
- "demote": "降級",
"Please check your email and click on the link it contains. Once this is done, click continue.": "請檢查您的電子郵件並點選其中包含的連結。只要這個完成了,就點選選繼續。",
"Power level must be positive integer.": "權限等級必需為正整數。",
"Press to start a chat with someone": "按下 以開始與某人聊天",
@@ -461,10 +431,8 @@
"Save": "儲存",
"Seen by %(userName)s at %(dateTime)s": "%(userName)s 在 %(dateTime)s 時看過",
"Send anyway": "無論如何都要傳送",
- "Set": "設定",
"Show Text Formatting Toolbar": "顯示文字格式化工具列",
"Start authentication": "開始認證",
- "tag direct chat": "標記直接聊天",
"Tagged as: ": "標記為: ",
"The phone number entered looks invalid": "輸入的電話號碼看起來無效",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "您提供的簽署金鑰與您從 %(userId)s 的裝置 %(deviceId)s 收到的簽署金鑰相符。裝置被標記為已驗證。",
@@ -481,15 +449,11 @@
"This room": "此房間",
"This room is not accessible by remote Matrix servers": "此房間無法被遠端的 Matrix 伺服器存取",
"This room's internal ID is": "此房間的內部 ID 為",
- "times": "次數",
- "to browse the directory": "要瀏覽目錄",
"to demote": "要降級",
"to favourite": "到喜歡",
"To link to a room it must have an address.": "要連結到房間,它必須有地址。",
- "to make a room or": "要開房間或",
"To reset your password, enter the email address linked to your account": "要重設您的密碼,輸入連結到您的帳號的電子郵件地址",
"to restore": "要復原",
- "to start a chat with someone": "要開始與某人聊天",
"to tag direct chat": "要標記直接聊天",
"To use it, just wait for autocomplete results to load and tab through them.": "要使用它,只要等待自動完成的結果載入並在它們上面按 Tab。",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "嘗試載入此房間時間軸的特定時間點,但是問題是您沒有權限檢視相關的訊息。",
@@ -505,7 +469,6 @@
"unencrypted": "未加密",
"Unencrypted message": "未加密的訊息",
"unknown caller": "不明來電",
- "Unknown command": "未知的命令",
"unknown device": "未知的裝置",
"Unknown room %(roomId)s": "未知的房間 %(roomId)s",
"Unknown (user, device) pair:": "未知的(使用者,裝置)配對:",
@@ -568,7 +531,6 @@
"You have enabled URL previews by default.": "您已預設啟用 URL 預覽。",
"You have no visible notifications": "您沒有可見的通知",
"You may wish to login with a different account, or add this email to this account.": "您可能會想要以不同的帳號登入,或是把這個電子郵件加入到此帳號中。",
- "you must be a": "您一定是",
"You must register to use this functionality": "您必須註冊以使用此功能",
"You need to be able to invite users to do that.": "您需要邀請使用者來做這件事。",
"You need to be logged in.": "您需要登入。",
@@ -624,7 +586,6 @@
"Resend all or cancel all now. You can also select individual messages to resend or cancel.": "現在重新傳送全部或是取消全部。您也可以單獨選擇訊息來重新傳送或取消。",
"(~%(count)s results)|one": "(~%(count)s 結果)",
"(~%(count)s results)|other": "(~%(count)s 結果)",
- "or": "或",
"Active call": "活躍的通話",
"bold": "粗體",
"italic": "斜體",
@@ -785,7 +746,6 @@
"Hide avatar and display name changes": "隱藏大頭貼與顯示名稱變更",
"Integrations Error": "整合錯誤",
"Publish this room to the public in %(domain)s's room directory?": "將這個聊天室公開到 %(domain)s 的聊天室目錄中?",
- "Matrix Apps": "Matrix 應用程式",
"AM": "上午",
"PM": "下午",
"NOTE: Apps are not end-to-end encrypted": "注意:應用程式並未端到端加密",
@@ -800,35 +760,20 @@
"You do not have permission to do that in this room.": "您沒有在這個聊天室做這件事的權限。",
"Verifies a user, device, and pubkey tuple": "驗證使用者、裝置與公開金鑰變數組",
"Autocomplete Delay (ms):": "自動完成延遲(毫秒):",
- "This Home server does not support groups": "家伺服器不支援群組",
"Loading device info...": "正在載入裝置資訊……",
- "Groups": "群組",
- "Create a new group": "建立新群組",
- "Create Group": "建立群組",
- "Group Name": "群組名稱",
"Example": "範例",
"Create": "建立",
- "Group ID": "群組 ID",
- "+example:%(domain)s": "+範例:%(domain)s",
- "Group IDs must be of the form +localpart:%(domain)s": "群組 ID 必須為這種格式 +localpart:%(domain)s",
- "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "目前僅能在您自己的家伺服器上建立群組:使用以 %(domain)s 結尾的群組 ID",
"Room creation failed": "聊天室建立失敗",
- "You are a member of these groups:": "您是這些群組的成員:",
- "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "建立一個群組來代表您的社群!定義一組聊天室與您自己的自訂首頁來標記您在 Matrix 世界中的空間。",
- "Join an existing group": "加入既有的群組",
- "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "要加入既有的群組,您將會需要知道其群組識別符;其看起來會像是 +example:matrix.org。",
"Featured Rooms:": "特色聊天室:",
- "Error whilst fetching joined groups": "在擷取已加入的群組時發生錯誤",
"Featured Users:": "特色使用者:",
- "Edit Group": "編輯群組",
"Automatically replace plain text Emoji": "自動取代純文字為顏文字",
"Failed to upload image": "上傳圖片失敗",
- "Failed to update group": "更新群組失敗",
"Hide avatars in user and room mentions": "在使用者與聊天室提及中隱藏大頭貼",
"%(widgetName)s widget added by %(senderName)s": "%(widgetName)s 由 %(senderName)s 所新增",
"%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s 由 %(senderName)s 所移除",
"Robot check is currently unavailable on desktop - please use a web browser": "機器人檢查目前在桌面端不可用 ── 請使用網路瀏覽器",
"%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s 小工具已被 %(senderName)s 修改",
- "%(weekDayName)s, %(monthName)s %(day)s": "%(monthName)s%(day)s %(weekDayName)s",
- "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(fullYear)s %(monthName)s %(day)s %(weekDayName)s"
+ "Copied!": "已複製!",
+ "Failed to copy": "複製失敗",
+ "Add rooms to this community": "新增聊天室到此社群"
}
diff --git a/src/languageHandler.js b/src/languageHandler.js
index b2fc65c46d..e732927a75 100644
--- a/src/languageHandler.js
+++ b/src/languageHandler.js
@@ -19,11 +19,14 @@ import request from 'browser-request';
import counterpart from 'counterpart';
import Promise from 'bluebird';
import React from 'react';
-
-import UserSettingsStore from './UserSettingsStore';
+import SettingsStore, {SettingLevel} from "./settings/SettingsStore";
const i18nFolder = 'i18n/';
+// Control whether to also return original, untranslated strings
+// Useful for debugging and testing
+const ANNOTATE_STRINGS = false;
+
// We use english strings as keys, some of which contain full stops
counterpart.setSeparator('|');
// Fall back to English
@@ -35,12 +38,9 @@ export function _td(s) {
return s;
}
-// The translation function. This is just a simple wrapper to counterpart,
-// but exists mostly because we must use the same counterpart instance
-// between modules (ie. here (react-sdk) and the app (riot-web), and if we
-// just import counterpart and use it directly, we end up using a different
-// instance.
-export function _t(...args) {
+// Wrapper for counterpart's translation function so that it handles nulls and undefineds properly
+// Takes the same arguments as counterpart.translate()
+function safeCounterpartTranslate(...args) {
// Horrible hack to avoid https://github.com/vector-im/riot-web/issues/4191
// The interpolation library that counterpart uses does not support undefined/null
// values and instead will throw an error. This is a problem since everywhere else
@@ -51,11 +51,11 @@ export function _t(...args) {
if (args[1] && typeof args[1] === 'object') {
Object.keys(args[1]).forEach((k) => {
if (args[1][k] === undefined) {
- console.warn("_t called with undefined interpolation name: " + k);
+ console.warn("safeCounterpartTranslate called with undefined interpolation name: " + k);
args[1][k] = 'undefined';
}
if (args[1][k] === null) {
- console.warn("_t called with null interpolation name: " + k);
+ console.warn("safeCounterpartTranslate called with null interpolation name: " + k);
args[1][k] = 'null';
}
});
@@ -64,74 +64,167 @@ export function _t(...args) {
}
/*
- * Translates stringified JSX into translated JSX. E.g
- * _tJsx(
- * "click here now",
- * /(.*?)<\/a>/,
- * (sub) => { return { sub }; }
- * );
+ * Translates text and optionally also replaces XML-ish elements in the text with e.g. React components
+ * @param {string} text The untranslated text, e.g "click here now to %(foo)s".
+ * @param {object} variables Variable substitutions, e.g { foo: 'bar' }
+ * @param {object} tags Tag substitutions e.g. { 'a': (sub) => {sub} }
*
- * @param {string} jsxText The untranslated stringified JSX e.g "click here now".
- * This will be translated by passing the string through to _t(...)
+ * In both variables and tags, the values to substitute with can be either simple strings, React components,
+ * or functions that return the value to use in the substitution (e.g. return a React component). In case of
+ * a tag replacement, the function receives as the argument the text inside the element corresponding to the tag.
*
- * @param {RegExp|RegExp[]} patterns A regexp to match against the translated text.
- * The captured groups from the regexp will be fed to 'sub'.
- * Only the captured groups will be included in the output, the match itself is discarded.
- * If multiple RegExps are provided, the function at the same position will be called. The
- * match will always be done from left to right, so the 2nd RegExp will be matched against the
- * remaining text from the first RegExp.
+ * Use tag substitutions if you need to translate text between tags (e.g. "Click here!"), otherwise
+ * you will end up with literal "" in your output, rather than HTML. Note that you can also use variable
+ * substitution to insert React components, but you can't use it to translate text between tags.
*
- * @param {Function|Function[]} subs A function which will be called
- * with multiple args, each arg representing a captured group of the matching regexp.
- * This function must return a JSX node.
- *
- * @return a React component containing the generated text
+ * @return a React component if any non-strings were used in substitutions, otherwise a string
*/
-export function _tJsx(jsxText, patterns, subs) {
- // convert everything to arrays
- if (patterns instanceof RegExp) {
- patterns = [patterns];
- }
- if (subs instanceof Function) {
- subs = [subs];
- }
- // sanity checks
- if (subs.length !== patterns.length || subs.length < 1) {
- throw new Error(`_tJsx: programmer error. expected number of RegExps == number of Functions: ${subs.length} != ${patterns.length}`);
- }
- for (let i = 0; i < subs.length; i++) {
- if (!(patterns[i] instanceof RegExp)) {
- throw new Error(`_tJsx: programmer error. expected RegExp for text: ${jsxText}`);
- }
- if (!(subs[i] instanceof Function)) {
- throw new Error(`_tJsx: programmer error. expected Function for text: ${jsxText}`);
- }
- }
+export function _t(text, variables, tags) {
+ // Don't do subsitutions in counterpart. We handle it ourselves so we can replace with React components
+ // However, still pass the variables to counterpart so that it can choose the correct plural if count is given
+ // It is enough to pass the count variable, but in the future counterpart might make use of other information too
+ const args = Object.assign({ interpolate: false }, variables);
// The translation returns text so there's no XSS vector here (no unsafe HTML, no code execution)
- const tJsxText = _t(jsxText);
- const output = [tJsxText];
- for (let i = 0; i < patterns.length; i++) {
- // convert the last element in 'output' into 3 elements (pre-text, sub function, post-text).
- // Rinse and repeat for other patterns (using post-text).
- const inputText = output.pop();
- const match = inputText.match(patterns[i]);
- if (!match) {
- throw new Error(`_tJsx: translator error. expected translation to match regexp: ${patterns[i]}`);
- }
- const capturedGroups = match.slice(1);
+ const translated = safeCounterpartTranslate(text, args);
- // Return the raw translation before the *match* followed by the return value of sub() followed
- // by the raw translation after the *match* (not captured group).
- output.push(inputText.substr(0, match.index));
- output.push(subs[i].apply(null, capturedGroups));
- output.push(inputText.substr(match.index + match[0].length));
+ let substituted = substitute(translated, variables, tags);
+
+ // For development/testing purposes it is useful to also output the original string
+ // Don't do that for release versions
+ if (ANNOTATE_STRINGS) {
+ if (typeof substituted === 'string') {
+ return `@@${text}##${substituted}@@`
+ }
+ else {
+ return {substituted};
+ }
+ }
+ else {
+ return substituted;
+ }
+}
+
+/*
+ * Similar to _t(), except only does substitutions, and no translation
+ * @param {string} text The text, e.g "click here now to %(foo)s".
+ * @param {object} variables Variable substitutions, e.g { foo: 'bar' }
+ * @param {object} tags Tag substitutions e.g. { 'a': (sub) => {sub} }
+ *
+ * The values to substitute with can be either simple strings, or functions that return the value to use in
+ * the substitution (e.g. return a React component). In case of a tag replacement, the function receives as
+ * the argument the text inside the element corresponding to the tag.
+ *
+ * @return a React component if any non-strings were used in substitutions, otherwise a string
+ */
+export function substitute(text, variables, tags) {
+ const regexpMapping = {};
+
+ if (variables !== undefined) {
+ for (const variable in variables) {
+ regexpMapping[`%\\(${variable}\\)s`] = variables[variable];
+ }
}
- // this is a bit of a fudge to avoid the 'Each child in an array or iterator
- // should have a unique "key" prop' error: we explicitly pass the generated
- // nodes into React.createElement as children of a .
- return React.createElement('span', null, ...output);
+ if (tags !== undefined) {
+ for (const tag in tags) {
+ regexpMapping[`(<${tag}>(.*?)<\\/${tag}>|<${tag}>|<${tag}\\s*\\/>)`] = tags[tag];
+ }
+ }
+ return replaceByRegexes(text, regexpMapping);
+}
+
+/*
+ * Replace parts of a text using regular expressions
+ * @param {string} text The text on which to perform substitutions
+ * @param {object} mapping A mapping from regular expressions in string form to replacement string or a
+ * function which will receive as the argument the capture groups defined in the regexp. E.g.
+ * { 'Hello (.?) World': (sub) => sub.toUpperCase() }
+ *
+ * @return a React component if any non-strings were used in substitutions, otherwise a string
+ */
+export function replaceByRegexes(text, mapping) {
+ // We initially store our output as an array of strings and objects (e.g. React components).
+ // This will then be converted to a string or a at the end
+ const output = [text];
+
+ // If we insert any components we need to wrap the output in a span. React doesn't like just an array of components.
+ let shouldWrapInSpan = false;
+
+ for (const regexpString in mapping) {
+ // TODO: Cache regexps
+ const regexp = new RegExp(regexpString);
+
+ // Loop over what output we have so far and perform replacements
+ // We look for matches: if we find one, we get three parts: everything before the match, the replaced part,
+ // and everything after the match. Insert all three into the output. We need to do this because we can insert objects.
+ // Otherwise there would be no need for the splitting and we could do simple replcement.
+ let matchFoundSomewhere = false; // If we don't find a match anywhere we want to log it
+ for (const outputIndex in output) {
+ const inputText = output[outputIndex];
+ if (typeof inputText !== 'string') { // We might have inserted objects earlier, don't try to replace them
+ continue;
+ }
+
+ const match = inputText.match(regexp);
+ if (!match) {
+ continue;
+ }
+ matchFoundSomewhere = true;
+
+ const capturedGroups = match.slice(2);
+
+ // The textual part before the match
+ const head = inputText.substr(0, match.index);
+
+ // The textual part after the match
+ const tail = inputText.substr(match.index + match[0].length);
+
+ let replaced;
+ // If substitution is a function, call it
+ if (mapping[regexpString] instanceof Function) {
+ replaced = mapping[regexpString].apply(null, capturedGroups);
+ } else {
+ replaced = mapping[regexpString];
+ }
+
+ if (typeof replaced === 'object') {
+ shouldWrapInSpan = true;
+ }
+
+ output.splice(outputIndex, 1); // Remove old element
+
+ // Insert in reverse order as splice does insert-before and this way we get the final order correct
+ if (tail !== '') {
+ output.splice(outputIndex, 0, tail);
+ }
+
+ // Here we also need to check that it actually is a string before comparing against one
+ // The head and tail are always strings
+ if (typeof replaced !== 'string' || replaced !== '') {
+ output.splice(outputIndex, 0, replaced);
+ }
+
+ if (head !== '') { // Don't push empty nodes, they are of no use
+ output.splice(outputIndex, 0, head);
+ }
+ }
+ if (!matchFoundSomewhere) { // The current regexp did not match anything in the input
+ // Missing matches is entirely possible because you might choose to show some variables only in the case
+ // of e.g. plurals. It's still a bit suspicious, and could be due to an error, so log it.
+ // However, not showing count is so common that it's not worth logging. And other commonly unused variables
+ // here, if there are any.
+ if (regexpString !== '%\\(count\\)s') {
+ console.log(`Could not find ${regexp} in ${text}`);
+ }
+ }
+ }
+
+ if (shouldWrapInSpan) {
+ return React.createElement('span', null, ...output);
+ } else {
+ return output.join('');
+ }
}
// Allow overriding the text displayed when no translation exists
@@ -167,7 +260,7 @@ export function setLanguage(preferredLangs) {
}).then((langData) => {
counterpart.registerTranslations(langToUse, langData);
counterpart.setLocale(langToUse);
- UserSettingsStore.setLocalSetting('language', langToUse);
+ SettingsStore.setValue("language", null, SettingLevel.DEVICE, langToUse);
console.log("set language to " + langToUse);
// Set 'en' as fallback language:
@@ -251,6 +344,26 @@ function getLangsJson() {
});
}
+function weblateToCounterpart(inTrs) {
+ const outTrs = {};
+
+ for (const key of Object.keys(inTrs)) {
+ const keyParts = key.split('|', 2);
+ if (keyParts.length === 2) {
+ let obj = outTrs[keyParts[0]];
+ if (obj === undefined) {
+ obj = {};
+ outTrs[keyParts[0]] = obj;
+ }
+ obj[keyParts[1]] = inTrs[key];
+ } else {
+ outTrs[key] = inTrs[key];
+ }
+ }
+
+ return outTrs;
+}
+
function getLanguage(langPath) {
return new Promise((resolve, reject) => {
request(
@@ -260,7 +373,7 @@ function getLanguage(langPath) {
reject({err: err, response: response});
return;
}
- resolve(JSON.parse(body));
+ resolve(weblateToCounterpart(JSON.parse(body)));
},
);
});
diff --git a/src/settings/Settings.js b/src/settings/Settings.js
new file mode 100644
index 0000000000..07de17ccfd
--- /dev/null
+++ b/src/settings/Settings.js
@@ -0,0 +1,258 @@
+/*
+Copyright 2017 Travis Ralston
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import {_td} from '../languageHandler';
+import {
+ AudioNotificationsEnabledController,
+ NotificationBodyEnabledController,
+ NotificationsEnabledController,
+} from "./controllers/NotificationControllers";
+
+
+// These are just a bunch of helper arrays to avoid copy/pasting a bunch of times
+const LEVELS_ROOM_SETTINGS = ['device', 'room-device', 'room-account', 'account', 'config'];
+const LEVELS_ROOM_SETTINGS_WITH_ROOM = ['device', 'room-device', 'room-account', 'account', 'config', 'room'];
+const LEVELS_ACCOUNT_SETTINGS = ['device', 'account', 'config'];
+const LEVELS_FEATURE = ['device', 'config'];
+const LEVELS_DEVICE_ONLY_SETTINGS = ['device'];
+const LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG = ['device', 'config'];
+
+export const SETTINGS = {
+ // EXAMPLE SETTING:
+ // "my-setting": {
+ // // Must be set to true for features. Default is 'false'.
+ // isFeature: false,
+ //
+ // // Display names are strongly recommended for clarity.
+ // displayName: _td("Cool Name"),
+ //
+ // // Display name can also be an object for different levels.
+ // //displayName: {
+ // // "device": _td("Name for when the setting is used at 'device'"),
+ // // "room": _td("Name for when the setting is used at 'room'"),
+ // // "default": _td("The name for all other levels"),
+ // //}
+ //
+ // // The supported levels are required. Preferably, use the preset arrays
+ // // at the top of this file to define this rather than a custom array.
+ // supportedLevels: [
+ // // The order does not matter.
+ //
+ // "device", // Affects the current device only
+ // "room-device", // Affects the current room on the current device
+ // "room-account", // Affects the current room for the current account
+ // "account", // Affects the current account
+ // "room", // Affects the current room (controlled by room admins)
+ // "config", // Affects the current application
+ //
+ // // "default" is always supported and does not get listed here.
+ // ],
+ //
+ // // Required. Can be any data type. The value specified here should match
+ // // the data being stored (ie: if a boolean is used, the setting should
+ // // represent a boolean).
+ // default: {
+ // your: "value",
+ // },
+ //
+ // // Optional settings controller. See SettingsController for more information.
+ // controller: new MySettingController(),
+ //
+ // // Optional flag to make supportedLevels be respected as the order to handle
+ // // settings. The first element is treated as "most preferred". The "default"
+ // // level is always appended to the end.
+ // supportedLevelsAreOrdered: false,
+ // },
+ "feature_pinning": {
+ isFeature: true,
+ displayName: _td("Message Pinning"),
+ supportedLevels: LEVELS_FEATURE,
+ default: false,
+ },
+ "feature_presence_management": {
+ isFeature: true,
+ displayName: _td("Presence Management"),
+ supportedLevels: LEVELS_FEATURE,
+ default: false,
+ },
+ "feature_tag_panel": {
+ isFeature: true,
+ displayName: _td("Tag Panel"),
+ supportedLevels: LEVELS_FEATURE,
+ default: false,
+ },
+ "MessageComposerInput.dontSuggestEmoji": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td('Disable Emoji suggestions while typing'),
+ default: false,
+ },
+ "useCompactLayout": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td('Use compact timeline layout'),
+ default: false,
+ },
+ "hideRedactions": {
+ supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,
+ displayName: _td('Hide removed messages'),
+ default: false,
+ },
+ "hideJoinLeaves": {
+ supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,
+ displayName: _td('Hide join/leave messages (invites/kicks/bans unaffected)'),
+ default: false,
+ },
+ "hideAvatarChanges": {
+ supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,
+ displayName: _td('Hide avatar changes'),
+ default: false,
+ },
+ "hideDisplaynameChanges": {
+ supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,
+ displayName: _td('Hide display name changes'),
+ default: false,
+ },
+ "hideReadReceipts": {
+ supportedLevels: LEVELS_ROOM_SETTINGS,
+ displayName: _td('Hide read receipts'),
+ default: false,
+ },
+ "showTwelveHourTimestamps": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td('Show timestamps in 12 hour format (e.g. 2:30pm)'),
+ default: false,
+ },
+ "alwaysShowTimestamps": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td('Always show message timestamps'),
+ default: false,
+ },
+ "autoplayGifsAndVideos": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td('Autoplay GIFs and videos'),
+ default: false,
+ },
+ "enableSyntaxHighlightLanguageDetection": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td('Enable automatic language detection for syntax highlighting'),
+ default: false,
+ },
+ "Pill.shouldHidePillAvatar": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td('Hide avatars in user and room mentions'),
+ default: false,
+ },
+ "TextualBody.disableBigEmoji": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td('Disable big emoji in chat'),
+ default: false,
+ },
+ "MessageComposerInput.isRichTextEnabled": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ default: false,
+ },
+ "MessageComposer.showFormatting": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ default: false,
+ },
+ "dontSendTypingNotifications": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td("Don't send typing notifications"),
+ default: false,
+ },
+ "MessageComposerInput.autoReplaceEmoji": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td('Automatically replace plain text Emoji'),
+ default: false,
+ },
+ "VideoView.flipVideoHorizontally": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td('Mirror local video feed'),
+ default: false,
+ },
+ "theme": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ default: "light",
+ },
+ "webRtcForceTURN": {
+ supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,
+ displayName: _td('Disable Peer-to-Peer for 1:1 calls'),
+ default: false,
+ },
+ "webrtc_audioinput": {
+ supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
+ default: null,
+ },
+ "webrtc_videoinput": {
+ supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
+ default: null,
+ },
+ "language": {
+ supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,
+ default: "en",
+ },
+ "analyticsOptOut": {
+ supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,
+ displayName: _td('Opt out of analytics'),
+ default: false,
+ },
+ "autocompleteDelay": {
+ supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,
+ default: 200,
+ },
+ "blacklistUnverifiedDevices": {
+ // We specifically want to have room-device > device so that users may set a device default
+ // with a per-room override.
+ supportedLevels: ['room-device', 'device'],
+ supportedLevelsAreOrdered: true,
+ displayName: {
+ "default": _td('Never send encrypted messages to unverified devices from this device'),
+ "room-device": _td('Never send encrypted messages to unverified devices in this room from this device'),
+ },
+ default: false,
+ },
+ "urlPreviewsEnabled": {
+ supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,
+ displayName: {
+ "default": _td('Enable inline URL previews by default'),
+ "room-account": _td("Enable URL previews for this room (only affects you)"),
+ "room": _td("Enable URL previews by default for participants in this room"),
+ },
+ default: true,
+ },
+ "roomColor": {
+ supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,
+ displayName: _td("Room Colour"),
+ default: {
+ primary_color: null, // Hex string, eg: #000000
+ secondary_color: null, // Hex string, eg: #000000
+ },
+ },
+ "notificationsEnabled": {
+ supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
+ default: false,
+ controller: new NotificationsEnabledController(),
+ },
+ "notificationBodyEnabled": {
+ supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
+ default: true,
+ controller: new NotificationBodyEnabledController(),
+ },
+ "audioNotificationsEnabled": {
+ supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
+ default: true,
+ controller: new AudioNotificationsEnabledController(),
+ },
+};
diff --git a/src/settings/SettingsStore.js b/src/settings/SettingsStore.js
new file mode 100644
index 0000000000..d93a48005d
--- /dev/null
+++ b/src/settings/SettingsStore.js
@@ -0,0 +1,355 @@
+/*
+Copyright 2017 Travis Ralston
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import DeviceSettingsHandler from "./handlers/DeviceSettingsHandler";
+import RoomDeviceSettingsHandler from "./handlers/RoomDeviceSettingsHandler";
+import DefaultSettingsHandler from "./handlers/DefaultSettingsHandler";
+import RoomAccountSettingsHandler from "./handlers/RoomAccountSettingsHandler";
+import AccountSettingsHandler from "./handlers/AccountSettingsHandler";
+import RoomSettingsHandler from "./handlers/RoomSettingsHandler";
+import ConfigSettingsHandler from "./handlers/ConfigSettingsHandler";
+import {_t} from '../languageHandler';
+import SdkConfig from "../SdkConfig";
+import {SETTINGS} from "./Settings";
+import LocalEchoWrapper from "./handlers/LocalEchoWrapper";
+
+/**
+ * Represents the various setting levels supported by the SettingsStore.
+ */
+export const SettingLevel = {
+ // Note: This enum is not used in this class or in the Settings file
+ // This should always be used elsewhere in the project.
+ DEVICE: "device",
+ ROOM_DEVICE: "room-device",
+ ROOM_ACCOUNT: "room-account",
+ ACCOUNT: "account",
+ ROOM: "room",
+ CONFIG: "config",
+ DEFAULT: "default",
+};
+
+// Convert the settings to easier to manage objects for the handlers
+const defaultSettings = {};
+const featureNames = [];
+for (const key of Object.keys(SETTINGS)) {
+ defaultSettings[key] = SETTINGS[key].default;
+ if (SETTINGS[key].isFeature) featureNames.push(key);
+}
+
+const LEVEL_HANDLERS = {
+ "device": new DeviceSettingsHandler(featureNames),
+ "room-device": new RoomDeviceSettingsHandler(),
+ "room-account": new RoomAccountSettingsHandler(),
+ "account": new AccountSettingsHandler(),
+ "room": new RoomSettingsHandler(),
+ "config": new ConfigSettingsHandler(),
+ "default": new DefaultSettingsHandler(defaultSettings),
+};
+
+// Wrap all the handlers with local echo
+for (const key of Object.keys(LEVEL_HANDLERS)) {
+ LEVEL_HANDLERS[key] = new LocalEchoWrapper(LEVEL_HANDLERS[key]);
+}
+
+const LEVEL_ORDER = [
+ 'device', 'room-device', 'room-account', 'account', 'room', 'config', 'default',
+];
+
+/**
+ * Controls and manages application settings by providing varying levels at which the
+ * setting value may be specified. The levels are then used to determine what the setting
+ * value should be given a set of circumstances. The levels, in priority order, are:
+ * - "device" - Values are determined by the current device
+ * - "room-device" - Values are determined by the current device for a particular room
+ * - "room-account" - Values are determined by the current account for a particular room
+ * - "account" - Values are determined by the current account
+ * - "room" - Values are determined by a particular room (by the room admins)
+ * - "config" - Values are determined by the config.json
+ * - "default" - Values are determined by the hardcoded defaults
+ *
+ * Each level has a different method to storing the setting value. For implementation
+ * specific details, please see the handlers. The "config" and "default" levels are
+ * both always supported on all platforms. All other settings should be guarded by
+ * isLevelSupported() prior to attempting to set the value.
+ *
+ * Settings can also represent features. Features are significant portions of the
+ * application that warrant a dedicated setting to toggle them on or off. Features are
+ * special-cased to ensure that their values respect the configuration (for example, a
+ * feature may be reported as disabled even though a user has specifically requested it
+ * be enabled).
+ */
+export default class SettingsStore {
+ /**
+ * Gets the translated display name for a given setting
+ * @param {string} settingName The setting to look up.
+ * @param {"device"|"room-device"|"room-account"|"account"|"room"|"config"|"default"} atLevel
+ * The level to get the display name for; Defaults to 'default'.
+ * @return {String} The display name for the setting, or null if not found.
+ */
+ static getDisplayName(settingName, atLevel = "default") {
+ if (!SETTINGS[settingName] || !SETTINGS[settingName].displayName) return null;
+
+ let displayName = SETTINGS[settingName].displayName;
+ if (displayName instanceof Object) {
+ if (displayName[atLevel]) displayName = displayName[atLevel];
+ else displayName = displayName["default"];
+ }
+
+ return _t(displayName);
+ }
+
+ /**
+ * Returns a list of all available labs feature names
+ * @returns {string[]} The list of available feature names
+ */
+ static getLabsFeatures() {
+ const possibleFeatures = Object.keys(SETTINGS).filter((s) => SettingsStore.isFeature(s));
+
+ const enableLabs = SdkConfig.get()["enableLabs"];
+ if (enableLabs) return possibleFeatures;
+
+ return possibleFeatures.filter((s) => SettingsStore._getFeatureState(s) === "labs");
+ }
+
+ /**
+ * Determines if a setting is also a feature.
+ * @param {string} settingName The setting to look up.
+ * @return {boolean} True if the setting is a feature.
+ */
+ static isFeature(settingName) {
+ if (!SETTINGS[settingName]) return false;
+ return SETTINGS[settingName].isFeature;
+ }
+
+ /**
+ * Determines if a given feature is enabled. The feature given must be a known
+ * feature.
+ * @param {string} settingName The name of the setting that is a feature.
+ * @param {String} roomId The optional room ID to validate in, may be null.
+ * @return {boolean} True if the feature is enabled, false otherwise
+ */
+ static isFeatureEnabled(settingName, roomId = null) {
+ if (!SettingsStore.isFeature(settingName)) {
+ throw new Error("Setting " + settingName + " is not a feature");
+ }
+
+ return SettingsStore.getValue(settingName, roomId);
+ }
+
+ /**
+ * Sets a feature as enabled or disabled on the current device.
+ * @param {string} settingName The name of the setting.
+ * @param {boolean} value True to enable the feature, false otherwise.
+ * @returns {Promise} Resolves when the setting has been set.
+ */
+ static setFeatureEnabled(settingName, value) {
+ // Verify that the setting is actually a setting
+ if (!SETTINGS[settingName]) {
+ throw new Error("Setting '" + settingName + "' does not appear to be a setting.");
+ }
+ if (!SettingsStore.isFeature(settingName)) {
+ throw new Error("Setting " + settingName + " is not a feature");
+ }
+
+ return SettingsStore.setValue(settingName, null, "device", value);
+ }
+
+ /**
+ * Gets the value of a setting. The room ID is optional if the setting is not to
+ * be applied to any particular room, otherwise it should be supplied.
+ * @param {string} settingName The name of the setting to read the value of.
+ * @param {String} roomId The room ID to read the setting value in, may be null.
+ * @param {boolean} excludeDefault True to disable using the default value.
+ * @return {*} The value, or null if not found
+ */
+ static getValue(settingName, roomId = null, excludeDefault = false) {
+ // Verify that the setting is actually a setting
+ if (!SETTINGS[settingName]) {
+ throw new Error("Setting '" + settingName + "' does not appear to be a setting.");
+ }
+
+ const setting = SETTINGS[settingName];
+ const levelOrder = (setting.supportedLevelsAreOrdered ? setting.supportedLevels : LEVEL_ORDER);
+
+ return SettingsStore.getValueAt(levelOrder[0], settingName, roomId, false, excludeDefault);
+ }
+
+ /**
+ * Gets a setting's value at a particular level, ignoring all levels that are more specific.
+ * @param {"device"|"room-device"|"room-account"|"account"|"room"|"config"|"default"} level The
+ * level to look at.
+ * @param {string} settingName The name of the setting to read.
+ * @param {String} roomId The room ID to read the setting value in, may be null.
+ * @param {boolean} explicit If true, this method will not consider other levels, just the one
+ * provided. Defaults to false.
+ * @param {boolean} excludeDefault True to disable using the default value.
+ * @return {*} The value, or null if not found.
+ */
+ static getValueAt(level, settingName, roomId = null, explicit = false, excludeDefault = false) {
+ // Verify that the setting is actually a setting
+ if (!SETTINGS[settingName]) {
+ throw new Error("Setting '" + settingName + "' does not appear to be a setting.");
+ }
+
+ const setting = SETTINGS[settingName];
+ const levelOrder = (setting.supportedLevelsAreOrdered ? setting.supportedLevels : LEVEL_ORDER);
+ if (!levelOrder.includes("default")) levelOrder.push("default"); // always include default
+
+ const minIndex = levelOrder.indexOf(level);
+ if (minIndex === -1) throw new Error("Level " + level + " is not prioritized");
+
+ if (SettingsStore.isFeature(settingName)) {
+ const configValue = SettingsStore._getFeatureState(settingName);
+ if (configValue === "enable") return true;
+ if (configValue === "disable") return false;
+ // else let it fall through the default process
+ }
+
+ const handlers = SettingsStore._getHandlers(settingName);
+
+ if (explicit) {
+ const handler = handlers[level];
+ if (!handler) return SettingsStore._tryControllerOverride(settingName, level, roomId, null);
+ const value = handler.getValue(settingName, roomId);
+ return SettingsStore._tryControllerOverride(settingName, level, roomId, value);
+ }
+
+ for (let i = minIndex; i < levelOrder.length; i++) {
+ const handler = handlers[levelOrder[i]];
+ if (!handler) continue;
+ if (excludeDefault && levelOrder[i] === "default") continue;
+
+ const value = handler.getValue(settingName, roomId);
+ if (value === null || value === undefined) continue;
+ return SettingsStore._tryControllerOverride(settingName, level, roomId, value);
+ }
+
+ return SettingsStore._tryControllerOverride(settingName, level, roomId, null);
+ }
+
+ static _tryControllerOverride(settingName, level, roomId, calculatedValue) {
+ const controller = SETTINGS[settingName].controller;
+ if (!controller) return calculatedValue;
+
+ const actualValue = controller.getValueOverride(level, roomId, calculatedValue);
+ if (actualValue !== undefined && actualValue !== null) return actualValue;
+ return calculatedValue;
+ }
+
+ /**
+ * Sets the value for a setting. The room ID is optional if the setting is not being
+ * set for a particular room, otherwise it should be supplied. The value may be null
+ * to indicate that the level should no longer have an override.
+ * @param {string} settingName The name of the setting to change.
+ * @param {String} roomId The room ID to change the value in, may be null.
+ * @param {"device"|"room-device"|"room-account"|"account"|"room"} level The level
+ * to change the value at.
+ * @param {*} value The new value of the setting, may be null.
+ * @return {Promise} Resolves when the setting has been changed.
+ */
+ static setValue(settingName, roomId, level, value) {
+ // Verify that the setting is actually a setting
+ if (!SETTINGS[settingName]) {
+ throw new Error("Setting '" + settingName + "' does not appear to be a setting.");
+ }
+
+ const handler = SettingsStore._getHandler(settingName, level);
+ if (!handler) {
+ throw new Error("Setting " + settingName + " does not have a handler for " + level);
+ }
+
+ if (!handler.canSetValue(settingName, roomId)) {
+ throw new Error("User cannot set " + settingName + " at " + level + " in " + roomId);
+ }
+
+ return handler.setValue(settingName, roomId, value).then(() => {
+ const controller = SETTINGS[settingName].controller;
+ if (!controller) return;
+ controller.onChange(level, roomId, value);
+ });
+ }
+
+ /**
+ * Determines if the current user is permitted to set the given setting at the given
+ * level for a particular room. The room ID is optional if the setting is not being
+ * set for a particular room, otherwise it should be supplied.
+ * @param {string} settingName The name of the setting to check.
+ * @param {String} roomId The room ID to check in, may be null.
+ * @param {"device"|"room-device"|"room-account"|"account"|"room"} level The level to
+ * check at.
+ * @return {boolean} True if the user may set the setting, false otherwise.
+ */
+ static canSetValue(settingName, roomId, level) {
+ // Verify that the setting is actually a setting
+ if (!SETTINGS[settingName]) {
+ throw new Error("Setting '" + settingName + "' does not appear to be a setting.");
+ }
+
+ const handler = SettingsStore._getHandler(settingName, level);
+ if (!handler) return false;
+ return handler.canSetValue(settingName, roomId);
+ }
+
+ /**
+ * Determines if the given level is supported on this device.
+ * @param {"device"|"room-device"|"room-account"|"account"|"room"} level The level
+ * to check the feasibility of.
+ * @return {boolean} True if the level is supported, false otherwise.
+ */
+ static isLevelSupported(level) {
+ if (!LEVEL_HANDLERS[level]) return false;
+ return LEVEL_HANDLERS[level].isSupported();
+ }
+
+ static _getHandler(settingName, level) {
+ const handlers = SettingsStore._getHandlers(settingName);
+ if (!handlers[level]) return null;
+ return handlers[level];
+ }
+
+ static _getHandlers(settingName) {
+ if (!SETTINGS[settingName]) return {};
+
+ const handlers = {};
+ for (const level of SETTINGS[settingName].supportedLevels) {
+ if (!LEVEL_HANDLERS[level]) throw new Error("Unexpected level " + level);
+ handlers[level] = LEVEL_HANDLERS[level];
+ }
+
+ // Always support 'default'
+ if (!handlers['default']) handlers['default'] = LEVEL_HANDLERS['default'];
+
+ return handlers;
+ }
+
+ static _getFeatureState(settingName) {
+ const featuresConfig = SdkConfig.get()['features'];
+ const enableLabs = SdkConfig.get()['enableLabs']; // we'll honour the old flag
+
+ let featureState = enableLabs ? "labs" : "disable";
+ if (featuresConfig && featuresConfig[settingName] !== undefined) {
+ featureState = featuresConfig[settingName];
+ }
+
+ const allowedStates = ['enable', 'disable', 'labs'];
+ if (!allowedStates.includes(featureState)) {
+ console.warn("Feature state '" + featureState + "' is invalid for " + settingName);
+ featureState = "disable"; // to prevent accidental features.
+ }
+
+ return featureState;
+ }
+}
diff --git a/src/settings/controllers/NotificationControllers.js b/src/settings/controllers/NotificationControllers.js
new file mode 100644
index 0000000000..9dcf78e26b
--- /dev/null
+++ b/src/settings/controllers/NotificationControllers.js
@@ -0,0 +1,79 @@
+/*
+Copyright 2017 Travis Ralston
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import SettingController from "./SettingController";
+import MatrixClientPeg from '../../MatrixClientPeg';
+
+// XXX: This feels wrong.
+import PushProcessor from "matrix-js-sdk/lib/pushprocessor";
+
+function isMasterRuleEnabled() {
+ // Return the value of the master push rule as a default
+ const processor = new PushProcessor(MatrixClientPeg.get());
+ const masterRule = processor.getPushRuleById(".m.rule.master");
+
+ if (!masterRule) {
+ console.warn("No master push rule! Notifications are disabled for this user.");
+ return false;
+ }
+
+ // Why enabled == false means "enabled" is beyond me.
+ return !masterRule.enabled;
+}
+
+export class NotificationsEnabledController extends SettingController {
+ getValueOverride(level, roomId, calculatedValue) {
+ const Notifier = require('../../Notifier'); // avoids cyclical references
+ if (!Notifier.isPossible()) return false;
+
+ if (calculatedValue === null) {
+ return isMasterRuleEnabled();
+ }
+
+ return calculatedValue;
+ }
+
+ onChange(level, roomId, newValue) {
+ const Notifier = require('../../Notifier'); // avoids cyclical references
+
+ if (Notifier.supportsDesktopNotifications()) {
+ Notifier.setEnabled(newValue);
+ }
+ }
+}
+
+export class NotificationBodyEnabledController extends SettingController {
+ getValueOverride(level, roomId, calculatedValue) {
+ const Notifier = require('../../Notifier'); // avoids cyclical references
+ if (!Notifier.isPossible()) return false;
+
+ if (calculatedValue === null) {
+ return isMasterRuleEnabled();
+ }
+
+ return calculatedValue;
+ }
+}
+
+export class AudioNotificationsEnabledController extends SettingController {
+ getValueOverride(level, roomId, calculatedValue) {
+ const Notifier = require('../../Notifier'); // avoids cyclical references
+ if (!Notifier.isPossible()) return false;
+
+ // Note: Audio notifications are *not* enabled by default.
+ return calculatedValue;
+ }
+}
diff --git a/src/settings/controllers/SettingController.js b/src/settings/controllers/SettingController.js
new file mode 100644
index 0000000000..a91b616da9
--- /dev/null
+++ b/src/settings/controllers/SettingController.js
@@ -0,0 +1,49 @@
+/*
+Copyright 2017 Travis Ralston
+
+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.
+*/
+
+/**
+ * Represents a controller for individual settings to alter the reading behaviour
+ * based upon environmental conditions, or to react to changes and therefore update
+ * the working environment.
+ *
+ * This is not intended to replace the functionality of a SettingsHandler, it is only
+ * intended to handle environmental factors for specific settings.
+ */
+export default class SettingController {
+
+ /**
+ * Gets the overridden value for the setting, if any. This must return null if the
+ * value is not to be overridden, otherwise it must return the new value.
+ * @param {string} level The level at which the value was requested at.
+ * @param {String} roomId The room ID, may be null.
+ * @param {*} calculatedValue The value that the handlers think the setting should be,
+ * may be null.
+ * @return {*} The value that should be used, or null if no override is applicable.
+ */
+ getValueOverride(level, roomId, calculatedValue) {
+ return null; // no override
+ }
+
+ /**
+ * Called when the setting value has been changed.
+ * @param {string} level The level at which the setting has been modified.
+ * @param {String} roomId The room ID, may be null.
+ * @param {*} newValue The new value for the setting, may be null.
+ */
+ onChange(level, roomId, newValue) {
+ // do nothing by default
+ }
+}
diff --git a/src/settings/handlers/AccountSettingsHandler.js b/src/settings/handlers/AccountSettingsHandler.js
new file mode 100644
index 0000000000..e50358a728
--- /dev/null
+++ b/src/settings/handlers/AccountSettingsHandler.js
@@ -0,0 +1,76 @@
+/*
+Copyright 2017 Travis Ralston
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import SettingsHandler from "./SettingsHandler";
+import MatrixClientPeg from '../../MatrixClientPeg';
+
+/**
+ * Gets and sets settings at the "account" level for the current user.
+ * This handler does not make use of the roomId parameter.
+ */
+export default class AccountSettingHandler extends SettingsHandler {
+ getValue(settingName, roomId) {
+ // Special case URL previews
+ if (settingName === "urlPreviewsEnabled") {
+ const content = this._getSettings("org.matrix.preview_urls");
+
+ // Check to make sure that we actually got a boolean
+ if (typeof(content['disable']) !== "boolean") return null;
+ return !content['disable'];
+ }
+
+ let preferredValue = this._getSettings()[settingName];
+
+ if (preferredValue === null || preferredValue === undefined) {
+ // Honour the old setting on read only
+ if (settingName === "hideAvatarChanges" || settingName === "hideDisplaynameChanges") {
+ preferredValue = this._getSettings()["hideAvatarDisplaynameChanges"];
+ }
+ }
+
+ return preferredValue;
+ }
+
+ setValue(settingName, roomId, newValue) {
+ // Special case URL previews
+ if (settingName === "urlPreviewsEnabled") {
+ const content = this._getSettings("org.matrix.preview_urls");
+ content['disable'] = !newValue;
+ return MatrixClientPeg.get().setAccountData("org.matrix.preview_urls", content);
+ }
+
+ const content = this._getSettings();
+ content[settingName] = newValue;
+ return MatrixClientPeg.get().setAccountData("im.vector.web.settings", content);
+ }
+
+ canSetValue(settingName, roomId) {
+ return true; // It's their account, so they should be able to
+ }
+
+ isSupported() {
+ const cli = MatrixClientPeg.get();
+ return cli !== undefined && cli !== null;
+ }
+
+ _getSettings(eventType = "im.vector.web.settings") {
+ const cli = MatrixClientPeg.get();
+ if (!cli) return {};
+ const event = cli.getAccountData(eventType);
+ if (!event || !event.getContent()) return {};
+ return event.getContent();
+ }
+}
diff --git a/src/settings/handlers/ConfigSettingsHandler.js b/src/settings/handlers/ConfigSettingsHandler.js
new file mode 100644
index 0000000000..7a370249a7
--- /dev/null
+++ b/src/settings/handlers/ConfigSettingsHandler.js
@@ -0,0 +1,49 @@
+/*
+Copyright 2017 Travis Ralston
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import SettingsHandler from "./SettingsHandler";
+import SdkConfig from "../../SdkConfig";
+
+/**
+ * Gets and sets settings at the "config" level. This handler does not make use of the
+ * roomId parameter.
+ */
+export default class ConfigSettingsHandler extends SettingsHandler {
+ getValue(settingName, roomId) {
+ const config = SdkConfig.get() || {};
+
+ // Special case themes
+ if (settingName === "theme") {
+ return config["default_theme"];
+ }
+
+ const settingsConfig = config["settingDefaults"];
+ if (!settingsConfig || !settingsConfig[settingName]) return null;
+ return settingsConfig[settingName];
+ }
+
+ setValue(settingName, roomId, newValue) {
+ throw new Error("Cannot change settings at the config level");
+ }
+
+ canSetValue(settingName, roomId) {
+ return false;
+ }
+
+ isSupported() {
+ return true; // SdkConfig is always there
+ }
+}
diff --git a/src/settings/handlers/DefaultSettingsHandler.js b/src/settings/handlers/DefaultSettingsHandler.js
new file mode 100644
index 0000000000..cf2e660411
--- /dev/null
+++ b/src/settings/handlers/DefaultSettingsHandler.js
@@ -0,0 +1,48 @@
+/*
+Copyright 2017 Travis Ralston
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import SettingsHandler from "./SettingsHandler";
+
+/**
+ * Gets settings at the "default" level. This handler does not support setting values.
+ * This handler does not make use of the roomId parameter.
+ */
+export default class DefaultSettingsHandler extends SettingsHandler {
+ /**
+ * Creates a new default settings handler with the given defaults
+ * @param {object} defaults The default setting values, keyed by setting name.
+ */
+ constructor(defaults) {
+ super();
+ this._defaults = defaults;
+ }
+
+ getValue(settingName, roomId) {
+ return this._defaults[settingName];
+ }
+
+ setValue(settingName, roomId, newValue) {
+ throw new Error("Cannot set values on the default level handler");
+ }
+
+ canSetValue(settingName, roomId) {
+ return false;
+ }
+
+ isSupported() {
+ return true;
+ }
+}
diff --git a/src/settings/handlers/DeviceSettingsHandler.js b/src/settings/handlers/DeviceSettingsHandler.js
new file mode 100644
index 0000000000..22f6140a80
--- /dev/null
+++ b/src/settings/handlers/DeviceSettingsHandler.js
@@ -0,0 +1,114 @@
+/*
+Copyright 2017 Travis Ralston
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import Promise from 'bluebird';
+import SettingsHandler from "./SettingsHandler";
+import MatrixClientPeg from "../../MatrixClientPeg";
+
+/**
+ * Gets and sets settings at the "device" level for the current device.
+ * This handler does not make use of the roomId parameter. This handler
+ * will special-case features to support legacy settings.
+ */
+export default class DeviceSettingsHandler extends SettingsHandler {
+ /**
+ * Creates a new device settings handler
+ * @param {string[]} featureNames The names of known features.
+ */
+ constructor(featureNames) {
+ super();
+ this._featureNames = featureNames;
+ }
+
+ getValue(settingName, roomId) {
+ if (this._featureNames.includes(settingName)) {
+ return this._readFeature(settingName);
+ }
+
+ // Special case notifications
+ if (settingName === "notificationsEnabled") {
+ const value = localStorage.getItem("notifications_enabled");
+ if (typeof(value) === "string") return value === "true";
+ return null; // wrong type or otherwise not set
+ } else if (settingName === "notificationBodyEnabled") {
+ const value = localStorage.getItem("notifications_body_enabled");
+ if (typeof(value) === "string") return value === "true";
+ return null; // wrong type or otherwise not set
+ } else if (settingName === "audioNotificationsEnabled") {
+ const value = localStorage.getItem("audio_notifications_enabled");
+ if (typeof(value) === "string") return value === "true";
+ return null; // wrong type or otherwise not set
+ }
+
+ return this._getSettings()[settingName];
+ }
+
+ setValue(settingName, roomId, newValue) {
+ if (this._featureNames.includes(settingName)) {
+ this._writeFeature(settingName, newValue);
+ return Promise.resolve();
+ }
+
+ // Special case notifications
+ if (settingName === "notificationsEnabled") {
+ localStorage.setItem("notifications_enabled", newValue);
+ return Promise.resolve();
+ } else if (settingName === "notificationBodyEnabled") {
+ localStorage.setItem("notifications_body_enabled", newValue);
+ return Promise.resolve();
+ } else if (settingName === "audioNotificationsEnabled") {
+ localStorage.setItem("audio_notifications_enabled", newValue);
+ return Promise.resolve();
+ }
+
+ const settings = this._getSettings();
+ settings[settingName] = newValue;
+ localStorage.setItem("mx_local_settings", JSON.stringify(settings));
+
+ return Promise.resolve();
+ }
+
+ canSetValue(settingName, roomId) {
+ return true; // It's their device, so they should be able to
+ }
+
+ isSupported() {
+ return localStorage !== undefined && localStorage !== null;
+ }
+
+ _getSettings() {
+ const value = localStorage.getItem("mx_local_settings");
+ if (!value) return {};
+ return JSON.parse(value);
+ }
+
+ // Note: features intentionally don't use the same key as settings to avoid conflicts
+ // and to be backwards compatible.
+
+ _readFeature(featureName) {
+ if (MatrixClientPeg.get() && MatrixClientPeg.get().isGuest()) {
+ // Guests should not have any labs features enabled.
+ return {enabled: false};
+ }
+
+ const value = localStorage.getItem("mx_labs_feature_" + featureName);
+ return value === "true";
+ }
+
+ _writeFeature(featureName, enabled) {
+ localStorage.setItem("mx_labs_feature_" + featureName, enabled);
+ }
+}
diff --git a/src/settings/handlers/LocalEchoWrapper.js b/src/settings/handlers/LocalEchoWrapper.js
new file mode 100644
index 0000000000..d616edd9fb
--- /dev/null
+++ b/src/settings/handlers/LocalEchoWrapper.js
@@ -0,0 +1,69 @@
+/*
+Copyright 2017 Travis Ralston
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import Promise from "bluebird";
+import SettingsHandler from "./SettingsHandler";
+
+/**
+ * A wrapper for a SettingsHandler that performs local echo on
+ * changes to settings. This wrapper will use the underlying
+ * handler as much as possible to ensure values are not stale.
+ */
+export default class LocalEchoWrapper extends SettingsHandler {
+ /**
+ * Creates a new local echo wrapper
+ * @param {SettingsHandler} handler The handler to wrap
+ */
+ constructor(handler) {
+ super();
+ this._handler = handler;
+ this._cache = {
+ // settingName: { roomId: value }
+ };
+ }
+
+ getValue(settingName, roomId) {
+ const cacheRoomId = roomId ? roomId : "UNDEFINED"; // avoid weird keys
+ const bySetting = this._cache[settingName];
+ if (bySetting && bySetting.hasOwnProperty(cacheRoomId)) {
+ return bySetting[roomId];
+ }
+
+ return this._handler.getValue(settingName, roomId);
+ }
+
+ setValue(settingName, roomId, newValue) {
+ if (!this._cache[settingName]) this._cache[settingName] = {};
+ const bySetting = this._cache[settingName];
+
+ const cacheRoomId = roomId ? roomId : "UNDEFINED"; // avoid weird keys
+ bySetting[cacheRoomId] = newValue;
+
+ const handlerPromise = this._handler.setValue(settingName, roomId, newValue);
+ return Promise.resolve(handlerPromise).finally(() => {
+ delete bySetting[cacheRoomId];
+ });
+ }
+
+
+ canSetValue(settingName, roomId) {
+ return this._handler.canSetValue(settingName, roomId);
+ }
+
+ isSupported() {
+ return this._handler.isSupported();
+ }
+}
diff --git a/src/settings/handlers/RoomAccountSettingsHandler.js b/src/settings/handlers/RoomAccountSettingsHandler.js
new file mode 100644
index 0000000000..e946581807
--- /dev/null
+++ b/src/settings/handlers/RoomAccountSettingsHandler.js
@@ -0,0 +1,83 @@
+/*
+Copyright 2017 Travis Ralston
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import SettingsHandler from "./SettingsHandler";
+import MatrixClientPeg from '../../MatrixClientPeg';
+
+/**
+ * Gets and sets settings at the "room-account" level for the current user.
+ */
+export default class RoomAccountSettingsHandler extends SettingsHandler {
+ getValue(settingName, roomId) {
+ // Special case URL previews
+ if (settingName === "urlPreviewsEnabled") {
+ const content = this._getSettings(roomId, "org.matrix.room.preview_urls");
+
+ // Check to make sure that we actually got a boolean
+ if (typeof(content['disable']) !== "boolean") return null;
+ return !content['disable'];
+ }
+
+ // Special case room color
+ if (settingName === "roomColor") {
+ // The event content should already be in an appropriate format, we just need
+ // to get the right value.
+ return this._getSettings(roomId, "org.matrix.room.color_scheme");
+ }
+
+ return this._getSettings(roomId)[settingName];
+ }
+
+ setValue(settingName, roomId, newValue) {
+ // Special case URL previews
+ if (settingName === "urlPreviewsEnabled") {
+ const content = this._getSettings(roomId, "org.matrix.room.preview_urls");
+ content['disable'] = !newValue;
+ return MatrixClientPeg.get().setRoomAccountData(roomId, "org.matrix.room.preview_urls", content);
+ }
+
+ // Special case room color
+ if (settingName === "roomColor") {
+ // The new value should match our requirements, we just need to store it in the right place.
+ return MatrixClientPeg.get().setRoomAccountData(roomId, "org.matrix.room.color_scheme", newValue);
+ }
+
+ const content = this._getSettings(roomId);
+ content[settingName] = newValue;
+ return MatrixClientPeg.get().setRoomAccountData(roomId, "im.vector.web.settings", content);
+ }
+
+ canSetValue(settingName, roomId) {
+ const room = MatrixClientPeg.get().getRoom(roomId);
+
+ // If they have the room, they can set their own account data
+ return room !== undefined && room !== null;
+ }
+
+ isSupported() {
+ const cli = MatrixClientPeg.get();
+ return cli !== undefined && cli !== null;
+ }
+
+ _getSettings(roomId, eventType = "im.vector.settings") {
+ const room = MatrixClientPeg.get().getRoom(roomId);
+ if (!room) return {};
+
+ const event = room.getAccountData(eventType);
+ if (!event || !event.getContent()) return {};
+ return event.getContent();
+ }
+}
diff --git a/src/settings/handlers/RoomDeviceSettingsHandler.js b/src/settings/handlers/RoomDeviceSettingsHandler.js
new file mode 100644
index 0000000000..186be3041f
--- /dev/null
+++ b/src/settings/handlers/RoomDeviceSettingsHandler.js
@@ -0,0 +1,77 @@
+/*
+Copyright 2017 Travis Ralston
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import Promise from 'bluebird';
+import SettingsHandler from "./SettingsHandler";
+
+/**
+ * Gets and sets settings at the "room-device" level for the current device in a particular
+ * room.
+ */
+export default class RoomDeviceSettingsHandler extends SettingsHandler {
+ getValue(settingName, roomId) {
+ // Special case blacklist setting to use legacy values
+ if (settingName === "blacklistUnverifiedDevices") {
+ const value = this._read("mx_local_settings");
+ if (value && value['blacklistUnverifiedDevicesPerRoom']) {
+ return value['blacklistUnverifiedDevicesPerRoom'][roomId];
+ }
+ }
+
+ const value = this._read(this._getKey(settingName, roomId));
+ if (value) return value.value;
+ return null;
+ }
+
+ setValue(settingName, roomId, newValue) {
+ // Special case blacklist setting for legacy structure
+ if (settingName === "blacklistUnverifiedDevices") {
+ let value = this._read("mx_local_settings");
+ if (!value) value = {};
+ if (!value["blacklistUnverifiedDevicesPerRoom"]) value["blacklistUnverifiedDevicesPerRoom"] = {};
+ value["blacklistUnverifiedDevicesPerRoom"][roomId] = newValue;
+ localStorage.setItem("mx_local_settings", JSON.stringify(value));
+ return Promise.resolve();
+ }
+
+ if (newValue === null) {
+ localStorage.removeItem(this._getKey(settingName, roomId));
+ } else {
+ newValue = JSON.stringify({value: newValue});
+ localStorage.setItem(this._getKey(settingName, roomId), newValue);
+ }
+
+ return Promise.resolve();
+ }
+
+ canSetValue(settingName, roomId) {
+ return true; // It's their device, so they should be able to
+ }
+
+ isSupported() {
+ return localStorage !== undefined && localStorage !== null;
+ }
+
+ _read(key) {
+ const rawValue = localStorage.getItem(key);
+ if (!rawValue) return null;
+ return JSON.parse(rawValue);
+ }
+
+ _getKey(settingName, roomId) {
+ return "mx_setting_" + settingName + "_" + roomId;
+ }
+}
diff --git a/src/settings/handlers/RoomSettingsHandler.js b/src/settings/handlers/RoomSettingsHandler.js
new file mode 100644
index 0000000000..cb3e836c7f
--- /dev/null
+++ b/src/settings/handlers/RoomSettingsHandler.js
@@ -0,0 +1,73 @@
+/*
+Copyright 2017 Travis Ralston
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import SettingsHandler from "./SettingsHandler";
+import MatrixClientPeg from '../../MatrixClientPeg';
+
+/**
+ * Gets and sets settings at the "room" level.
+ */
+export default class RoomSettingsHandler extends SettingsHandler {
+ getValue(settingName, roomId) {
+ // Special case URL previews
+ if (settingName === "urlPreviewsEnabled") {
+ const content = this._getSettings(roomId, "org.matrix.room.preview_urls");
+
+ // Check to make sure that we actually got a boolean
+ if (typeof(content['disable']) !== "boolean") return null;
+ return !content['disable'];
+ }
+
+ return this._getSettings(roomId)[settingName];
+ }
+
+ setValue(settingName, roomId, newValue) {
+ // Special case URL previews
+ if (settingName === "urlPreviewsEnabled") {
+ const content = this._getSettings(roomId, "org.matrix.room.preview_urls");
+ content['disable'] = !newValue;
+ return MatrixClientPeg.get().sendStateEvent(roomId, "org.matrix.room.preview_urls", content);
+ }
+
+ const content = this._getSettings(roomId);
+ content[settingName] = newValue;
+ return MatrixClientPeg.get().sendStateEvent(roomId, "im.vector.web.settings", content, "");
+ }
+
+ canSetValue(settingName, roomId) {
+ const cli = MatrixClientPeg.get();
+ const room = cli.getRoom(roomId);
+
+ let eventType = "im.vector.web.settings";
+ if (settingName === "urlPreviewsEnabled") eventType = "org.matrix.room.preview_urls";
+
+ if (!room) return false;
+ return room.currentState.maySendStateEvent(eventType, cli.getUserId());
+ }
+
+ isSupported() {
+ const cli = MatrixClientPeg.get();
+ return cli !== undefined && cli !== null;
+ }
+
+ _getSettings(roomId, eventType = "im.vector.web.settings") {
+ const room = MatrixClientPeg.get().getRoom(roomId);
+ if (!room) return {};
+ const event = room.currentState.getStateEvents(eventType, "");
+ if (!event || !event.getContent()) return {};
+ return event.getContent();
+ }
+}
diff --git a/src/settings/handlers/SettingsHandler.js b/src/settings/handlers/SettingsHandler.js
new file mode 100644
index 0000000000..69f633c650
--- /dev/null
+++ b/src/settings/handlers/SettingsHandler.js
@@ -0,0 +1,71 @@
+/*
+Copyright 2017 Travis Ralston
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import Promise from "bluebird";
+
+/**
+ * Represents the base class for all level handlers. This class performs no logic
+ * and should be overridden.
+ */
+export default class SettingsHandler {
+ /**
+ * Gets the value for a particular setting at this level for a particular room.
+ * If no room is applicable, the roomId may be null. The roomId may not be
+ * applicable to this level and may be ignored by the handler.
+ * @param {string} settingName The name of the setting.
+ * @param {String} roomId The room ID to read from, may be null.
+ * @returns {*} The setting value, or null if not found.
+ */
+ getValue(settingName, roomId) {
+ console.error("Invalid operation: getValue was not overridden");
+ return null;
+ }
+
+ /**
+ * Sets the value for a particular setting at this level for a particular room.
+ * If no room is applicable, the roomId may be null. The roomId may not be
+ * applicable to this level and may be ignored by the handler. Setting a value
+ * to null will cause the level to remove the value. The current user should be
+ * able to set the value prior to calling this.
+ * @param {string} settingName The name of the setting to change.
+ * @param {String} roomId The room ID to set the value in, may be null.
+ * @param {*} newValue The new value for the setting, may be null.
+ * @returns {Promise} Resolves when the setting has been saved.
+ */
+ setValue(settingName, roomId, newValue) {
+ console.error("Invalid operation: setValue was not overridden");
+ return Promise.reject();
+ }
+
+ /**
+ * Determines if the current user is able to set the value of the given setting
+ * in the given room at this level.
+ * @param {string} settingName The name of the setting to check.
+ * @param {String} roomId The room ID to check in, may be null
+ * @returns {boolean} True if the setting can be set by the user, false otherwise.
+ */
+ canSetValue(settingName, roomId) {
+ return false;
+ }
+
+ /**
+ * Determines if this level is supported on this device.
+ * @returns {boolean} True if this level is supported on the current device.
+ */
+ isSupported() {
+ return false;
+ }
+}
diff --git a/src/shouldHideEvent.js b/src/shouldHideEvent.js
index 1501e28875..1ecd1ac051 100644
--- a/src/shouldHideEvent.js
+++ b/src/shouldHideEvent.js
@@ -14,6 +14,8 @@
limitations under the License.
*/
+import SettingsStore from "./settings/SettingsStore";
+
function memberEventDiff(ev) {
const diff = {
isMemberEvent: ev.getType() === 'm.room.member',
@@ -34,16 +36,19 @@ function memberEventDiff(ev) {
return diff;
}
-export default function shouldHideEvent(ev, syncedSettings) {
+export default function shouldHideEvent(ev) {
+ // Wrap getValue() for readability
+ const isEnabled = (name) => SettingsStore.getValue(name, ev.getRoomId());
+
// Hide redacted events
- if (syncedSettings['hideRedactions'] && ev.isRedacted()) return true;
+ if (isEnabled('hideRedactions') && ev.isRedacted()) return true;
const eventDiff = memberEventDiff(ev);
if (eventDiff.isMemberEvent) {
- if (syncedSettings['hideJoinLeaves'] && (eventDiff.isJoin || eventDiff.isPart)) return true;
- const isMemberAvatarDisplaynameChange = eventDiff.isAvatarChange || eventDiff.isDisplaynameChange;
- if (syncedSettings['hideAvatarDisplaynameChanges'] && isMemberAvatarDisplaynameChange) return true;
+ if (isEnabled('hideJoinLeaves') && (eventDiff.isJoin || eventDiff.isPart)) return true;
+ if (isEnabled('hideAvatarChanges') && eventDiff.isAvatarChange) return true;
+ if (isEnabled('hideDisplaynameChanges') && eventDiff.isDisplaynameChange) return true;
}
return false;
diff --git a/src/stores/FilterStore.js b/src/stores/FilterStore.js
new file mode 100644
index 0000000000..8078a13ffd
--- /dev/null
+++ b/src/stores/FilterStore.js
@@ -0,0 +1,115 @@
+/*
+Copyright 2017 Vector Creations Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+import {Store} from 'flux/utils';
+import dis from '../dispatcher';
+import Analytics from '../Analytics';
+
+const INITIAL_STATE = {
+ allTags: [],
+ selectedTags: [],
+ // Last selected tag when shift was not being pressed
+ anchorTag: null,
+};
+
+/**
+ * A class for storing application state for filtering via TagPanel.
+ */
+class FilterStore extends Store {
+ constructor() {
+ super(dis);
+
+ // Initialise state
+ this._state = INITIAL_STATE;
+ }
+
+ _setState(newState) {
+ this._state = Object.assign(this._state, newState);
+ this.__emitChange();
+ }
+
+ __onDispatch(payload) {
+ switch (payload.action) {
+ case 'all_tags' :
+ this._setState({
+ allTags: payload.tags,
+ });
+ break;
+ case 'select_tag': {
+ let newTags = [];
+ // Shift-click semantics
+ if (payload.shiftKey) {
+ // Select range of tags
+ let start = this._state.allTags.indexOf(this._state.anchorTag);
+ let end = this._state.allTags.indexOf(payload.tag);
+
+ if (start === -1) {
+ start = end;
+ }
+ if (start > end) {
+ const temp = start;
+ start = end;
+ end = temp;
+ }
+ newTags = payload.ctrlOrCmdKey ? this._state.selectedTags : [];
+ newTags = [...new Set(
+ this._state.allTags.slice(start, end + 1).concat(newTags),
+ )];
+ } else {
+ if (payload.ctrlOrCmdKey) {
+ // Toggle individual tag
+ if (this._state.selectedTags.includes(payload.tag)) {
+ newTags = this._state.selectedTags.filter((t) => t !== payload.tag);
+ } else {
+ newTags = [...this._state.selectedTags, payload.tag];
+ }
+ } else {
+ // Select individual tag
+ newTags = [payload.tag];
+ }
+ // Only set the anchor tag if the tag was previously unselected, otherwise
+ // the next range starts with an unselected tag.
+ if (!this._state.selectedTags.includes(payload.tag)) {
+ this._setState({
+ anchorTag: payload.tag,
+ });
+ }
+ }
+
+ this._setState({
+ selectedTags: newTags,
+ });
+
+ Analytics.trackEvent('FilterStore', 'select_tag');
+ }
+ break;
+ case 'deselect_tags':
+ this._setState({
+ selectedTags: [],
+ });
+ Analytics.trackEvent('FilterStore', 'deselect_tags');
+ break;
+ }
+ }
+
+ getSelectedTags() {
+ return this._state.selectedTags;
+ }
+}
+
+if (global.singletonFilterStore === undefined) {
+ global.singletonFilterStore = new FilterStore();
+}
+export default global.singletonFilterStore;
diff --git a/src/stores/FlairStore.js b/src/stores/FlairStore.js
new file mode 100644
index 0000000000..7a3aa31e4e
--- /dev/null
+++ b/src/stores/FlairStore.js
@@ -0,0 +1,189 @@
+/*
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import Promise from 'bluebird';
+
+const BULK_REQUEST_DEBOUNCE_MS = 200;
+
+// Does the server support groups? Assume yes until we receive M_UNRECOGNIZED.
+// If true, flair can function and we should keep sending requests for groups and avatars.
+let groupSupport = true;
+
+const USER_GROUPS_CACHE_BUST_MS = 1800000; // 30 mins
+const GROUP_PROFILES_CACHE_BUST_MS = 1800000; // 30 mins
+
+/**
+ * Stores data used by
+ */
+class FlairStore {
+ constructor(matrixClient) {
+ this._matrixClient = matrixClient;
+ this._userGroups = {
+ // $userId: ['+group1:domain', '+group2:domain', ...]
+ };
+ this._groupProfiles = {
+ // $groupId: {
+ // avatar_url: 'mxc://...'
+ // }
+ };
+ this._groupProfilesPromise = {
+ // $groupId: Promise
+ };
+ this._usersPending = {
+ // $userId: {
+ // prom: Promise
+ // resolve: () => {}
+ // reject: () => {}
+ // }
+ };
+ this._usersInFlight = {
+ // This has the same schema as _usersPending
+ };
+
+ this._debounceTimeoutID = null;
+ }
+
+ groupSupport() {
+ return groupSupport;
+ }
+
+ invalidatePublicisedGroups(userId) {
+ delete this._userGroups[userId];
+ }
+
+ getPublicisedGroupsCached(matrixClient, userId) {
+ if (this._userGroups[userId]) {
+ return Promise.resolve(this._userGroups[userId]);
+ }
+
+ // Bulk lookup ongoing, return promise to resolve/reject
+ if (this._usersPending[userId]) {
+ return this._usersPending[userId].prom;
+ }
+ // User has been moved from pending to in-flight
+ if (this._usersInFlight[userId]) {
+ return this._usersInFlight[userId].prom;
+ }
+
+ this._usersPending[userId] = {};
+ this._usersPending[userId].prom = new Promise((resolve, reject) => {
+ this._usersPending[userId].resolve = resolve;
+ this._usersPending[userId].reject = reject;
+ }).then((groups) => {
+ this._userGroups[userId] = groups;
+ setTimeout(() => {
+ delete this._userGroups[userId];
+ }, USER_GROUPS_CACHE_BUST_MS);
+ return this._userGroups[userId];
+ }).catch((err) => {
+ // Indicate whether the homeserver supports groups
+ if (err.errcode === 'M_UNRECOGNIZED') {
+ console.warn('Cannot display flair, server does not support groups');
+ groupSupport = false;
+ // Return silently to avoid spamming for non-supporting servers
+ return;
+ }
+ console.error('Could not get groups for user', userId, err);
+ throw err;
+ }).finally(() => {
+ delete this._usersInFlight[userId];
+ });
+
+ // This debounce will allow consecutive requests for the public groups of users that
+ // are sent in intervals of < BULK_REQUEST_DEBOUNCE_MS to be batched and only requested
+ // when no more requests are received within the next BULK_REQUEST_DEBOUNCE_MS. The naive
+ // implementation would do a request that only requested the groups for `userId`, leading
+ // to a worst and best case of 1 user per request. This implementation's worst is still
+ // 1 user per request but only if the requests are > BULK_REQUEST_DEBOUNCE_MS apart and the
+ // best case is N users per request.
+ //
+ // This is to reduce the number of requests made whilst trading off latency when viewing
+ // a Flair component.
+ if (this._debounceTimeoutID) clearTimeout(this._debounceTimeoutID);
+ this._debounceTimeoutID = setTimeout(() => {
+ this._batchedGetPublicGroups(matrixClient);
+ }, BULK_REQUEST_DEBOUNCE_MS);
+
+ return this._usersPending[userId].prom;
+ }
+
+ async _batchedGetPublicGroups(matrixClient) {
+ // Move users pending to users in flight
+ this._usersInFlight = this._usersPending;
+ this._usersPending = {};
+
+ let resp = {
+ users: [],
+ };
+ try {
+ resp = await matrixClient.getPublicisedGroups(Object.keys(this._usersInFlight));
+ } catch (err) {
+ // Propagate the same error to all usersInFlight
+ Object.keys(this._usersInFlight).forEach((userId) => {
+ // The promise should always exist for userId, but do a null-check anyway
+ if (!this._usersInFlight[userId]) return;
+ this._usersInFlight[userId].reject(err);
+ });
+ return;
+ }
+ const updatedUserGroups = resp.users;
+ Object.keys(this._usersInFlight).forEach((userId) => {
+ // The promise should always exist for userId, but do a null-check anyway
+ if (!this._usersInFlight[userId]) return;
+ this._usersInFlight[userId].resolve(updatedUserGroups[userId] || []);
+ });
+ }
+
+ async getGroupProfileCached(matrixClient, groupId) {
+ if (this._groupProfiles[groupId]) {
+ return this._groupProfiles[groupId];
+ }
+
+ // No request yet, start one
+ if (!this._groupProfilesPromise[groupId]) {
+ this._groupProfilesPromise[groupId] = matrixClient.getGroupProfile(groupId);
+ }
+
+ let profile;
+ try {
+ profile = await this._groupProfilesPromise[groupId];
+ } catch (e) {
+ console.log('Failed to get group profile for ' + groupId, e);
+ // Don't retry, but allow a retry when the profile is next requested
+ delete this._groupProfilesPromise[groupId];
+ return;
+ }
+
+ this._groupProfiles[groupId] = {
+ groupId,
+ avatarUrl: profile.avatar_url,
+ name: profile.name,
+ shortDescription: profile.short_description,
+ };
+ delete this._groupProfilesPromise[groupId];
+
+ setTimeout(() => {
+ delete this._groupProfiles[groupId];
+ }, GROUP_PROFILES_CACHE_BUST_MS);
+
+ return this._groupProfiles[groupId];
+ }
+}
+
+if (global.singletonFlairStore === undefined) {
+ global.singletonFlairStore = new FlairStore();
+}
+export default global.singletonFlairStore;
diff --git a/src/stores/GroupStore.js b/src/stores/GroupStore.js
index 73118993f9..9dce15fb53 100644
--- a/src/stores/GroupStore.js
+++ b/src/stores/GroupStore.js
@@ -15,25 +15,72 @@ limitations under the License.
*/
import EventEmitter from 'events';
+import { groupMemberFromApiObject, groupRoomFromApiObject } from '../groups';
+import FlairStore from './FlairStore';
+import MatrixClientPeg from '../MatrixClientPeg';
/**
* Stores the group summary for a room and provides an API to change it and
* other useful group APIs that may have an effect on the group summary.
*/
export default class GroupStore extends EventEmitter {
- constructor(matrixClient, groupId) {
+
+ static STATE_KEY = {
+ GroupMembers: 'GroupMembers',
+ GroupInvitedMembers: 'GroupInvitedMembers',
+ Summary: 'Summary',
+ GroupRooms: 'GroupRooms',
+ };
+
+ constructor(groupId) {
super();
+ if (!groupId) {
+ throw new Error('GroupStore needs a valid groupId to be created');
+ }
this.groupId = groupId;
- this._matrixClient = matrixClient;
this._summary = {};
this._rooms = [];
- this._fetchSummary();
- this._fetchRooms();
+ this._members = [];
+ this._invitedMembers = [];
+ this._ready = {};
+
+ this.on('error', (err) => {
+ console.error(`GroupStore for ${this.groupId} encountered error`, err);
+ });
+ }
+
+ _fetchMembers() {
+ MatrixClientPeg.get().getGroupUsers(this.groupId).then((result) => {
+ this._members = result.chunk.map((apiMember) => {
+ return groupMemberFromApiObject(apiMember);
+ });
+ this._ready[GroupStore.STATE_KEY.GroupMembers] = true;
+ this._notifyListeners();
+ }).catch((err) => {
+ console.error("Failed to get group member list: " + err);
+ this.emit('error', err);
+ });
+
+ MatrixClientPeg.get().getGroupInvitedUsers(this.groupId).then((result) => {
+ this._invitedMembers = result.chunk.map((apiMember) => {
+ return groupMemberFromApiObject(apiMember);
+ });
+ this._ready[GroupStore.STATE_KEY.GroupInvitedMembers] = true;
+ this._notifyListeners();
+ }).catch((err) => {
+ // Invited users not visible to non-members
+ if (err.httpStatus === 403) {
+ return;
+ }
+ console.error("Failed to get group invited member list: " + err);
+ this.emit('error', err);
+ });
}
_fetchSummary() {
- this._matrixClient.getGroupSummary(this.groupId).then((resp) => {
+ MatrixClientPeg.get().getGroupSummary(this.groupId).then((resp) => {
this._summary = resp;
+ this._ready[GroupStore.STATE_KEY.Summary] = true;
this._notifyListeners();
}).catch((err) => {
this.emit('error', err);
@@ -41,8 +88,11 @@ export default class GroupStore extends EventEmitter {
}
_fetchRooms() {
- this._matrixClient.getGroupRooms(this.groupId).then((resp) => {
- this._rooms = resp.chunk;
+ MatrixClientPeg.get().getGroupRooms(this.groupId).then((resp) => {
+ this._rooms = resp.chunk.map((apiRoom) => {
+ return groupRoomFromApiObject(apiRoom);
+ });
+ this._ready[GroupStore.STATE_KEY.GroupRooms] = true;
this._notifyListeners();
}).catch((err) => {
this.emit('error', err);
@@ -53,6 +103,47 @@ export default class GroupStore extends EventEmitter {
this.emit('update');
}
+ /**
+ * Register a listener to recieve updates from the store. This also
+ * immediately triggers an update to send the current state of the
+ * store (which could be the initial state).
+ *
+ * XXX: This also causes a fetch of all group data, which effectively
+ * causes 4 separate HTTP requests. This is bad, we should at least
+ * deduplicate these in order to fix:
+ * https://github.com/vector-im/riot-web/issues/5901
+ *
+ * @param {function} fn the function to call when the store updates.
+ * @return {Object} tok a registration "token" with a single
+ * property `unregister`, a function that can
+ * be called to unregister the listener such
+ * that it won't be called any more.
+ */
+ registerListener(fn) {
+ this.on('update', fn);
+ // Call to set initial state (before fetching starts)
+ this.emit('update');
+ this._fetchSummary();
+ this._fetchRooms();
+ this._fetchMembers();
+
+ // Similar to the Store of flux/utils, we return a "token" that
+ // can be used to unregister the listener.
+ return {
+ unregister: () => {
+ this.unregisterListener(fn);
+ },
+ };
+ }
+
+ unregisterListener(fn) {
+ this.removeListener('update', fn);
+ }
+
+ isStateReady(id) {
+ return this._ready[id];
+ }
+
getSummary() {
return this._summary;
}
@@ -61,47 +152,83 @@ export default class GroupStore extends EventEmitter {
return this._rooms;
}
- addRoomToGroup(roomId) {
- return this._matrixClient
- .addRoomToGroup(this.groupId, roomId)
+ getGroupMembers( ) {
+ return this._members;
+ }
+
+ getGroupInvitedMembers( ) {
+ return this._invitedMembers;
+ }
+
+ getGroupPublicity() {
+ return this._summary.user ? this._summary.user.is_publicised : null;
+ }
+
+ isUserPrivileged() {
+ return this._summary.user ? this._summary.user.is_privileged : null;
+ }
+
+ addRoomToGroup(roomId, isPublic) {
+ return MatrixClientPeg.get()
+ .addRoomToGroup(this.groupId, roomId, isPublic)
+ .then(this._fetchRooms.bind(this));
+ }
+
+ updateGroupRoomVisibility(roomId, isPublic) {
+ return MatrixClientPeg.get()
+ .updateGroupRoomVisibility(this.groupId, roomId, isPublic)
.then(this._fetchRooms.bind(this));
}
removeRoomFromGroup(roomId) {
- return this._matrixClient
+ return MatrixClientPeg.get()
.removeRoomFromGroup(this.groupId, roomId)
// Room might be in the summary, refresh just in case
.then(this._fetchSummary.bind(this))
.then(this._fetchRooms.bind(this));
}
+ inviteUserToGroup(userId) {
+ return MatrixClientPeg.get().inviteUserToGroup(this.groupId, userId)
+ .then(this._fetchMembers.bind(this));
+ }
+
+ acceptGroupInvite() {
+ return MatrixClientPeg.get().acceptGroupInvite(this.groupId)
+ // The user might be able to see more rooms now
+ .then(this._fetchRooms.bind(this))
+ // The user should now appear as a member
+ .then(this._fetchMembers.bind(this));
+ }
+
addRoomToGroupSummary(roomId, categoryId) {
- return this._matrixClient
+ return MatrixClientPeg.get()
.addRoomToGroupSummary(this.groupId, roomId, categoryId)
.then(this._fetchSummary.bind(this));
}
addUserToGroupSummary(userId, roleId) {
- return this._matrixClient
+ return MatrixClientPeg.get()
.addUserToGroupSummary(this.groupId, userId, roleId)
.then(this._fetchSummary.bind(this));
}
removeRoomFromGroupSummary(roomId) {
- return this._matrixClient
+ return MatrixClientPeg.get()
.removeRoomFromGroupSummary(this.groupId, roomId)
.then(this._fetchSummary.bind(this));
}
removeUserFromGroupSummary(userId) {
- return this._matrixClient
+ return MatrixClientPeg.get()
.removeUserFromGroupSummary(this.groupId, userId)
.then(this._fetchSummary.bind(this));
}
setGroupPublicity(isPublished) {
- return this._matrixClient
+ return MatrixClientPeg.get()
.setGroupPublicity(this.groupId, isPublished)
+ .then(() => { FlairStore.invalidatePublicisedGroups(MatrixClientPeg.get().credentials.userId); })
.then(this._fetchSummary.bind(this));
}
}
diff --git a/src/stores/GroupStoreCache.js b/src/stores/GroupStoreCache.js
index 551b155615..8b4286831b 100644
--- a/src/stores/GroupStoreCache.js
+++ b/src/stores/GroupStoreCache.js
@@ -21,20 +21,18 @@ class GroupStoreCache {
this.groupStore = null;
}
- getGroupStore(matrixClient, groupId) {
+ getGroupStore(groupId) {
if (!this.groupStore || this.groupStore.groupId !== groupId) {
// This effectively throws away the reference to any previous GroupStore,
// allowing it to be GCd once the components referencing it have stopped
// referencing it.
- this.groupStore = new GroupStore(matrixClient, groupId);
+ this.groupStore = new GroupStore(groupId);
}
- this.groupStore._fetchSummary();
return this.groupStore;
}
}
-let singletonGroupStoreCache = null;
-if (!singletonGroupStoreCache) {
- singletonGroupStoreCache = new GroupStoreCache();
+if (global.singletonGroupStoreCache === undefined) {
+ global.singletonGroupStoreCache = new GroupStoreCache();
}
-module.exports = singletonGroupStoreCache;
+export default global.singletonGroupStoreCache;
diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.js
index 795345242e..0a8eca8797 100644
--- a/src/stores/RoomViewStore.js
+++ b/src/stores/RoomViewStore.js
@@ -72,6 +72,13 @@ class RoomViewStore extends Store {
case 'view_room':
this._viewRoom(payload);
break;
+ case 'view_my_groups':
+ case 'view_group':
+ this._setState({
+ roomId: null,
+ roomAlias: null,
+ });
+ break;
case 'view_room_error':
this._viewRoomError(payload);
break;
diff --git a/src/stores/TagOrderStore.js b/src/stores/TagOrderStore.js
new file mode 100644
index 0000000000..633ffc7e9c
--- /dev/null
+++ b/src/stores/TagOrderStore.js
@@ -0,0 +1,137 @@
+/*
+Copyright 2017 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+import {Store} from 'flux/utils';
+import dis from '../dispatcher';
+
+const INITIAL_STATE = {
+ orderedTags: null,
+ orderedTagsAccountData: null,
+ hasSynced: false,
+ joinedGroupIds: null,
+};
+
+/**
+ * A class for storing application state for ordering tags in the TagPanel.
+ */
+class TagOrderStore extends Store {
+ constructor() {
+ super(dis);
+
+ // Initialise state
+ this._state = Object.assign({}, INITIAL_STATE);
+ }
+
+ _setState(newState) {
+ this._state = Object.assign(this._state, newState);
+ this.__emitChange();
+ }
+
+ __onDispatch(payload) {
+ switch (payload.action) {
+ // Initialise state after initial sync
+ case 'MatrixActions.sync': {
+ if (!(payload.prevState === 'PREPARED' && payload.state === 'SYNCING')) {
+ break;
+ }
+ const tagOrderingEvent = payload.matrixClient.getAccountData('im.vector.web.tag_ordering');
+ const tagOrderingEventContent = tagOrderingEvent ? tagOrderingEvent.getContent() : {};
+ this._setState({
+ orderedTagsAccountData: tagOrderingEventContent.tags || null,
+ hasSynced: true,
+ });
+ this._updateOrderedTags();
+ break;
+ }
+ // Get ordering from account data
+ case 'MatrixActions.accountData': {
+ if (payload.event_type !== 'im.vector.web.tag_ordering') break;
+ this._setState({
+ orderedTagsAccountData: payload.event_content ? payload.event_content.tags : null,
+ });
+ this._updateOrderedTags();
+ break;
+ }
+ // Initialise the state such that if account data is unset, default to joined groups
+ case 'GroupActions.fetchJoinedGroups.success': {
+ this._setState({
+ joinedGroupIds: payload.result.groups.sort(), // Sort lexically
+ hasFetchedJoinedGroups: true,
+ });
+ this._updateOrderedTags();
+ break;
+ }
+ // Puts payload.tag at payload.targetTag, placing the targetTag before or after the tag
+ case 'order_tag': {
+ if (!this._state.orderedTags ||
+ !payload.tag ||
+ !payload.targetTag ||
+ payload.tag === payload.targetTag
+ ) return;
+
+ const tags = this._state.orderedTags;
+
+ let orderedTags = tags.filter((t) => t !== payload.tag);
+ const newIndex = orderedTags.indexOf(payload.targetTag) + (payload.after ? 1 : 0);
+ orderedTags = [
+ ...orderedTags.slice(0, newIndex),
+ payload.tag,
+ ...orderedTags.slice(newIndex),
+ ];
+ this._setState({orderedTags});
+ break;
+ }
+ case 'on_logged_out': {
+ // Reset state without pushing an update to the view, which generally assumes that
+ // the matrix client isn't `null` and so causing a re-render will cause NPEs.
+ this._state = Object.assign({}, INITIAL_STATE);
+ break;
+ }
+ }
+ }
+
+ _updateOrderedTags() {
+ this._setState({
+ orderedTags:
+ this._state.hasSynced &&
+ this._state.hasFetchedJoinedGroups ?
+ this._mergeGroupsAndTags() : null,
+ });
+ }
+
+ _mergeGroupsAndTags() {
+ const groupIds = this._state.joinedGroupIds || [];
+ const tags = this._state.orderedTagsAccountData || [];
+
+ const tagsToKeep = tags.filter(
+ (t) => t[0] !== '+' || groupIds.includes(t),
+ );
+
+ const groupIdsToAdd = groupIds.filter(
+ (groupId) => !tags.includes(groupId),
+ );
+
+ return tagsToKeep.concat(groupIdsToAdd);
+ }
+
+ getOrderedTags() {
+ return this._state.orderedTags;
+ }
+}
+
+if (global.singletonTagOrderStore === undefined) {
+ global.singletonTagOrderStore = new TagOrderStore();
+}
+export default global.singletonTagOrderStore;
diff --git a/src/utils/MegolmExportEncryption.js b/src/utils/MegolmExportEncryption.js
index 11f9d86816..01c521da0c 100644
--- a/src/utils/MegolmExportEncryption.js
+++ b/src/utils/MegolmExportEncryption.js
@@ -116,7 +116,7 @@ export async function decryptMegolmKeyFile(data, password) {
aesKey,
ciphertext,
);
- } catch(e) {
+ } catch (e) {
throw friendlyError('subtleCrypto.decrypt failed: ' + e, cryptoFailMsg());
}
diff --git a/src/utils/MultiInviter.js b/src/utils/MultiInviter.js
index e090f3d9e2..a0f33f5c39 100644
--- a/src/utils/MultiInviter.js
+++ b/src/utils/MultiInviter.js
@@ -18,6 +18,7 @@ limitations under the License.
import MatrixClientPeg from '../MatrixClientPeg';
import {getAddressType} from '../UserAddress';
import {inviteToRoom} from '../RoomInvite';
+import GroupStoreCache from '../stores/GroupStoreCache';
import Promise from 'bluebird';
/**
@@ -117,7 +118,9 @@ export default class MultiInviter {
let doInvite;
if (this.groupId !== null) {
- doInvite = MatrixClientPeg.get().inviteUserToGroup(this.groupId, addr);
+ doInvite = GroupStoreCache
+ .getGroupStore(this.groupId)
+ .inviteUserToGroup(addr);
} else {
doInvite = inviteToRoom(this.roomId, addr);
}
diff --git a/src/utils/PinningUtils.js b/src/utils/PinningUtils.js
new file mode 100644
index 0000000000..90d26cc988
--- /dev/null
+++ b/src/utils/PinningUtils.js
@@ -0,0 +1,30 @@
+/*
+Copyright 2017 Travis Ralston
+
+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.
+*/
+
+export default class PinningUtils {
+ /**
+ * Determines if the given event may be pinned.
+ * @param {MatrixEvent} event The event to check.
+ * @return {boolean} True if the event may be pinned, false otherwise.
+ */
+ static isPinnable(event) {
+ if (!event) return false;
+ if (event.getType() !== "m.room.message") return false;
+ if (event.isRedacted()) return false;
+
+ return true;
+ }
+}
diff --git a/src/utils/createMatrixClient.js b/src/utils/createMatrixClient.js
index 2d294e262b..b83e254fad 100644
--- a/src/utils/createMatrixClient.js
+++ b/src/utils/createMatrixClient.js
@@ -23,7 +23,7 @@ const localStorage = window.localStorage;
let indexedDB;
try {
indexedDB = window.indexedDB;
-} catch(e) {}
+} catch (e) {}
/**
* Create a new matrix client, with the persistent stores set up appropriately
@@ -39,7 +39,9 @@ try {
* @returns {MatrixClient} the newly-created MatrixClient
*/
export default function createMatrixClient(opts) {
- const storeOpts = {};
+ const storeOpts = {
+ useAuthorizationHeader: true,
+ };
if (localStorage) {
storeOpts.sessionStore = new Matrix.WebStorageSessionStore(localStorage);
diff --git a/test/components/structures/MessagePanel-test.js b/test/components/structures/MessagePanel-test.js
index 4de3b7626d..e7176e2c16 100644
--- a/test/components/structures/MessagePanel-test.js
+++ b/test/components/structures/MessagePanel-test.js
@@ -14,6 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
+import SettingsStore from "../../../src/settings/SettingsStore";
+
const React = require('react');
const ReactDOM = require("react-dom");
const TestUtils = require('react-addons-test-utils');
@@ -23,7 +25,6 @@ import sinon from 'sinon';
const sdk = require('matrix-react-sdk');
const MessagePanel = sdk.getComponent('structures.MessagePanel');
-import UserSettingsStore from '../../../src/UserSettingsStore';
import MatrixClientPeg from '../../../src/MatrixClientPeg';
const test_utils = require('test-utils');
@@ -59,7 +60,9 @@ describe('MessagePanel', function() {
sandbox = test_utils.stubClient();
client = MatrixClientPeg.get();
client.credentials = {userId: '@me:here'};
- UserSettingsStore.getSyncedSettings = sinon.stub().returns({});
+
+ // HACK: We assume all settings want to be disabled
+ SettingsStore.getValue = sinon.stub().returns(false);
});
afterEach(function() {
diff --git a/test/components/views/elements/MemberEventListSummary-test.js b/test/components/views/elements/MemberEventListSummary-test.js
index 1618fe4cfe..436133c717 100644
--- a/test/components/views/elements/MemberEventListSummary-test.js
+++ b/test/components/views/elements/MemberEventListSummary-test.js
@@ -88,6 +88,9 @@ describe('MemberEventListSummary', function() {
sandbox = testUtils.stubClient();
languageHandler.setLanguage('en').done(done);
+ languageHandler.setMissingEntryGenerator(function(key) {
+ return key.split('|', 2)[1];
+ });
});
afterEach(function() {
diff --git a/test/components/views/rooms/MessageComposerInput-test.js b/test/components/views/rooms/MessageComposerInput-test.js
index faf3f0f804..1f0ede6ae2 100644
--- a/test/components/views/rooms/MessageComposerInput-test.js
+++ b/test/components/views/rooms/MessageComposerInput-test.js
@@ -6,7 +6,6 @@ import sinon from 'sinon';
import Promise from 'bluebird';
import * as testUtils from '../../../test-utils';
import sdk from 'matrix-react-sdk';
-import UserSettingsStore from '../../../../src/UserSettingsStore';
const MessageComposerInput = sdk.getComponent('views.rooms.MessageComposerInput');
import MatrixClientPeg from '../../../../src/MatrixClientPeg';
import RoomMember from 'matrix-js-sdk';
diff --git a/test/i18n-test/languageHandler-test.js b/test/i18n-test/languageHandler-test.js
new file mode 100644
index 0000000000..ce9f8e1684
--- /dev/null
+++ b/test/i18n-test/languageHandler-test.js
@@ -0,0 +1,73 @@
+const React = require('react');
+const expect = require('expect');
+import * as languageHandler from '../../src/languageHandler';
+
+const testUtils = require('../test-utils');
+
+describe('languageHandler', function() {
+ let sandbox;
+
+ beforeEach(function(done) {
+ testUtils.beforeEach(this);
+ sandbox = testUtils.stubClient();
+
+ languageHandler.setLanguage('en').done(done);
+ });
+
+ afterEach(function() {
+ sandbox.restore();
+ });
+
+ it('translates a string to german', function() {
+ languageHandler.setLanguage('de').then(function() {
+ const translated = languageHandler._t('Rooms');
+ expect(translated).toBe('Räume');
+ });
+ });
+
+ it('handles plurals', function() {
+ const text = 'and %(count)s others...';
+ expect(languageHandler._t(text, { count: 1 })).toBe('and one other...');
+ expect(languageHandler._t(text, { count: 2 })).toBe('and 2 others...');
+ });
+
+ it('handles simple variable subsitutions', function() {
+ const text = 'You are now ignoring %(userId)s';
+ expect(languageHandler._t(text, { userId: 'foo' })).toBe('You are now ignoring foo');
+ });
+
+ it('handles simple tag substitution', function() {
+ const text = 'Press to start a chat with someone';
+ expect(languageHandler._t(text, {}, { 'StartChatButton': () => 'foo' }))
+ .toBe('Press foo to start a chat with someone');
+ });
+
+ it('handles text in tags', function() {
+ const text = 'Click here to join the discussion!';
+ expect(languageHandler._t(text, {}, { 'a': (sub) => `x${sub}x` }))
+ .toBe('xClick herex to join the discussion!');
+ });
+
+ it('variable substitution with React component', function() {
+ const text = 'You are now ignoring %(userId)s';
+ expect(languageHandler._t(text, { userId: () => foo }))
+ .toEqual((You are now ignoring foo));
+ });
+
+ it('variable substitution with plain React component', function() {
+ const text = 'You are now ignoring %(userId)s';
+ expect(languageHandler._t(text, { userId: foo }))
+ .toEqual((You are now ignoring foo));
+ });
+
+ it('tag substitution with React component', function() {
+ const text = 'Press to start a chat with someone';
+ expect(languageHandler._t(text, {}, { 'StartChatButton': () => foo }))
+ .toEqual(Press foo to start a chat with someone);
+ });
+
+ it('replacements in the wrong order', function() {
+ const text = '%(var1)s %(var2)s';
+ expect(languageHandler._t(text, { var2: 'val2', var1: 'val1' })).toBe('val1 val2');
+ });
+});