Merge branch 'rav/fix_token_redirect' into rav/refactor_matrixclient_states_tmp

This commit is contained in:
Richard van der Hoff 2017-06-16 15:20:47 +01:00
commit 5f689b7929
12 changed files with 1244 additions and 160 deletions

View file

@ -35,26 +35,20 @@ import { _t } from './languageHandler';
* Called at startup, to attempt to build a logged-in Matrix session. It tries
* a number of things:
*
* 1. if we have a loginToken in the (real) query params, it uses that to log
* in.
*
* 2. if we have a guest access token in the fragment query params, it uses
* 1. if we have a guest access token in the fragment query params, it uses
* that.
*
* 3. if an access token is stored in local storage (from a previous session),
* 2. if an access token is stored in local storage (from a previous session),
* it uses that.
*
* 4. it attempts to auto-register as a guest user.
* 3. it attempts to auto-register as a guest user.
*
* If any of steps 1-4 are successful, it will call {_doSetLoggedIn}, which in
* turn will raise on_logged_in and will_start_client events.
*
* @param {object} opts
*
* @param {object} opts.realQueryParams: string->string map of the
* query-parameters extracted from the real query-string of the starting
* URI.
*
* @param {object} opts.fragmentQueryParams: string->string map of the
* query-parameters extracted from the #-fragment of the starting URI.
*
@ -70,7 +64,6 @@ import { _t } from './languageHandler';
* @returns {Promise} a promise which resolves when the above process completes.
*/
export function loadSession(opts) {
const realQueryParams = opts.realQueryParams || {};
const fragmentQueryParams = opts.fragmentQueryParams || {};
let enableGuest = opts.enableGuest || false;
const guestHsUrl = opts.guestHsUrl;
@ -82,14 +75,6 @@ export function loadSession(opts) {
enableGuest = false;
}
if (realQueryParams.loginToken) {
if (!realQueryParams.homeserver) {
console.warn("Cannot log in with token: can't determine HS URL to use");
} else {
return _loginWithToken(realQueryParams, defaultDeviceDisplayName);
}
}
if (enableGuest &&
fragmentQueryParams.guest_user_id &&
fragmentQueryParams.guest_access_token
@ -117,7 +102,26 @@ export function loadSession(opts) {
});
}
function _loginWithToken(queryParams, defaultDeviceDisplayName) {
/**
* @param {Object} queryParams string->string map of the
* query-parameters extracted from the real query-string of the starting
* URI.
*
* @param {String} defaultDeviceDisplayName
*
* @returns {Promise} promise which resolves to true if we completed the token
* login, else false
*/
export function attemptTokenLogin(queryParams, defaultDeviceDisplayName) {
if (!queryParams.loginToken) {
return q(false);
}
if (!queryParams.homeserver) {
console.warn("Cannot log in with token: can't determine HS URL to use");
return q(false);
}
// create a temporary MatrixClient to do the login
const client = Matrix.createClient({
baseUrl: queryParams.homeserver,
@ -130,17 +134,21 @@ function _loginWithToken(queryParams, defaultDeviceDisplayName) {
},
).then(function(data) {
console.log("Logged in with token");
return _doSetLoggedIn({
return _clearStorage().then(() => {
_persistCredentialsToLocalStorage({
userId: data.user_id,
deviceId: data.device_id,
accessToken: data.access_token,
homeserverUrl: queryParams.homeserver,
identityServerUrl: queryParams.identityServer,
guest: false,
}, true);
}, (err) => {
});
return true;
});
}).catch((err) => {
console.error("Failed to log in with login token: " + err + " " +
err.data);
return false;
});
}
@ -322,23 +330,10 @@ async function _doSetLoggedIn(credentials, clearStorage) {
// Resolves by default
let teamPromise = Promise.resolve(null);
// persist the session
if (localStorage) {
try {
localStorage.setItem("mx_hs_url", credentials.homeserverUrl);
localStorage.setItem("mx_is_url", credentials.identityServerUrl);
localStorage.setItem("mx_user_id", credentials.userId);
localStorage.setItem("mx_access_token", credentials.accessToken);
localStorage.setItem("mx_is_guest", JSON.stringify(credentials.guest));
// if we didn't get a deviceId from the login, leave mx_device_id unset,
// rather than setting it to "undefined".
//
// (in this case MatrixClient doesn't bother with the crypto stuff
// - that's fine for us).
if (credentials.deviceId) {
localStorage.setItem("mx_device_id", credentials.deviceId);
}
_persistCredentialsToLocalStorage(credentials);
// The user registered as a PWLU (PassWord-Less User), the generated password
// is cached here such that the user can change it at a later time.
@ -349,8 +344,6 @@ async function _doSetLoggedIn(credentials, clearStorage) {
cachedPassword: credentials.password,
});
}
console.log("Session persisted for %s", credentials.userId);
} catch (e) {
console.warn("Error using local storage: can't persist session!", e);
}
@ -379,6 +372,25 @@ async function _doSetLoggedIn(credentials, clearStorage) {
startMatrixClient();
}
function _persistCredentialsToLocalStorage(credentials) {
localStorage.setItem("mx_hs_url", credentials.homeserverUrl);
localStorage.setItem("mx_is_url", credentials.identityServerUrl);
localStorage.setItem("mx_user_id", credentials.userId);
localStorage.setItem("mx_access_token", credentials.accessToken);
localStorage.setItem("mx_is_guest", JSON.stringify(credentials.guest));
// if we didn't get a deviceId from the login, leave mx_device_id unset,
// rather than setting it to "undefined".
//
// (in this case MatrixClient doesn't bother with the crypto stuff
// - that's fine for us).
if (credentials.deviceId) {
localStorage.setItem("mx_device_id", credentials.deviceId);
}
console.log("Session persisted for %s", credentials.userId);
}
/**
* Logs the current session out and transitions to the logged-out state
*/

View file

@ -178,11 +178,18 @@ export default class Login {
}
redirectToCas() {
var client = this._createTemporaryClient();
var parsedUrl = url.parse(window.location.href, true);
const client = this._createTemporaryClient();
const parsedUrl = url.parse(window.location.href, true);
// XXX: at this point, the fragment will always be #/login, which is no
// use to anyone. Ideally, we would get the intended fragment from
// MatrixChat.screenAfterLogin so that you could follow #/room links etc
// through a CAS login.
parsedUrl.hash = "";
parsedUrl.query["homeserver"] = client.getHomeserverUrl();
parsedUrl.query["identityServer"] = client.getIdentityServerUrl();
var casUrl = client.getCasLoginUrl(url.format(parsedUrl));
const casUrl = client.getCasLoginUrl(url.format(parsedUrl));
window.location.href = casUrl;
}
}

View file

@ -93,8 +93,8 @@ module.exports = React.createClass({
// the initial queryParams extracted from the hash-fragment of the URI
startingFragmentQueryParams: React.PropTypes.object,
// called when the session load completes
onLoadCompleted: React.PropTypes.func,
// called when we have completed a token login
onTokenLoginCompleted: React.PropTypes.func,
// Represents the screen to display as a result of parsing the initial
// window.location
@ -177,7 +177,7 @@ module.exports = React.createClass({
realQueryParams: {},
startingFragmentQueryParams: {},
config: {},
onLoadCompleted: () => {},
onTokenLoginCompleted: () => {},
};
},
@ -300,25 +300,33 @@ module.exports = React.createClass({
const teamServerConfig = this.props.config.teamServerConfig || {};
Lifecycle.initRtsClient(teamServerConfig.teamServerURL);
// the first thing to do is to try the token params in the query-string
Lifecycle.attemptTokenLogin(this.props.realQueryParams).then((loggedIn) => {
if(loggedIn) {
this.props.onTokenLoginCompleted();
// don't do anything else until the page reloads - just stay in
// the 'loading' state.
return;
}
// if the user has followed a login or register link, don't reanimate
// the old creds, but rather go straight to the relevant page
const firstScreen = this.state.screenAfterLogin ?
this.state.screenAfterLogin.screen : null;
if (firstScreen === 'login' ||
firstScreen === 'register' ||
firstScreen === 'forgot_password') {
this.props.onLoadCompleted();
this.setState({loading: false});
this._showScreenAfterLogin();
return;
}
// the extra q() ensures that synchronous exceptions hit the same codepath as
// asynchronous ones.
q().then(() => {
return q().then(() => {
return Lifecycle.loadSession({
realQueryParams: this.props.realQueryParams,
fragmentQueryParams: this.props.startingFragmentQueryParams,
enableGuest: this.props.enableGuest,
guestHsUrl: this.getCurrentHsUrl(),
@ -327,11 +335,12 @@ module.exports = React.createClass({
});
}).catch((e) => {
console.error("Unable to load session", e);
}).done(()=>{
}).then(()=>{
// stuff this through the dispatcher so that it happens
// after the on_logged_in action.
dis.dispatch({action: 'load_completed'});
});
}).done();
},
componentWillUnmount: function() {
@ -417,7 +426,7 @@ module.exports = React.createClass({
MatrixClientPeg.get().leave(payload.room_id).done(() => {
modal.close();
if (this.currentRoomId === payload.room_id) {
if (this.state.currentRoomId === payload.room_id) {
dis.dispatch({action: 'view_next_room'});
}
}, (err) => {
@ -887,8 +896,6 @@ module.exports = React.createClass({
* Called when the sessionloader has finished
*/
_onLoadCompleted: function() {
this.props.onLoadCompleted();
// if we've got this far without leaving the 'loading' view, then
// login must have failed, so start the login process
if (this.state.view === VIEWS.LOADING) {

View file

@ -230,6 +230,10 @@ module.exports = React.createClass({
if (room) {
this._updateAutoComplete(room);
this.tabComplete.loadEntries(room);
this.setState({
unsentMessageError: this._getUnsentMessageError(room),
});
this._onRoomLoaded(room);
}
if (!this.state.joining && this.state.roomId) {
if (this.props.autoJoin) {
@ -262,10 +266,6 @@ module.exports = React.createClass({
} else if (room) {
// Stop peeking because we have joined this room previously
MatrixClientPeg.get().stopPeeking();
this.setState({
unsentMessageError: this._getUnsentMessageError(room),
});
this._onRoomLoaded(room);
}
},
@ -1463,7 +1463,7 @@ module.exports = React.createClass({
// We have no room object for this room, only the ID.
// We've got to this room by following a link, possibly a third party invite.
var room_alias = this.state.room_alias;
const roomAlias = this.state.roomAlias;
return (
<div className="mx_RoomView">
<RoomHeader ref="header"
@ -1476,7 +1476,7 @@ module.exports = React.createClass({
onForgetClick={ this.onForgetClick }
onRejectClick={ this.onRejectThreepidInviteButtonClicked }
canPreview={ false } error={ this.state.roomLoadError }
roomAlias={room_alias}
roomAlias={roomAlias}
spinner={previewBarSpinner}
inviterName={inviterName}
invitedEmail={invitedEmail}

View file

@ -46,6 +46,10 @@ module.exports = React.createClass({
};
},
componentWillMount: function() {
this._captchaWidgetId = null;
},
componentDidMount: function() {
// Just putting a script tag into the returned jsx doesn't work, annoyingly,
// so we do this instead.
@ -75,6 +79,10 @@ module.exports = React.createClass({
}
},
componentWillUnmount: function() {
this._resetRecaptcha();
},
_renderRecaptcha: function(divId) {
if (!global.grecaptcha) {
console.error("grecaptcha not loaded!");
@ -90,12 +98,18 @@ module.exports = React.createClass({
}
console.log("Rendering to %s", divId);
global.grecaptcha.render(divId, {
this._captchaWidgetId = global.grecaptcha.render(divId, {
sitekey: publicKey,
callback: this.props.onCaptchaResponse,
});
},
_resetRecaptcha: function() {
if (this._captchaWidgetId !== null) {
global.grecaptcha.reset(this._captchaWidgetId);
}
},
_onCaptchaLoaded: function() {
console.log("Loaded recaptcha script.");
try {

View file

@ -31,11 +31,11 @@
"Event information": "Ereignis-Informationen",
"Sender device information": "Absender Geräte Informationen",
"Displays action": "Zeigt Aktionen an",
"Bans user with given id": "Schließt den Benutzer mit der angegebenen ID aus dem Raum aus",
"Bans user with given id": "Schließt den Benutzer mit der angegebenen ID dauerhaft aus dem Raum aus",
"Deops user with given id": "Entfernt OP beim Benutzer mit der angegebenen ID",
"Invites user with given id to current room": "Lädt den Benutzer mit der angegebenen ID in den aktuellen Raum ein",
"Joins room with given alias": "Betrete Raum mit angegebenen Alias",
"Kicks user with given id": "Kickt Benutzer mit angegebener ID",
"Kicks user with given id": "Entfernt den Benutzer mit der angegebenen ID aus dem Raum",
"Changes your display nickname": "Ändert deinen angezeigten Nicknamen",
"Change Password": "Passwort ändern",
"Searches DuckDuckGo for results": "Verwendet DuckDuckGo für Suchergebnisse",
@ -66,7 +66,7 @@
"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": "Gebannte Nutzer",
"Banned users": "Dauerhaft aus dem Raum ausgeschlossene Benutzer",
"Bug Report": "Fehlerbericht",
"changed avatar": "änderte Avatar",
"changed their display name from": "änderte seinen Anzeigenamen von",
@ -116,11 +116,11 @@
"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": "Entbannen fehlgeschlagen",
"Failed to unban": "Dauerhaftes Ausschließen aus dem Raum konnte nicht aufgehoben werden",
"Failed to upload file": "Datei-Upload fehlgeschlagen",
"Favourite": "Favorit",
"favourite": "Als Favorit setzen",
"Forget room": "Raum vergessen",
"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.",
@ -205,7 +205,7 @@
"Sign out": "Abmelden",
"since the point in time of selecting this option": "ab dem Zeitpunkt, an dem diese Option gewählt wird",
"since they joined": "ab dem Zeitpunkt, an dem sie beigetreten sind",
"since they were invited": "seitdem sie eingeladen wurden",
"since they were invited": "ab dem Zeitpunkt, an dem sie eingeladen wurden",
"Someone": "Jemand",
"Start a chat": "Starte einen Chat",
"Start Chat": "Chat beginnen",
@ -221,11 +221,11 @@
"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": "Andere Matrix-Server können auf diesen Raum nicht zugreifen",
"This room's internal ID is": "Die interne ID dieses Raumes ist",
"To ban users": "Zum Nutzer bannen",
"To ban users": "Um Benutzer dauerhaft aus dem Raum auszuschließen",
"To configure the room": "Um den Raum zu konfigurieren",
"To invite users into the room": "Um Nutzer in den Raum einzuladen",
"to join the discussion": "um an der Diskussion teilzunehmen",
"To kick users": "Um Nutzer zu entfernen",
"To kick users": "Um Benutzer aus dem Raum zu entfernen",
"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.",
"Could not connect to the integration server": "Konnte keine Verbindung zum Integrations-Server herstellen",
@ -240,9 +240,9 @@
"To send messages": "Um Nachrichten zu senden",
"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": "Unfähig die Kontakt-Informationen zu löschen",
"Unable to remove contact information": "Die Kontakt-Informationen konnten nicht gelöscht werden",
"Unable to verify email address.": "Unfähig die E-Mail-Adresse zu verifizieren.",
"Unban": "Entbannen",
"Unban": "Dauerhaftes Ausschließen aus dem Raum aufheben",
"Unencrypted room": "Unverschlüsselter Raum",
"unknown error code": "Unbekannter Fehlercode",
"unknown": "unbekannt",
@ -260,10 +260,10 @@
"VoIP conference finished.": "VoIP-Konferenz wurde beendet.",
"VoIP conference started.": "VoIP-Konferenz gestartet.",
"(warning: cannot be disabled again!)": "(Warnung: Kann nicht wieder deaktiviert werden!)",
"was banned": "wurde aus dem Raum verbannt",
"was banned": "wurde dauerhaft aus dem Raum ausgeschlossen",
"was invited": "wurde eingeladen",
"was kicked": "wurde gekickt",
"was unbanned": "wurde entbannt",
"was kicked": "wurde aus dem Raum entfernt",
"was unbanned": "wurde vom dauerhaften Ausschluss aus dem Raum befreit",
"was": "wurde",
"Who can access this room?": "Wer hat Zugang zu diesem Raum?",
"Who can read history?": "Wer kann die Chat-Historie lesen?",
@ -351,7 +351,7 @@
"%(names)s and one other are typing": "%(names)s und eine weitere Person tippen",
"%(names)s and %(count)s others are typing": "%(names)s und %(count)s weitere Personen schreiben",
"%(senderName)s answered the call.": "%(senderName)s hat den Anruf angenommen.",
"%(senderName)s banned %(targetName)s.": "%(senderName)s hat %(targetName)s aus dem Raum verbannt.",
"%(senderName)s banned %(targetName)s.": "%(senderName)s hat %(targetName)s dauerhaft aus dem Raum ausgeschlossen.",
"%(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.",
@ -365,7 +365,7 @@
"%(senderName)s invited %(targetName)s.": "%(senderName)s hat %(targetName)s eingeladen.",
"%(displayName)s is typing": "%(displayName)s schreibt",
"%(targetName)s joined the room.": "%(targetName)s hat den Raum betreten.",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s kickte %(targetName)s.",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s hat %(targetName)s aus dem Raum entfernt.",
"%(targetName)s left the room.": "%(targetName)s hat den Raum verlassen.",
"%(senderName)s made future room history visible to": "%(senderName)s machte die zukünftige Raumhistorie sichtbar für",
"Missing room_id in request": "Fehlende room_id in Anfrage",
@ -389,7 +389,7 @@
"These are experimental features that may break in unexpected ways": "Dies sind experimentelle Funktionen, die in unerwarteter Weise Fehler verursachen können",
"To use it, just wait for autocomplete results to load and tab through them.": "Um diese Funktion zu nutzen, warte einfach auf die Autovervollständigungsergebnisse und benutze dann die TAB-Taste zum durchblättern.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s hat die Ende-zu-Ende-Verschlüsselung aktiviert (Algorithmus: %(algorithm)s).",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s zog Bann für %(targetName)s zurück.",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s hat das dauerhafte Ausschließen von %(targetName)s aus dem Raum aufgehoben.",
"Usage": "Verwendung",
"Use with caution": "Mit Vorsicht zu verwenden",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s hat die Einladung für %(targetName)s zurückgezogen.",
@ -550,14 +550,14 @@
"Friday": "Freitag",
"Saturday": "Samstag",
"Sunday": "Sonntag",
"Failed to forget room %(errCode)s": "Das Entfernen des Raums %(errCode)s aus deiner Liste ist fehlgeschlagen",
"Failed to forget room %(errCode)s": "Das Entfernen des Raums ist fehlgeschlagen %(errCode)s",
"Failed to join the room": "Fehler beim Betreten des Raumes",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Eine Textnachricht wurde an +%(msisdn)s gesendet. Bitte gebe den Verifikationscode ein, den er beinhaltet",
"and %(overflowCount)s others...": "und %(overflowCount)s weitere...",
"and one other...": "und ein(e) weitere(r)...",
"Are you sure?": "Bist du sicher?",
"Attachment": "Anhang",
"Ban": "Verbannen",
"Ban": "Dauerhaft aus dem Raum ausschließen",
"Can't connect to homeserver - please check your connectivity and ensure your <a>homeserver's SSL certificate</a> is trusted.": "Verbindungsaufbau zum Heimserver nicht möglich - bitte Internetverbindung überprüfen und sicherstellen, ob das <a>SSL-Zertifikat des Heimservers</a> vertrauenswürdig ist.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or <a>enable unsafe scripts</a>.": "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 <a>unsichere Skripte erlauben</a>.",
"changing room on a RoomView is not supported": "Das Ändern eines Raumes in einer RaumAnsicht wird nicht unterstützt",
@ -571,7 +571,7 @@
"Disinvite": "Einladung zurückziehen",
"Download %(text)s": "%(text)s herunterladen",
"Enter Code": "Code eingeben",
"Failed to ban user": "Bannen des Nutzers fehlgeschlagen",
"Failed to ban user": "Dauerhaftes Ausschließen des Benutzers aus dem Raum fehlgeschlagen",
"Failed to change power level": "Ändern des Berechtigungslevels fehlgeschlagen",
"Failed to delete device": "Löschen des Geräts fehlgeschlagen",
"Failed to join room": "Betreten des Raumes ist fehlgeschlagen",
@ -581,14 +581,14 @@
"Failed to save settings": "Einstellungen konnten nicht gespeichert werden",
"Failed to set display name": "Anzeigename konnte nicht gesetzt werden",
"Fill screen": "Fülle Bildschirm",
"Hide Text Formatting Toolbar": "Verberge Text-Formatierungs-Toolbar",
"Hide Text Formatting Toolbar": "Text-Formatierungs-Werkzeugleiste verbergen",
"Incorrect verification code": "Falscher Verifizierungscode",
"Invalid alias format": "Ungültiges Alias-Format",
"Invalid address format": "Ungültiges Adressformat",
"'%(alias)s' is not a valid format for an address": "'%(alias)s' ist kein gültiges Adressformat",
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' ist kein gültiges Alias-Format",
"Join Room": "Dem Raum beitreten",
"Kick": "Kicke",
"Kick": "Aus dem Raum entfernen",
"Level": "Berechtigungslevel",
"Local addresses for this room:": "Lokale Adressen dieses Raumes:",
"Markdown is disabled": "Markdown ist deaktiviert",
@ -680,12 +680,12 @@
"were invited": "wurden eingeladen",
"were banned %(repeats)s times": "wurden %(repeats)s mal aus dem Raum ausgeschlossen",
"was banned %(repeats)s times": "wurde %(repeats)s mal aus dem Raum ausgeschlossen",
"were banned": "wurden aus dem Raum ausgeschlossen",
"were unbanned %(repeats)s times": "wurden %(repeats)s mal entbannt",
"was unbanned %(repeats)s times": "wurde %(repeats)s mal entbannt",
"were unbanned": "wurden entbannt",
"were kicked %(repeats)s times": "wurden %(repeats)s mal gekickt",
"was kicked %(repeats)s times": "wurde %(repeats)s mal gekickt",
"were banned": "wurden dauerhaft aus dem Raum ausgeschlossen",
"were unbanned %(repeats)s times": "wurden %(repeats)s mal vom dauerhaften Ausschluss aus dem Raum befreit",
"was unbanned %(repeats)s times": "wurde %(repeats)s mal vom dauerhaften Ausschluss aus dem Raum befreit",
"were unbanned": "wurden vom dauerhaften Ausschluss aus dem Raum befreit",
"were kicked %(repeats)s times": "wurden %(repeats)s mal aus dem Raum entfernt",
"was kicked %(repeats)s times": "wurde %(repeats)s mal aus dem Raum entfernt",
"were kicked": "wurden aus dem Raum entfernt",
"%(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",
@ -764,7 +764,7 @@
"This allows you to use this app with an existing Matrix account on a different home server.": "Dies erlaubt dir diese App mit einem existierenden Matrix-Konto auf einem anderen Heimserver zu verwenden.",
"Dismiss": "Ablehnen",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kannst auch einen angepassten Idantitätsserver angeben aber dies wird typischerweise Interaktionen mit anderen Nutzern auf Basis der E-Mail-Adresse verhindern.",
"Please check your email to continue registration.": "Bitte prüfe deine E-Mail um mit der Registrierung fortzufahren.",
"Please check your email to continue registration.": "Bitte prüfe deine E-Mails, um mit der Registrierung fortzufahren.",
"Token incorrect": "Token inkorrekt",
"A text message has been sent to": "Eine Textnachricht wurde gesendet an",
"Please enter the code it contains:": "Bitte gebe den Code ein, den sie enthält:",
@ -795,7 +795,7 @@
"Disable URL previews by default for participants in this room": "URL-Vorschau für Teilnehmer dieses Raumes standardmäßig deaktivieren",
"URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL-Vorschau ist standardmäßig %(globalDisableUrlPreview)s für Teilnehmer dieses Raumes.",
"URL Previews": "URL-Vorschau",
"Enable URL previews for this room (affects only you)": "Aktiviere die URL-Vorschau in diesem Raum (betrifft nur dich)",
"Enable URL previews for this room (affects only you)": "URL-Vorschau in diesem Raum aktivieren (betrifft nur dich)",
"Offline": "Offline",
"Online": "Online",
" (unsupported)": " (nicht unterstützt)",
@ -944,7 +944,7 @@
"Send anyway": "Trotzdem senden",
"Set": "Setze",
"Start authentication": "Authentifizierung beginnen",
"Show Text Formatting Toolbar": "Zeige text-formatierende Werkzeugleiste",
"Show Text Formatting Toolbar": "Text-Formatierungs-Werkzeugleiste anzeigen",
"This invitation was sent to an email address which is not associated with this account:": "Diese Einledung wurde an eine E-Mail-Adresse gesendet, die nicht mit diesem Konto verknüpft ist:",
"This room": "Dieser Raum",
"To link to a room it must have <a>an address</a>.": "Um einen Raum zu verlinken, muss er <a>eine Adresse</a> haben.",
@ -959,8 +959,8 @@
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (Berechtigungslevel %(powerLevelNumber)s)",
"Verified": "Verifiziert",
"Would you like to <acceptText>accept</acceptText> or <declineText>decline</declineText> this invitation?": "Möchtest du diese Einladung <acceptText>akzeptieren</acceptText> oder <declineText>ablehnen</declineText>?",
"You have been banned from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s ausgeschlossen.",
"You have been kicked from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s gekickt.",
"You have been banned from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s dauerhaft aus dem Raum %(roomName)s ausgeschlossen.",
"You have been kicked from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s entfernt.",
"You may wish to login with a different account, or add this email to this account.": "Du möchtest dich evtl. mit einem anderen Konto anmelden oder diese E-Mail-Adresse diesem Konto hinzufügen.",
"Your home server does not support device management.": "Dein Heimserver unterstützt kein Geräte-Management.",
"(~%(count)s results).one": "(~%(count)s Ergebnis)",
@ -972,5 +972,7 @@
"Your browser does not support the required cryptography extensions": "Dein Browser unterstützt die benötigten Kryptografie-Erweiterungen nicht",
"Not a valid Riot keyfile": "Keine gültige Riot-Schlüsseldatei",
"Authentication check failed: incorrect password?": "Authentifizierung fehlgeschlagen: Falsches Passwort?",
"Disable Peer-to-Peer for 1:1 calls": "Peer-to-Peer-Verbindung für 1-zu-1-Anrufe deaktivieren"
"Disable Peer-to-Peer for 1:1 calls": "Peer-to-Peer-Verbindung für 1-zu-1-Anrufe deaktivieren",
"Do you want to set an email address?": "Möchtest du eine E-Mail-Adresse setzen?",
"This will allow you to reset your password and receive notifications.": "Dies erlaubt dir dein Passwort zurückzusetzen und Benachrichtigungen zu empfangen."
}

View file

@ -62,7 +62,7 @@
"Bug Report": "Αναφορά σφάλματος",
"anyone": "οποιοσδήποτε",
"Anyone who knows the room's link, apart from guests": "Oποιοσδήποτε",
"all room members, from the point they joined": "όλα τα μέλη του δωματίου, από τη στιγμή που συνδέθηκαν",
"all room members, from the point they joined": "όλα τα μέλη, από τη στιγμή που συνδέθηκαν",
"%(items)s and %(lastItem)s": "%(items)s %(lastItem)s",
"be": "Λευκορώσικα",
"bg": "Βουλγάρικα",
@ -170,8 +170,8 @@
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ένα μήνυμα στάλθηκε στο +%(msisdn)s. Παρακαλώ γράψε τον κωδικό επαλήθευσης που περιέχει",
"Access Token:": "Κωδικός πρόσβασης:",
"Always show message timestamps": "Εμφάνιση πάντα της ένδειξης ώρας στα μηνύματα",
"all room members": "όλα τα μέλη του δωματίου",
"all room members, from the point they are invited": "όλα τα μέλη του δωματίου, από τη στιγμή που προσκλήθηκαν",
"all room members": "όλα τα μέλη",
"all room members, from the point they are invited": "όλα τα μέλη, από τη στιγμή που προσκλήθηκαν",
"an address": "μία διεύθηνση",
"%(items)s and %(remaining)s others": "%(items)s και %(remaining)s ακόμα",
"%(items)s and one other": "%(items)s και ένας ακόμα",
@ -194,7 +194,7 @@
"%(senderDisplayName)s removed the room name.": "Ο %(senderDisplayName)s διέγραψε το όνομα του δωματίου.",
"Changes your display nickname": "Αλλάζει το ψευδώνυμο χρήστη",
"Click here": "Κάνε κλικ εδώ",
"Drop here %(toAction)s": "Απόθεση εδώ %(toAction)s",
"Drop here %(toAction)s": "Αποθέστε εδώ %(toAction)s",
"Conference call failed.": "Η κλήση συνδιάσκεψης απέτυχε.",
"powered by Matrix": "βασισμένο στο πρωτόκολλο Matrix",
"Confirm password": "Επιβεβαίωση κωδικού πρόσβασης",
@ -252,7 +252,7 @@
"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": "Δεν ήταν δυνατή η επαλήθευση του email: βεβαιωθείτε οτι κάνατε κλικ στον σύνδεσμο που σας στάλθηκε",
"Failed to verify email address: make sure you clicked the link in the email": "Δεν ήταν δυνατή η επιβεβαίωση του μηνύματος ηλεκτρονικής αλληλογραφίας βεβαιωθείτε οτι κάνατε κλικ στον σύνδεσμο που σας στάλθηκε",
"Favourite": "Αγαπημένο",
"favourite": "αγαπημένο",
"Favourites": "Αγαπημένα",
@ -287,7 +287,7 @@
"%(targetName)s joined the room.": "ο %(targetName)s συνδέθηκε στο δωμάτιο.",
"Jump to first unread message.": "Πηγαίνετε στο πρώτο μη αναγνωσμένο μήνυμα.",
"%(senderName)s kicked %(targetName)s.": "Ο %(senderName)s έδιωξε τον χρήστη %(targetName)s.",
"Kick": "Διώξε",
"Kick": "Απομάκρυνση",
"Kicks user with given id": "Διώχνει χρήστες με το συγκεκριμένο id",
"Labs": "Πειραματικά",
"Leave room": "Αποχώρηση από το δωμάτιο",
@ -465,7 +465,7 @@
"Set": "Ορισμός",
"Start authentication": "Έναρξη πιστοποίησης",
"Submit": "Υποβολή",
"Tagged as: ": "Με ετικέτα:",
"Tagged as: ": "Με ετικέτα: ",
"The default role for new room members is": "Ο προεπιλεγμένος ρόλος για νέα μέλη είναι",
"The main address for this room is": "Η κύρια διεύθυνση για το δωμάτιο είναι",
"%(actionVerb)s this person?": "%(actionVerb)s αυτού του ατόμου;",
@ -490,7 +490,7 @@
"Unable to add email address": "Αδυναμία προσθήκης διεύθυνσης ηλ. αλληλογραφίας",
"Unable to remove contact information": "Αδυναμία αφαίρεσης πληροφοριών επαφής",
"Unable to restore previous session": "Αδυναμία επαναφοράς της προηγούμενης συνεδρίας",
"Unable to verify email address.": "Αδυναμία επιβεβαίωσης διεύθυνσης ηλ. αλληλογραφίας.",
"Unable to verify email address.": "Αδυναμία επιβεβαίωσης διεύθυνσης ηλεκτρονικής αλληλογραφίας.",
"Unban": "Άρση αποκλεισμού",
"%(senderName)s unbanned %(targetName)s.": "Ο χρήστης %(senderName)s έδιωξε τον χρήστη %(targetName)s.",
"Unable to enable Notifications": "Αδυναμία ενεργοποίησης των ειδοποιήσεων",
@ -542,17 +542,17 @@
"Sat": "Σάβ",
"Jan": "Ιαν",
"Feb": "Φεβ",
"Mar": "Μάρ",
"Mar": "Μαρ",
"Apr": "Απρ",
"May": "Μάι",
"Jun": "Ιούν",
"Jul": "Ιούλ",
"Aug": "Αύγ",
"May": "Μαϊ",
"Jun": "Ιουν",
"Jul": "Ιουλ",
"Aug": "Αυγ",
"Sep": "Σεπ",
"Oct": "Οκτ",
"Nov": "Νοέ",
"Nov": "Νοε",
"Dec": "Δεκ",
"%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s",
"%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Set a display name:": "Ορισμός ονόματος εμφάνισης:",
"Set a Display Name": "Ορισμός ονόματος εμφάνισης",
@ -608,7 +608,7 @@
"Unknown devices": "Άγνωστες συσκευές",
"Unknown Address": "Άγνωστη διεύθυνση",
"Blacklist": "Μαύρη λίστα",
"Verify...": "Επαλήθευση...",
"Verify...": "Επιβεβαίωση...",
"ex. @bob:example.com": "π.χ @bob:example.com",
"Add User": "Προσθήκη χρήστη",
"Sign in with CAS": "Σύνδεση με CAS",
@ -744,7 +744,7 @@
"You have been banned from %(roomName)s by %(userName)s.": "Έχετε αποκλειστεί από το δωμάτιο %(roomName)s από τον %(userName)s.",
"You have been invited to join this room by %(inviterName)s": "Έχετε προσκληθεί να συνδεθείτε στο δωμάτιο από τον %(inviterName)s",
"You seem to be in a call, are you sure you want to quit?": "Φαίνεται ότι είστε σε μια κλήση, είστε βέβαιοι ότι θέλετε να αποχωρήσετε;",
"%(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 %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s",
"This doesn't look like a valid phone number.": "Δεν μοιάζει με έναν έγκυρο αριθμό τηλεφώνου.",
"Make this room private": "Κάντε το δωμάτιο ιδιωτικό",
"There are no visible files in this room": "Δεν υπάρχουν ορατά αρχεία σε αυτό το δωμάτιο",
@ -770,8 +770,8 @@
"%(oneUser)schanged their avatar": "Ο %(oneUser)s άλλαξε την προσωπική του εικόνα",
"Please select the destination room for this message": "Παρακαλούμε επιλέξτε ένα δωμάτιο προορισμού για αυτό το μήνυμα",
"Desktop specific": "Μόνο για επιφάνεια εργασίας",
"Analytics": "Αναλυτικά στοιχεία",
"Opt out of analytics": "Αποκλείστε τα αναλυτικά στοιχεία",
"Analytics": "Αναλυτικά δεδομένα",
"Opt out of analytics": "Αποκλεισμός αναλυτικών δεδομένων",
"Riot collects anonymous analytics to allow us to improve the application.": "Το Riot συλλέγει ανώνυμα δεδομένα επιτρέποντας μας να βελτιώσουμε την εφαρμογή.",
"Failed to invite": "Δεν ήταν δυνατή η πρόσκληση",
"Failed to invite user": "Δεν ήταν δυνατή η πρόσκληση του χρήστη",
@ -800,7 +800,7 @@
"%(senderName)s removed their display name (%(oldDisplayName)s).": "Ο %(senderName)s αφαίρεσε το όνομα εμφάνισης του (%(oldDisplayName)s).",
"%(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 ": "Συγγνώμη, ο διακομιστής χρησιμοποιεί έναν τρόπο σύνδεσης που δεν αναγνωρίζεται",
"Sorry, this homeserver is using a login which is not recognised ": "Συγγνώμη, ο διακομιστής χρησιμοποιεί έναν τρόπο σύνδεσης που δεν αναγνωρίζεται ",
"tag as %(tagName)s": "ετικέτα ως %(tagName)s",
"tag direct chat": "προσθήκη ετικέτας στην απευθείας συνομιλία",
"The phone number entered looks invalid": "Ο αριθμός που καταχωρίσατε δεν είναι έγκυρος",
@ -876,5 +876,43 @@
"If you already have a Matrix account you can <a>log in</a> instead.": "Αν έχετε ήδη λογαριασμό Matrix μπορείτε να <a>συνδεθείτε</a>.",
"Failed to load timeline position": "Δεν ήταν δυνατή η φόρτωση της θέσης του χρονολόγιου",
"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 kick": "Δεν ήταν δυνατή η απομάκρυνση",
"(no answer)": "(χωρίς απάντηση)",
"(unknown failure: %(reason)s)": "(άγνωστο σφάλμα: %(reason)s)",
"Unblacklist": "Άρση αποκλεισμού",
"Unverify": "Άρση επιβεβαίωσης",
"Ongoing conference call%(supportedText)s.": "Κλήση συνδιάσκεψης σε εξέλιξη %(supportedText)s.",
"Your browser does not support the required cryptography extensions": "Ο περιηγητής σας δεν υποστηρίζει τα απαιτούμενα πρόσθετα κρυπτογράφησης",
"Not a valid Riot keyfile": "Μη έγκυρο αρχείο κλειδιού Riot",
"Authentication check failed: incorrect password?": "Αποτυχία ελέγχου πιστοποίησης: λανθασμένος κωδικός πρόσβασης;",
"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": "Απαιτήθηκε κλειδί αποτυπώματος Ed25519",
"Displays action": "Εμφανίζει την ενέργεια",
"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.": "Η επαναφορά του κωδικού πρόσβασης θα επαναφέρει τα κλειδιά κρυπτογράφησης από άκρο σε άκρο σε όλες τις συσκευές, καθιστώντας το κρυπτογραφημένο ιστορικό συζητήσεων μη αναγνώσιμο, εκτός και αν εξάγετε πρώτα τα κλειδιά και τα εισαγάγετε ξανά στο δωμάτιο. Στο μέλλον αυτή η διαδικασία θα βελτιωθεί.",
"To use it, just wait for autocomplete results to load and tab through them.": "Για να το χρησιμοποιήσετε, απλά περιμένετε μέχρι να φορτωθούν τα αποτέλεσμα αυτόματης συμπλήρωσης. Έπειτα επιλέξτε ένα από αυτά χρησιμοποιώντας τον στηλοθέτη.",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Δεν είναι δυνατό να εξακριβωθεί ότι η διεύθυνση αυτής της πρόσκλησης στάλθηκε σε αντιστοιχία με εκείνη που σχετίζεται με το λογαριασμό σας.",
"Use compact timeline layout": "Χρήση συμπαγούς διάταξης χρονολογίου",
"(could not connect media)": "(αδυναμία σύνδεσης με το πολυμέσο)",
"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\". Αυτό σημαίνει ότι η επικοινωνία σας μπορεί να έχει υποκλαπεί!",
"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.": "Αυτή η διαδικασία σας επιτρέπει να εξαγάγετε τα κλειδιά για τα μηνύματα που έχετε λάβει σε κρυπτογραφημένα δωμάτια σε ένα τοπικό αρχείο. Στη συνέχεια, θα μπορέσετε να εισάγετε το αρχείο σε άλλο πρόγραμμα του Matrix, έτσι ώστε το πρόγραμμα να είναι σε θέση να αποκρυπτογραφήσει αυτά τα μηνύματα.",
"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.": "Αυτή η διαδικασία σας επιτρέπει να εισαγάγετε κλειδιά κρυπτογράφησης που έχετε προηγουμένως εξάγει από άλλο πρόγραμμα του Matrix. Στη συνέχεια, θα μπορέσετε να αποκρυπτογραφήσετε τυχόν μηνύματα που το άλλο πρόγραμμα θα μπορούσε να αποκρυπτογραφήσει.",
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Το αρχείο εξαγωγής θα είναι προστατευμένο με συνθηματικό. Θα χρειαστεί να πληκτρολογήσετε το συνθηματικό εδώ για να αποκρυπτογραφήσετε το αρχείο.",
"This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Με αυτόν τον τρόπο, ο λογαριασμός σας θα είναι μόνιμα αχρησιμοποίητος. Δεν θα μπορείτε να εγγραφείτε ξανά με το ίδιο αναγνωριστικό χρήστη.",
"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:": "Για να βεβαιωθείτε ότι είναι αξιόπιστη αυτή η συσκευή, επικοινωνήστε με τον κάτοχο της χρησιμοποιώντας άλλα μέσα (π.χ. προσωπικά ή μέσω τηλεφώνου) και ρωτήστε εάν το κλειδί που βλέπετε στις ρυθμίσεις χρήστη για αυτήν τη συσκευή ταιριάζει με το παρακάτω κλειδί:",
"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.": "Εάν ταιριάζει, πατήστε το κουμπί επιβεβαίωσης παρακάτω. Εάν όχι, τότε κάποιος άλλος παρακολουθεί αυτή τη συσκευή και ίσως θέλετε να πατήσετε το κουμπί της μαύρης λίστας.",
"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.": "Αν χρησιμοποιούσατε προηγουμένως μια πιο πρόσφατη έκδοση του Riot, η συνεδρία σας ίσως είναι μη συμβατή με αυτήν την έκδοση. Κλείστε αυτό το παράθυρο και επιστρέψτε στην πιο πρόσφατη έκδοση.",
"Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Το εμφανιζόμενο όνομα είναι το πως θα εμφανιστείτε σε άλλους όταν μιλάτε σε δωμάτια. Τι θα θέλατε να είναι;",
"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.": "Σας συνιστούμε να ολοκληρώσετε τη διαδικασία επαλήθευσης για κάθε συσκευή και να επιβεβαιώσετε ότι ανήκουν στον νόμιμο κάτοχό της, αλλά εάν προτιμάτε μπορείτε να στείλετε ξανά το μήνυμα χωρίς επαλήθευση.",
"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?": "Θα μεταφερθείτε σε έναν ιστότοπου τρίτου για να πραγματοποιηθεί η πιστοποίηση του λογαριασμού σας με το %(integrationsUrl)s. Θα θέλατε να συνεχίσετε;",
"Disable Peer-to-Peer for 1:1 calls": "Απενεργοποίηση του ομότιμου (Peer-to-Peer) για κλήσεις έναν προς έναν",
"Do you want to set an email address?": "Θέλετε να ορίσετε μια διεύθυνση ηλεκτρονικής αλληλογραφίας;",
"This will allow you to reset your password and receive notifications.": "Αυτό θα σας επιτρέψει να επαναφέρετε τον κωδικό πρόσβαση σας και θα μπορείτε να λαμβάνετε ειδοποιήσεις.",
"were unbanned %(repeats)s times": "ξεμπλοκαρίστηκαν %(repeats)s φορές",
"was unbanned %(repeats)s times": "ξεμπλοκαρίστηκε %(repeats)s φορές",
"were unbanned": "ξεμπλοκαρίστηκαν",
"was unbanned": "ξεμπλοκαρίστηκε"
}

View file

@ -218,7 +218,7 @@
"Devices will not yet be able to decrypt history from before they joined the room": "Los dispositivos aun no serán capaces de descifrar el historial antes de haberse unido a la sala",
"Direct Chat": "Conversación directa",
"Direct chats": "Conversaciones directas",
"Disable inline URL previews by default": "Deshabilitar previsualizacón de enlaces por defecto",
"Disable inline URL previews by default": "Desactivar previsualización de enlaces por defecto",
"Disinvite": "Deshacer invitación",
"Display name": "Nombre para mostrar",
"Displays action": "Mostrar acción",
@ -236,7 +236,7 @@
"Encrypted room": "Sala encriptada",
"%(senderName)s ended the call.": "%(senderName)s terminó la llamada.",
"End-to-end encryption information": "Información de encriptación de extremo a extremo",
"End-to-end encryption is in beta and may not be reliable": "Encriptación de extremo a extremo, esta en version beta y no podría ser confiable",
"End-to-end encryption is in beta and may not be reliable": "El cifrado de extremo a extremo está en pruebas, podría no ser fiable",
"Enter Code": "Ingresar Código",
"Error": "Error",
"Error decrypting attachment": "Error al descifrar adjunto",
@ -265,7 +265,7 @@
"Failed to set up conference call": "Falló al configurar la llamada en conferencia",
"Failed to toggle moderator status": "Falló al cambiar estatus de moderador",
"Failed to unban": "Falló al desbloquear",
"Failed to upload file": "Falló al subir archivo",
"Failed to upload file": "Error en el envío del fichero",
"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": "Falló al crear sala",
"Favourite": "Favorito",
@ -326,5 +326,162 @@
"Logged in as:": "Sesión iniciada como:",
"Login as guest": "Iniciar sesión como invitado",
"Logout": "Cerrar Sesión",
"Low priority": "Baja prioridad"
"Low priority": "Baja prioridad",
"Accept": "Aceptar",
"Add": "Añadir",
"Admin tools": "Herramientas de administración",
"VoIP": "Voz IP",
"No Microphones detected": "No se ha detectado micrófono",
"No Webcams detected": "No se ha detectado cámara",
"Default Device": "Dispositivo por defecto",
"Microphone": "Micrófono",
"Camera": "Cámara",
"Hide removed messages": "Ocultar mensajes borrados",
"Alias (optional)": "Alias (opcional)",
"Anyone": "Cualquiera",
"<a>Click here</a> to join the discussion!": "¡<a>Pulse aquí</a> para unirse a la conversación!",
"Close": "Cerrar",
"%(count)s new messages.one": "%(count)s mensaje nuevo",
"%(count)s new messages.other": "%(count)s mensajes nuevos",
"Create a new chat or reuse an existing one": "Cree una nueva conversación o reutilice una existente",
"Custom": "Personalizado",
"Custom level": "Nivel personalizado",
"Decline": "Rechazar",
"Device already verified!": "¡El dispositivo ya ha sido verificado!",
"Device ID:": "ID del dispositivo:",
"device id: ": "id del dispositvo: ",
"Disable Notifications": "Desactivar notificaciones",
"disabled": "desactivado",
"Email address (optional)": "Dirección e-mail (opcional)",
"Enable Notifications": "Activar notificaciones",
"enabled": "activado",
"Encrypted by a verified device": "Cifrado por un dispositivo verificado",
"Encrypted by an unverified device": "Cifrado por un dispositivo sin verificar",
"Encryption is enabled in this room": "Cifrado activo en esta sala",
"Encryption is not enabled in this room": "Cifrado desactivado en esta sala",
"Enter passphrase": "Introduzca contraseña",
"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",
"Incoming call from %(name)s": "Llamada de %(name)s",
"Incoming video call from %(name)s": "Video-llamada de %(name)s",
"Incoming voice call from %(name)s": "Llamada telefónica de %(name)s",
"Incorrect username and/or password.": "Usuario o contraseña incorrectos.",
"Invited": "Invitado",
"Jump to first unread message.": "Ir al primer mensaje sin leer.",
"Last seen": "Visto por última vez",
"Level:": "Nivel:",
"%(senderName)s made future room history visible to": "%(senderName)s ha configurado el historial de la sala visible para",
"a room": "una sala",
"Something went wrong!": "¡Algo ha fallado!",
"were banned": "fueron expulsados",
"was banned": "fue expulsado",
"were unbanned %(repeats)s times": "fueron readmitidos %(repeats)s veces",
"was unbanned %(repeats)s times": "fue readmitido %(repeats)s veces",
"were unbanned": "fueron readmitidos",
"was unbanned": "fue readmitido",
"were kicked %(repeats)s times": "fueron pateados %(repeats)s veces",
"was kicked %(repeats)s times": "fue pateado %(repeats)s veces",
"were kicked": "fueron pateados",
"was kicked": "fue pateado",
"%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)s cambiaron su nombre %(repeats)s veces",
"%(oneUser)schanged their name %(repeats)s times": "%(oneUser)s cambió su nombre %(repeats)s veces",
"%(severalUsers)schanged their name": "%(severalUsers)s cambiaron su nombre",
"%(oneUser)schanged their name": "%(oneUser)s cambió su nombre",
"%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)s cambiaron su avatar %(repeats)s veces",
"%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)s cambió su avatar %(repeats)s veces",
"%(severalUsers)schanged their avatar": "%(severalUsers)s cambiaron su avatar",
"%(oneUser)schanged their avatar": "%(oneUser)s cambió su avatar",
"Please select the destination room for this message": "Por favor, seleccione la sala destino para este mensaje",
"Create new room": "Crear nueva sala",
"Welcome page": "Página de bienvenida",
"Start chat": "Comenzar chat",
"New Password": "Nueva contraseña",
"Analytics": "Analíticas",
"Opt out of analytics": "No participar en las analíticas",
"Options": "Opciones",
"Passphrases must match": "Las contraseñas deben coincidir",
"Passphrase must not be empty": "La contraseña no puede estar en blanco",
"Export room keys": "Exportar las claves de la sala",
"Confirm passphrase": "Confirmar contraseña",
"Import room keys": "Importar las claves de la sala",
"File to import": "Fichero a importar",
"You must join the room to see its files": "Debe unirse a la sala para ver los ficheros",
"Reject all %(invitedRooms)s invites": "Rechazar todas las invitaciones a %(invitedRooms)s",
"Start new chat": "Iniciar una nueva conversación",
"Guest users can't invite users. Please register.": "Los invitados no pueden invitar a otros usuarios. Por favor, regístrese.",
"Failed to invite": "Fallo en la invitación",
"Failed to invite user": "No se pudo invitar al usuario",
"Failed to invite the following users to the %(roomName)s room:": "No se pudo invitar a los siguientes usuarios a la sala %(roomName)s:",
"Unknown error": "Error desconocido",
"Incorrect password": "Contraseña incorrecta",
"This action is irreversible.": "Esta acción es irreversible.",
"To continue, please enter your password.": "Para continuar, introduzca su contraseña.",
"Device name": "Nombre del dispositivo",
"Device Name": "Nombre del dispositivo",
"Device key": "Clave del dispositivo",
"In future this verification process will be more sophisticated.": "En el futuro este proceso de verificación será mejorado.",
"Verify device": "Verifique el dispositivo",
"I verify that the keys match": "Confirmo que las claves coinciden",
"Unable to restore session": "No se puede recuperar la sesión",
"Continue anyway": "Continuar igualmente",
"Room Colour": "Color de la sala",
"Room contains unknown devices": "La sala contiene dispositivos desconocidos",
"Room name (optional)": "Nombre de la sala (opcional)",
"%(roomName)s does not exist.": "%(roomName)s no existe.",
"%(roomName)s is not accessible at this time.": "%(roomName)s no es accesible en este momento.",
"Rooms": "Salas",
"Save": "Guardar",
"Scroll to bottom of page": "Bajar al final de la página",
"Scroll to unread messages": "Ir al primer mensaje sin leer",
"Search": "Búsqueda",
"Search failed": "Falló la búsqueda",
"Searching known users": "Buscando usuarios conocidos",
"Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s el %(dateTime)s",
"Send a message (unencrypted)": "Enviar un mensaje (sin cifrar)",
"Send an encrypted message": "Enviar un mensaje cifrado",
"Send anyway": "Enviar igualmente",
"Sender device information": "Información del dispositivo del remitente",
"Send Invites": "Enviar invitaciones",
"Send Reset Email": "Enviar e-mail de reinicio",
"sent an image": "envió una imagen",
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s envió una imagen.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s invitó a %(targetDisplayName)s a unirse a la sala.",
"sent a video": "envió un vídeo",
"Server error": "Error del servidor",
"Server may be unavailable, overloaded, or search timed out :(": "El servidor podría estar saturado o desconectado, o la búsqueda caducó :(",
"Server may be unavailable, overloaded, or the file too big": "El servidor podría estar saturado o desconectado, o el fichero ser demasiado grande",
"Server may be unavailable, overloaded, or you hit a bug.": "El servidor podría estar saturado o desconectado, o encontraste un fallo.",
"Server unavailable, overloaded, or something else went wrong.": "Servidor saturado, desconectado, o alguien ha roto algo.",
"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",
"Signed Out": "Desconectado",
"Sign in": "Conectar",
"Sign out": "Desconectar",
"since the point in time of selecting this option": "a partir del momento en que seleccione esta opción",
"since they joined": "desde que se conectaron",
"since they were invited": "desde que fueron invitados",
"Some of your messages have not been sent.": "Algunos de sus mensajes no han sido enviados.",
"Someone": "Alguien",
"Sorry, this homeserver is using a login which is not recognised ": "Lo siento, este servidor está usando un usuario no reconocido. ",
"Start a chat": "Iniciar una conversación",
"Start authentication": "Comenzar la identificación",
"Start Chat": "Comenzar la conversación",
"Submit": "Enviar",
"Success": "Éxito",
"tag as %(tagName)s": "etiquetar como %(tagName)s",
"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",
"The phone number entered looks invalid": "El número de teléfono indicado parece erróneo"
}

584
src/i18n/strings/ko.json Normal file
View file

@ -0,0 +1,584 @@
{
"af": "아프리칸스어",
"ar-ae": "아랍어 (아랍 에미리트 연방)",
"ar-bh": "아랍어 (바레인)",
"ar-dz": "아랍어 (알제리)",
"ar-eg": "아랍어 (이집트)",
"ar-iq": "아랍어 (이라크)",
"ar-jo": "아랍어 (요르단)",
"ar-kw": "아랍어 (쿠웨이트)",
"ar-lb": "아랍어 (레바논)",
"ar-ly": "아랍어 (리비아)",
"ar-ma": "아랍어 (모로코)",
"ar-om": "아랍어 (오만)",
"ar-qa": "아랍어 (카타르)",
"ar-sa": "아랍어 (사우디아라비아)",
"ar-sy": "아랍어 (시리아)",
"ar-tn": "아랍어 (튀니지)",
"ar-ye": "아랍어 (예멘)",
"be": "벨라루스어",
"bg": "불가리아어",
"ca": "카탈로니아어",
"cs": "체코어",
"da": "덴마크어",
"de-at": "독일어 (오스트리아)",
"de-ch": "독일어 (스위스)",
"de": "독일어",
"de-li": "독일어 (리히텐슈타인)",
"de-lu": "독일어 (룩셈부르크)",
"el": "그리스어",
"Cancel": "취소",
"Close": "닫기",
"Create new room": "새 방 만들기",
"Custom Server Options": "사용자 지정 서버 설정",
"Direct Chat": "직접 이야기하기",
"Dismiss": "없애기",
"Error": "오류",
"Mute": "알림 끄기",
"Notifications": "알림",
"Please Register": "계정을 등록해주세요",
"powered by Matrix": "매트릭스의 지원을 받고 있어요",
"Remove": "지우기",
"Room directory": "방 목록",
"Search": "찾기",
"Settings": "설정",
"Start chat": "이야기하기",
"unknown error code": "알 수 없는 오류 코드",
"Sunday": "일요일",
"Monday": "월요일",
"Tuesday": "화요일",
"Wednesday": "수요일",
"Thursday": "목요일",
"Friday": "금요일",
"Saturday": "토요일",
"OK": "알았어요",
"Welcome page": "환영 화면",
"Continue": "게속하기",
"en-au": "영어 (호주)",
"en-bz": "영어 (벨리즈)",
"en-ca": "영어 (캐나다)",
"en": "영어",
"en-gb": "영어 (영국)",
"en-ie": "영어 (아일랜드)",
"en-jm": "영어 (자메이카)",
"en-nz": "영어 (뉴질랜드)",
"en-tt": "영어 (트리니다드토바고)",
"en-us": "영어 (미국)",
"en-za": "영어 (남아프리카)",
"es-ar": "스페인어 (아르헨티나)",
"es-bo": "스페인어 (볼리비아)",
"es-cl": "스페인어 (칠레)",
"es-co": "스페인어 (콜롬비아)",
"es-cr": "스페인어 (코스타리카)",
"es-do": "스페인어 (도미니카 공화국)",
"es-ec": "스페인어 (에콰도르)",
"es-gt": "스페인어 (과테말라)",
"es-hn": "스페인어 (온두라스)",
"es-mx": "스페인어 (멕시코)",
"es-ni": "스페인어 (니카라과)",
"es-pa": "스페인어 (파나마)",
"es-pe": "스페인어 (페루)",
"es-pr": "스페인어 (푸에르토리코)",
"es-py": "스페인어 (파라과이)",
"es": "스페인어 (스페인)",
"es-sv": "스페인어 (엘살바도르)",
"es-uy": "스페인어 (우루과이)",
"es-ve": "스페인어 (베네수엘라)",
"et": "에스토니아어",
"eu": "바스크어 (바스크)",
"fa": "페르시아어",
"fi": "핀란드어",
"fo": "페로스어",
"fr-be": "프랑스어 (벨기에)",
"fr-ca": "프랑스어 (캐나다)",
"fr-ch": "프랑스어 (스위스)",
"fr": "프랑스어",
"fr-lu": "프랑스어 (룩셈부르크)",
"ga": "아일랜드어",
"gd": "게일어 (스코틀랜드)",
"he": "히브리어",
"hi": "힌디어",
"hr": "크로아티아어",
"hu": "헝가리어",
"id": "인도네시아어",
"is": "아이슬란드어",
"it-ch": "이탈리아어 (스위스)",
"it": "이탈리아어",
"ja": "일본어",
"ji": "이디시어",
"ko": "한국어",
"lt": "리투아니아어",
"lv": "라트비아어",
"mk": "마케도니아어 (마케도니아 공화국)",
"ms": "말레이시아어",
"mt": "몰타어",
"nl-be": "네덜란드어 (벨기에)",
"nl": "네덜란드어",
"no": "노르웨이어",
"pl": "폴란드어",
"pt-br": "브라질 포르투갈어",
"pt": "포르투갈어",
"rm": "레토로만어",
"ro-mo": "루마니아어 (몰도바 공화국)",
"ro": "루마니아어",
"ru-mo": "러시아어 (몰도바 공확국)",
"ru": "러시아어",
"sb": "소르비아어",
"sk": "슬로바키아어",
"sr": "세르비아어",
"sv-fi": "스웨덴어 (핀란드)",
"sv": "스웨덴어",
"sx": "수투어",
"sz": "라플란드어 (라플란드)",
"th": "태국",
"tn": "츠와나어",
"tr": "터키어",
"ts": "총가어",
"uk": "우크라이나어",
"ur": "우르두어",
"ve": "벤다어",
"vi": "베트남어",
"xh": "코사어",
"zh-cn": "중국어 (중국)",
"zh-hk": "중국어 (홍콩)",
"zh-sg": "중국어 (싱가포르)",
"zh-tw": "중국어 (대만)",
"zu": "줄루어",
"a room": "방",
"Accept": "수락",
"Account": "계정",
"Add": "추가하기",
"Add email address": "이메일 주소 추가하기",
"Add phone number": "전화번호 추가하기",
"Admin": "관리자",
"Admin tools": "관리 도구",
"VoIP": "인터넷전화",
"No Microphones detected": "마이크를 찾지 못했어요",
"No Webcams detected": "카메라를 찾지 못했어요",
"No media permissions": "저장소 권한이 없어요",
"Default Device": "기본 장치",
"Microphone": "마이크",
"Camera": "카메라",
"Advanced": "고급",
"Algorithm": "알고리즘",
"Hide removed messages": "지운 메시지 숨기기",
"Always show message timestamps": "항상 메시지에 시간을 보이기",
"Authentication": "인증",
"Alias (optional)": "별명 (선택)",
"and": "그리고",
"A new password must be entered.": "새 비밀번호를 입력해주세요.",
"An error has occurred.": "오류가 일어났어요.",
"Anyone": "누구나",
"anyone": "누구나",
"Are you sure?": "정말이세요?",
"Are you sure you want to leave the room '%(roomName)s'?": "정말로 '%(roomName)s'를 떠나시겠어요?",
"Attachment": "붙이기",
"Are you sure you want to upload the following files?": "다음 파일들을 올리시겠어요?",
"Autoplay GIFs and videos": "GIF와 동영상을 자동으로 재생하기",
"Ban": "차단",
"Banned users": "차단한 사용자",
"Blacklisted": "요주인물들",
"Bug Report": "오류 보고",
"Can't load user settings": "사용사 설정을 불러올 수 없어요",
"Change Password": "비밀번호 바꾸기",
"Changes your display nickname": "보여줄 별명을 바꾸기",
"Clear Cache and Reload": "캐시를 지우고 다시 불러오기",
"Clear Cache": "캐시 지우기",
"Confirm password": "비밀번호 확인",
"Confirm your new password": "새 비밀번호 확인",
"Create Room": "방 만들기",
"Create an account": "게정 만들기",
"Custom": "사용자 지정",
"Device ID": "장치 ID",
"Default": "기본",
"Device already verified!": "장치를 이미 확인했어요!",
"device id: ": "장치 id: ",
"Devices": "장치",
"Direct chats": "직접 여러 명에게 이야기하기",
"Disable Notifications": "알림 끄기",
"disabled": "끄기",
"Display name": "별명",
"Don't send typing notifications": "입력 중이라는 알림 보내지 않기",
"Email": "이메일",
"Email address": "이메일 주소",
"Email, name or matrix ID": "이메일, 이름 혹은 매트릭스 ID",
"Drop here %(toAction)s": "여기에 놓아주세요 %(toAction)s",
"Failed to forget room %(errCode)s": "방 %(errCode)s를 잊지 못했어요",
"Failed to join the room": "방에 들어가지 못했어요",
"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": "수동으로 라이엇에 마이크와 카메라를 허용해야 할 수도 있어요",
"all room members": "방 구성원 모두",
"all room members, from the point they are invited": "방 구성원 모두, 초대받은 시점부터",
"all room members, from the point they joined": "방 구성원 모두, 방에 들어온 시점부터",
"%(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 %(overflowCount)s others...": "그리고 %(overflowCount)s...",
"and one other...": "그리고 다른 하나...",
"%(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": "손님을 제외하고, 방의 주소를 아는 누구나",
"Anyone who knows the room's link, including guests": "손님을 포함하여, 방의 주소를 아는 누구나",
"Are you sure you want to reject the invitation?": "초대를 거절하시겠어요?",
"%(senderName)s banned %(targetName)s.": "%(senderName)s님이 %(targetName)s님을 차단하셨어요.",
"Bans user with given id": "받은 ID로 사용자 차단하기",
"Bulk Options": "대규모 설정",
"Call Timeout": "전화 대기 시간 초과",
"Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> is trusted, and that a browser extension is not blocking requests.": "홈 서버에 연결할 수 없어요 - 연결을 확인해주시고, <a>홈 서버의 SSL 인증서</a>가 믿을 수 있는지 확인하시고, 브라우저 확장기능이 요청을 차단하고 있는지 확인해주세요.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or <a>enable unsafe scripts</a>.": "주소창에 HTTPS 주소가 있을 때는 HTTP로 홈 서버를 연결할 수 없어요. HTTPS를 쓰거나 <a>안전하지 않은 스크립트를 허용해주세요</a>.",
"%(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\"로 바꾸셨어요.",
"Changes to who can read history will only apply to future messages in this room": "방의 이후 메시지부터 기록을 읽을 수 있는 조건의 변화가 적용되어요",
"changing room on a RoomView is not supported": "룸뷰에서 방을 바꾸는 건 지원하지 않아요",
"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": "Ed25519 지문 키가 필요",
"<a>Click here</a> to join the discussion!": "<a>여기</a>를 눌러서 같이 논의해요!",
"Click here to fix": "해결하려면 여기를 누르세요",
"Click to mute audio": "소리를 끄려면 누르세요",
"Click to mute video": "동영상 소리를 끄려면 누르세요",
"click to reveal": "누르면 나타나요",
"Click to unmute video": "동영상 소리를 켜려면 누르세요",
"Click to unmute audio": "소리를 켜려면 누르세요",
"Command error": "명령 오류",
"Commands": "명령",
"Conference call failed.": "전화 회의를 실패했어요.",
"Conference calling is in development and may not be reliable.": "전화 회의는 개발 중이며 믿을 수 없어요.",
"Conference calls are not supported in encrypted rooms": "암호화한 방에서는 전화 회의를 할 수 없어요",
"Conference calls are not supported in this client": "이 클라이언트에서는 전화 회의를 할 수 없어요",
"Could not connect to the integration server": "통합 서버에 연결할 수 없어요",
"%(count)s new messages.one": "%(count)s 새 메시지",
"%(count)s new messages.other": "%(count)s 새 메시지",
"Create a new chat or reuse an existing one": "새 이야기를 시작하거나 기존에 하던 이야기를 이어하세요",
"Cryptography": "암호화",
"Current password": "현재 비밀번호",
"Curve25519 identity key": "Curve25519 신원 키",
"Custom level": "사용자 지정 단계",
"/ddg is not a command": "/ddg 는 없는 명령이에요",
"Deactivate Account": "계정 정지",
"Deactivate my account": "내 계정 정지하기",
"Decline": "거절",
"Decrypt %(text)s": "해독 %(text)s",
"Decryption error": "해독 오류",
"Delete": "지우기",
"demote": "등급 낮추기",
"Deops user with given id": "받은 ID로 사용자의 등급을 낮추기",
"Device ID:": "장치 ID:",
"Device key:": "장치 키:",
"Devices will not yet be able to decrypt history from before they joined the room": "방에 들어가기 전에는 장치에서 기록을 해독할 수 없어요",
"Disable inline URL previews by default": "기본적으로 인라인 주소 미리보기를 끄기",
"Disable markdown formatting": "마크다운 형식 끄기",
"Disinvite": "초대 취소",
"Displays action": "활동 보이기",
"Download %(text)s": "%(text)s 받기",
"Drop File Here": "여기에 파일을 놓아주세요",
"Drop here to tag %(section)s": "%(section)s 지정하려면 여기에 놓아주세요",
"Ed25519 fingerprint": "Ed25519 지문",
"Email address (optional)": "이메일 주소 (선택)",
"Emoji": "이모지",
"Enable encryption": "암호화 켜기",
"Enable Notifications": "알림 켜기",
"enabled": "사용",
"Encrypted by a verified device": "인증한 장치로 암호화했어요",
"Encrypted by an unverified device": "인증하지 않은 장치로 암호화했어요",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "암호화한 메시지는 아직 암호화를 구현하지 않은 클라이언트에서는 볼 수 없어요",
"Encrypted room": "암호화한 방",
"Encryption is enabled in this room": "이 방은 암호화중이에요",
"Encryption is not enabled in this 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": "종단간 암호화는 시험중이며 믿을 수 없어요",
"Enter Code": "코드를 입력하세요",
"Enter passphrase": "암호를 입력하세요",
"Error decrypting attachment": "첨부 파일 해독중 문제가 일어났어요",
"Error: Problem communicating with the given homeserver.": "오류: 지정한 홈 서버와 통신에 문제가 있어요.",
"Event information": "사건 정보",
"Existing Call": "기존 전화",
"Export": "내보내기",
"Export E2E room keys": "종단간 암호화 방 키 내보내기",
"Failed to ban user": "사용자를 차단하지 못했어요",
"Failed to change power level": "권한 등급을 바꾸지 못했어요",
"Failed to delete device": "장치를 지우지 못했어요",
"Failed to fetch avatar URL": "아바타 주소를 불러오지 못했어요",
"Failed to join room": "방에 들어가지 못했어요",
"Failed to kick": "내쫓지 못했어요",
"Failed to leave room": "방을 떠나지 못했어요",
"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": "설정을 저장하지 못했어요",
"Failed to send email": "이메일을 보내지 못했어요",
"Failed to send request.": "요청을 보내지 못했어요.",
"Failed to set avatar.": "아바타를 설정하지 못했어요.",
"Failed to set display name": "별명을 설정하지 못했어요",
"Failed to set up conference call": "전화 회의를 시작하지 못했어요",
"Failed to toggle moderator status": "조정자 상태를 설정하지 못했어요",
"Failed to unban": "차단을 풀지 못했어요",
"Failed to upload file": "파일을 올리지 못했어요",
"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": "방 구성원 거르기",
"Forget room": "방 잊기",
"Forgot your password?": "비밀번호를 잊어버리셨어요?",
"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?": "오류를 찾으셨나요?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s를 %(fromPowerLevel)s에서 %(toPowerLevel)s로",
"Guest access is disabled on this Home Server.": "손님은 이 홈 서버에 접근하실 수 없어요.",
"Guests can't set avatars. Please register.": "손님은 아바타를 설정하실 수 없어요. 계정을 등록해주세요.",
"Guest users can't create new rooms. Please register to create room and start a chat.": "손님은 새 방을 만드실 수 없어요. 계정을 등록하셔서 방을 만드시고 이야기를 시작하세요.",
"Guest users can't upload files. Please register to upload.": "손님은 파일을 올릴 수 없어요. 파일을 올리시려면 계정을 등록해주세요.",
"Guests can't use labs features. Please register.": "손님은 실험실 기능을 쓸 수 없어요. 계정을 등록해주세요.",
"Guests cannot join this room even if explicitly invited.": "손님은 분명하게 초대받았어도 이 방에 들어가실 수 없어요.",
"had": "했어요",
"Hangup": "전화 끊기",
"Hide read receipts": "읽음 확인 표시 숨기기",
"Hide Text Formatting Toolbar": "문자 서식 도구 숨기기",
"Historical": "보관",
"Home": "중심",
"Homeserver is": "홈 서버는",
"Identity Server is": "ID 서버는",
"I have verified my email address": "제 이메일 주소를 확인했어요",
"Import": "불러오기",
"Import E2E room keys": "종단간 암호화 방 키 불러오기",
"Import room keys": "방 키 불러오기",
"Incoming call from %(name)s": "%(name)s님이 전화를 걸어왔어요",
"Incoming video call from %(name)s": "%(name)s님이 영상 통화를 걸어왔어요",
"Incoming voice call from %(name)s": "%(name)s님이 음성 통화를 걸어왔어요",
"Incorrect username and/or password.": "사용자 이름 혹은 비밀번호가 맞지 않아요.",
"Incorrect verification code": "인증 번호가 맞지 않아요",
"Interface Language": "인터페이스 언어",
"Invalid alias format": "가명 형식이 맞지 않아요",
"Invalid address format": "주소 형식이 맞지 않아요",
"Invalid Email Address": "이메일 주소가 맞지 않아요",
"Invalid file%(extra)s": "파일%(extra)s이 맞지 않아요",
"%(senderName)s invited %(targetName)s.": "%(senderName)s님이 %(targetName)s님을 초대하셨어요.",
"Invite new room members": "새 구성원 초대하기",
"Invited": "초대받기",
"Invites": "초대하기",
"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님이 입력중",
"Sign in with": "로그인",
"Join as <voiceText>voice</voiceText> or <videoText>video</videoText>.": "<voiceText>음성</voiceText> 또는 <videoText>영상</videoText>으로 참여하세요.",
"Join Room": "방에 들어가기",
"joined and left": "들어왔다가 떠남",
"joined": "들어옴",
"%(targetName)s joined the room.": "%(targetName)s님이 방에 들어오셨어요.",
"Joins room with given alias": "받은 가명으로 방에 들어가기",
"Jump to first unread message.": "읽지 않은 첫 메시지로 이동할래요.",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s님이 %(targetName)s을 내쫓았어요.",
"Kick": "내쫓기",
"Kicks user with given id": "받은 ID로 사용자 내쫓기",
"Labs": "실험실",
"Last seen": "마지막으로 본 곳",
"Leave room": "방 떠나기",
"left and rejoined": "떠났다가 다시 들어옴",
"left": "떠났음",
"%(targetName)s left the room.": "%(targetName)s님이 방을 떠나셨어요.",
"Level:": "등급:",
"List this room in %(domain)s's room directory?": "%(domain)s's 방 목록에 이 방을 놓으시겠어요?",
"Local addresses for this room:": "이 방의 로컬 주소:",
"Logged in as:": "로그인:",
"Login as guest": "손님으로 로그인",
"Logout": "로그아웃",
"Low priority": "낮은 우선순위",
"%(senderName)s made future room history visible to": "%(senderName)s님이 이후 방의 기록을 볼 수 있게 하셨어요",
"Manage Integrations": "통합 관리",
"Markdown is disabled": "마크다운이 꺼져있어요",
"Markdown is enabled": "마크다운이 켜져있어요",
"matrix-react-sdk version:": "matrix-react-sdk 버전:",
"Members only": "구성원만",
"Message not sent due to unknown devices being present": "알 수 없는 장치가 있어 메시지를 보내지 못했어요",
"Missing room_id in request": "요청에서 방_id가 빠졌어요",
"Missing user_id in request": "요청에서 사용자_id가 빠졌어요",
"Mobile phone number": "휴대 전화번호",
"Mobile phone number (optional)": "휴대 전화번호 (선택)",
"Moderator": "조정자",
"Must be viewing a room": "방을 둘러봐야만 해요",
"my Matrix ID": "내 매트릭스 ID",
"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 Composer & Autocomplete": "새 구성 & 자동 완성",
"New password": "새 비밀번호",
"New passwords don't match": "새 비밀번호가 맞지 않아요",
"New passwords must match each other.": "새 비밀번호는 서로 같아야 해요.",
"none": "없음",
"not set": "설정하지 않았어요",
"not specified": "지정하지 않았어요",
"(not supported by this browser)": "(이 브라우저에서는 지원하지 않아요)",
"<not supported>": "<지원하지 않아요>",
"NOT verified": "확인하지 않음",
"No devices with registered encryption keys": "등록한 암호화 키가 있는 장치가 없어요",
"No display name": "별명이 없어요",
"No more results": "더 이상 결과가 없어요",
"No results": "결과 없음",
"No users have specific privileges in this room": "이 방에 지정한 권한의 사용자가 없어요",
"olm version:": "olm 버전:",
"Password": "비밀번호",
"Password:": "비밀번호:",
"Passwords can't be empty": "비밀번호는 비울 수 없어요",
"Permissions": "권한",
"People": "사람들",
"Phone": "전화",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "방을 암호화하면 암호화를 도중에 끌 수 없어요. (현재로서는)",
"Once you&#39;ve followed the link it contains, click below": "포함된 주소를 따라가서, 아래를 누르세요",
"Only people who have been invited": "초대받은 사람만",
"Otherwise, <a>click here</a> to send a bug report.": "그 밖에는, <a>여기를 눌러</a> 오류 보고서를 보내주세요.",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s님이 %(callType)s 전화를 걸었어요.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "이메일을 확인하시고 그 안에 있는 주소를 누르세요. 이 일을 하고 나서, 계속하기를 누르세요.",
"Power level must be positive integer.": "권한 등급은 양의 정수여야만 해요.",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (권한 %(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.": "사용자를 자신과 같은 권한 등급으로 승급시키면 되돌릴 수 없어요.",
"Press": "누르세요",
"Privacy warning": "개인정보 경고",
"Private Chat": "은밀한 이야기",
"Privileged Users": "권한 있는 사용자",
"Profile": "자기 소개",
"%(senderName)s removed their profile picture.": "%(senderName)s님이 자기 소개 사진을 지우셨어요.",
"%(senderName)s set a profile picture.": "%(senderName)s님이 자기 소개 사진을 설정하셨어요.",
"Public Chat": "공개 이야기",
"Reason": "이유",
"Reason: %(reasonText)s": "이유: %(reasonText)s",
"Revoke Moderator": "조정자 철회",
"Refer a friend to Riot:": "라이엇을 친구에게 추천해주세요:",
"Register": "등록하기",
"rejected": "거절함",
"%(targetName)s rejected the invitation.": "%(targetName)s님이 초대를 거절하셨어요.",
"Reject invitation": "초대 거절",
"Rejoin": "다시 들어가기",
"Remote addresses for this room:": "이 방의 원격 주소:",
"Remove Contact Information?": "연락처를 지우시겠어요?",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s님이 별명 (%(oldDisplayName)s)을 지우셨어요.",
"Remove %(threePid)s?": "%(threePid)s 지우시겠어요?",
"%(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": "로그인 화면으로 돌아가기",
"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-web version:": "라이엇 웹 버전:",
"Room %(roomId)s not visible": "방 %(roomId)s은 보이지 않아요",
"Room Colour": "방 색상",
"Room contains unknown devices": "방에 알 수 없는 장치가 있어요",
"Room name (optional)": "방 이름 (선택)",
"%(roomName)s does not exist.": "%(roomName)s은 없는 방이에요.",
"%(roomName)s is not accessible at this time.": "현재는 %(roomName)s에 들어갈 수 없어요.",
"Rooms": "방",
"Save": "저장",
"Scroll to bottom of page": "화면 맨 아래로 이동",
"Scroll to unread messages": "읽지 않은 메시지로 이동",
"Search failed": "찾지 못함",
"Searches DuckDuckGo for results": "덕덕고에서 검색",
"Searching known users": "아는 사용자 검색중",
"Seen by %(userName)s at %(dateTime)s": "%(userName)s님이 %(dateTime)s에 확인",
"Send a message (unencrypted)": "메시지 보내기 (비암호화)",
"Send an encrypted message": "암호화한 메시지 보내기",
"Send anyway": "그래도 보내기",
"Sender device information": "보낸 장치의 정보",
"Send Invites": "초대 보내기",
"Send Reset Email": "재설정 이메일 보내기",
"sent an image": "사진을 보냈어요",
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s님이 사진을 보냈어요.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s님이 %(targetDisplayName)s님에게 들어오라는 초대를 보냈어요.",
"sent a video": "동영상을 보냈어요",
"Server error": "서버 오류",
"Server may be unavailable or overloaded": "서버를 쓸 수 없거나 과부하일 수 있어요",
"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 you hit a bug.": "서버를 쓸 수 없거나 과부하거나, 오류에요.",
"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)",
"Signed Out": "로그아웃함",
"Sign in": "로그인",
"Sign out": "로그아웃",
"since the point in time of selecting this option": "이 선택을 하는 시점부터",
"since they joined": "들어온 이후",
"since they were invited": "초대받은 이후",
"Some of your messages have not been sent.": "일부 메시지는 보내지 못했어요.",
"Someone": "누군가",
"Sorry, this homeserver is using a login which is not recognised ": "죄송해요, 이 홈 서버는 인식할 수 없는 로그인을 쓰고 있네요 ",
"Start a chat": "이야기하기",
"Start authentication": "인증하기",
"Start Chat": "이야기하기",
"Submit": "보내기",
"Success": "성공",
"tag as %(tagName)s": "%(tagName)s로 지정하기",
"tag direct chat": "직접 이야기 지정하기",
"Tagged as: ": "지정함: ",
"The default role for new room members is": "방 새 구성원의 기본 역할",
"The main address for this room is": "이 방의 주요 주소",
"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에서 받은 서명 키와 일치하네요. 인증한 장치로 표시할게요.",
"This action cannot be performed by a guest user. Please register to be able to do this.": "손님은 이 작업을 할 수 없어요. 하려면 계정을 등록해주세요.",
"This email address is already in use": "이 이메일 주소는 사용중이에요",
"This email address was not found": "이 이메일 주소를 찾지 못했어요",
"%(actionVerb)s this person?": "이 사용자에게 %(actionVerb)s?",
"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' 파일이 홈 서버에 올릴 수 있는 한계 크기를 초과했어요",
"The file '%(fileName)s' failed to upload": "'%(fileName)s' 파일을 올리지 못했어요",
"The remote side failed to pick up": "원격 측에서 찾지 못했어요",
"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:": "이 초대는 이 계정과 연결되지 않은 이메일 주소로 보냈어요:",
"There was a problem logging in.": "로그인하는 데 문제가 있어요.",
"This room has no local addresses": "이 방은 로컬 주소가 없어요",
"This room is not recognised.": "이 방은 드러나지 않아요.",
"These are experimental features that may break in unexpected ways": "에상치 못한 방법으로 망가질 지도 모르는 실험 기능이에요",
"The visibility of existing history will be unchanged": "기존 기록은 볼 수 있는 대상이 바뀌지 않아요",
"This doesn't appear to be a valid email address": "올바르지 않은 이메일 주소로 보여요",
"This is a preview of this room. Room interactions have been disabled": "방을 미리보는 거에요. 상호작용은 보이지 않아요",
"This phone number is already in use": "이 전화번호는 사용중이에요",
"This room": "이 방",
"This room is not accessible by remote Matrix servers": "이 방은 원격 매트릭스 서버에 접근할 수 없어요",
"This room's internal ID is": "방의 내부 ID",
"times": "번",
"To ban users": "사용자를 차단하기",
"to browse the directory": "목록에서 찾기",
"To configure the room": "방을 구성하기",
"to demote": "등급을 낮추기",
"to favourite": "즐겨찾기하기",
"To invite users into the room": "방으로 사용자를 초대하기",
"To kick users": "사용자를 내쫓기",
"To link to a room it must have <a>an address</a>.": "방에 연결하려면 <a>주소</a>가 있어야 해요.",
"to make a room or": "방을 만들거나 혹은",
"To remove other users' messages": "다른 사용자의 메시지를 지우기",
"To reset your password, enter the email address linked to your account": "비밀번호을 다시 설정하려면, 계정과 연결한 이메일 주소를 입력해주세요",
"to restore": "복구하기"
}

View file

@ -16,7 +16,7 @@
"An email has been sent to": "Email был отправлен",
"A new password must be entered.": "Введите новый пароль.",
"answered the call.": "принятый звонок.",
"anyone": "кто угодно",
"anyone": "любой",
"Anyone who knows the room's link, apart from guests": "Любой, кто знает ссылку на комнату, кроме гостей",
"Anyone who knows the room's link, including guests": "Любой, кто знает ссылку комнаты, включая гостей",
"Are you sure you want to reject the invitation?": "Вы уверены что вы хотите отклонить приглашение?",
@ -126,7 +126,7 @@
"my Matrix ID": "мой Matrix ID",
"Name": "Имя",
"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": "Никогда не отправляйте зашифрованные сообщения на непроверенные устройства в этой комнате из вашего устройства",
"New password": "Новый пароль",
"New passwords must match each other.": "Новые пароли должны соответствовать друг другу.",
"none": "никто",
@ -357,7 +357,7 @@
"Sunday": "Воскресенье",
"%(weekDayName)s %(time)s": "%(weekDayName) %(time)",
"Upload an avatar:": "Загрузите аватар:",
"You need to be logged in.": "Вы должны быть зарегистрированы.",
"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.": "Связь уже установлена.",
@ -524,7 +524,7 @@
"OK": "ОК",
"Only people who have been invited": "Только приглашённые люди",
"Passwords can't be empty": "Пароли не могут быть пустыми",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s выполнил %(callType)s вызов.",
"%(senderName)s placed a %(callType)s call.": "%(senderName) выполнил %(callType) вызов.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Пожалуйста, проверьте вашу электронную почту и нажмите в ней ссылку. По завершении нажмите продолжить.",
"Power level must be positive integer.": "Уровень силы должен быть положительным числом.",
"Press": "Нажать",
@ -721,7 +721,7 @@
"Server may be unavailable or overloaded": "Сервер может быть недоступен или перегружен",
"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 you hit a bug.": "Сервер может быть недоступен, перегружен или вы нашли ошибку.",
"Server may be unavailable, overloaded, or you hit a bug.": "Сервер может быть недоступен, перегружен или возникла ошибка.",
"Server unavailable, overloaded, or something else went wrong.": "Сервер может быть недоступен, перегружен или что-то пошло не так.",
"Session ID": "ID сессии",
"%(senderName)s set a profile picture.": "%(senderName)s установил картинку профиля.",
@ -758,12 +758,12 @@
"Verified key": "Верифицированный ключ",
"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!": "ВНИМАНИЕ: ОШИБКА ВЕРИФИКАЦИИ КЛЮЧЕЙ! Ключ для подписки устройства %(deviceId)s пользователя %(userId)s: \"%(fprint)s\", однако он не совпадает с предоставленным ключем \"%(fingerprint)s\". Это может означать перехват вашего канала коммуникации!",
"You have <a>disabled</a> URL previews by default.": "Пред. просмотр ссылок <a>отключен</a> по-умолчанию.",
"You have <a>disabled</a> URL previews by default.": "Предпросмотр ссылок <a>отключен</a> по-умолчанию.",
"You have <a>enabled</a> URL previews by default.": "Предпросмотр ссылок <a>включен</a> по-умолчанию.",
"You have entered an invalid contact. Try using their Matrix ID or email address.": "Вы ввели неправильный адрес. Попробуйте использовать Matrix ID или адрес email.",
"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.": "Вы не сможете отменить это действие так как даете пользователю такой же уровень доступа как и у вас.",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Вы не сможете отменить это действие, так как даете пользователю такой же уровень доступа, как и у вас.",
"Set a Display Name": "Установить отображаемое имя",
"(~%(searchCount)s results)": "(~%(searchCount)s результатов)",
"%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)s отозвали свои приглашения %(repeats)s раз",
@ -791,7 +791,7 @@
"Failed to invite user": "Ошибка приглашения пользователя",
"Failed to invite the following users to the %(roomName)s room:": "Ошибка приглашения следующих пользователей в %(roomName)s:",
"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": "Неизвестная ошибка",
"Incorrect password": "Неправильный пароль",
"This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Это сделает вашу учетную запись нерабочей. Вы не сможете зарегистрироваться снова с тем же ID.",
@ -842,7 +842,7 @@
"Error decrypting video": "Ошибка расшифровки видео",
"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?": "Вы будете перенаправлены на внешний сайт, где вы сможете аутентифицировать свою учетную запись для использования с %(integrationsUrl)s. Вы хотите продолжить?",
"Removed or unknown message type": "Удаленный или неизвестный тип сообщения",
"Removed or unknown message type": "Удалено или тип сообщения неизвестен",
"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",
@ -932,7 +932,7 @@
"Send anyway": "Отправить в любом случае",
"Show Text Formatting Toolbar": "Показать панель инструментов форматирования текста",
"This invitation was sent to an email address which is not associated with this account:": "Это приглашение было отправлено на адрес электронной почты, который не связан с этой учетной записью:",
"To link to a room it must have <a>an address</a>.": "Для ссылки на комнату. Она должна иметь <a> адрес</a>.",
"To link to a room it must have <a>an address</a>.": "Для ссылки на комнату необходим <a> адрес</a>.",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Не удалось установить, что адрес на который было отправлено это приглашение соответствует вашей учетной записи.",
"Undecryptable": "Невозможно расшифровать",
"Unencrypted message": "Незашифрованое послание",
@ -954,5 +954,9 @@
"(no answer)": "(нет ответа)",
"(unknown failure: %(reason)s)": "(неизвестная ошибка: %(reason)s",
"Disable Peer-to-Peer for 1:1 calls": "Отключить Peer-to-Peer для 1:1 звонков",
"Not a valid Riot keyfile": "Не действительный Riot-файл ключа"
"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?": "Вы хотите указать адрес электронной почты?",
"This will allow you to reset your password and receive notifications.": "Это позволит вам сбросить пароль и получить уведомления."
}

View file

@ -296,5 +296,109 @@
"Active call (%(roomName)s)": "Aktiv samtal (%(roomName)s)",
"Add": "Lägg till",
"Admin tools": "Admin verktyg",
"And %(count)s more...": "Och %(count) till..."
"And %(count)s more...": "Och %(count) till...",
"Alias (optional)": "Alias (valfri)",
"Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> 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 <a>hemservers TLS-certifikat</a> ä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.",
"changing room on a RoomView is not supported": "det går inte att byta rum i en RoomView",
"<a>Click here</a> to join the discussion!": "<a>Klicka här</a> för att gå med i diskussionen!",
"Close": "Stäng",
"%(count)s new messages.one": "%(count)s nytt meddelande",
"%(count)s new messages.other": "%(count)s nya meddelanden",
"Create a new chat or reuse an existing one": "Skapa en ny chatt eller använd en existerande",
"Custom": "Egen",
"Decline": "Avvisa",
"Disable Notifications": "Slå av aviseringar",
"Disable markdown formatting": "Slå av Markdown-formattering",
"Drop File Here": "Dra filen hit",
"Enable Notifications": "Slå på aviseringar",
"Encrypted by a verified device": "Krypterat av en verifierad enhet",
"Encrypted by an unverified device": "Krypterat av en overifierad enhet",
"Encryption is enabled in this room": "Kryptering är aktiverat i det här rummet",
"Encryption is not enabled in this room": "Kryptering är inte aktiverat i det här rummet",
"Enter passphrase": "Ge lösenfras",
"Error: Problem communicating with the given homeserver.": "Fel: Det gick inte att kommunicera med den angivna hemservern.",
"Failed to fetch avatar URL": "Det gick inte att hämta avatar-URL",
"Failed to upload profile picture!": "Det gick inte att ladda upp profilbild!",
"Failure to create room": "Det gick inte att skapa rum",
"Favourites": "Favoriter",
"Fill screen": "Fyll skärmen",
"Filter room members": "Filtrera rumsmedlemmar",
"Forget room": "Glöm bort rum",
"Forgot your password?": "Glömt lösenord?",
"For security, this session has been signed out. Please sign in again.": "Av säkerhetsskäl har den här sessionen loggats ut. Vänligen logga in igen.",
"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.": "Av säkerhetsskäl kommer alla krypteringsnycklar att raderas från den här webbläsaren om du loggar ut. Om du vill läsa din krypterade meddelandehistorik från framtida Riot-sessioner, exportera nycklarna till förvar.",
"Found a bug?": "Hittade du en bugg?",
"%(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 can't set avatars. Please register.": "Gäster kan inte välja en profilbild. Vänligen registrera dig.",
"Guest users can't create new rooms. Please register to create room and start a chat.": "Gäster kan inte skapa nya rum. Vänligen registrera dig för att skapa rum och starta chattar.",
"Guest users can't upload files. Please register to upload.": "Gäster kan inte ladda upp filer. Vänligen registrera dig för att ladda upp.",
"Guests can't use labs features. Please register.": "Gäster kan inte använda labb-egenskaper. Vänligen registrera dig.",
"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",
"Historical": "Historiska",
"Home": "Hem",
"Homeserver is": "Hemservern är",
"Identity Server is": "Identitetsservern är",
"I have verified my email address": "Jag har verifierat min epostadress",
"Import": "Importera",
"Import E2E room keys": "Importera rumskrypteringsnycklar",
"Incoming call from %(name)s": "Inkommande samtal från %(name)s",
"Incoming video call from %(name)s": "Inkommande videosamtal från %(name)s",
"Incoming voice call from %(name)s": "Inkommande röstsamtal från %(name)s",
"Incorrect username and/or password.": "Fel användarnamn och/eller lösenord.",
"Incorrect verification code": "Fel verifieringskod",
"Interface Language": "Gränssnittsspråk",
"Invalid alias format": "Fel alias-format",
"Invalid address format": "Fel adressformat",
"Invalid Email Address": "Ogiltig epostadress",
"Invalid file%(extra)s": "Fel fil%(extra)s",
"%(senderName)s invited %(targetName)s.": "%(senderName)s bjöd in %(targetName)s.",
"Invite new room members": "Bjud in nya rumsmedlemmar",
"Invited": "Inbjuden",
"Invites": "Inbjudningar",
"Invites user with given id to current room": "Bjuder in användaren med det givna ID:t till det nuvarande rummet",
"'%(alias)s' is not a valid format for an address": "'%(alias)s' är inte ett giltigt format för en adress",
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' är inte ett giltigt format för ett alias",
"%(displayName)s is typing": "%(displayName)s skriver",
"Sign in with": "Logga in med",
"Join as <voiceText>voice</voiceText> or <videoText>video</videoText>.": "Gå med som <voiceText>röst</voiceText> eller <videoText>video</videoText>.",
"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",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s kickade %(targetName)s.",
"Kick": "Kicka",
"Kicks user with given id": "Kickar användaren med givet ID",
"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å:",
"List this room in %(domain)s's room directory?": "Visa det här rummet i katalogen på %(domain)s?",
"Local addresses for this room:": "Lokala adresser för rummet:",
"Logged in as:": "Inloggad som:",
"Login as guest": "Logga in som gäst",
"Logout": "Logga ut",
"Low priority": "Lågprioritet",
"%(senderName)s made future room history visible to": "%(senderName)s gjorde framtida rumshistorik synligt åt",
"Manage Integrations": "Hantera integrationer",
"Markdown is disabled": "Markdown är inaktiverat",
"Markdown is enabled": "Markdown är aktiverat",
"matrix-react-sdk version:": "matrix-react-sdk -version:",
"Members only": "Endast medlemmar",
"Message not sent due to unknown devices being present": "Meddelandet skickades inte eftersom det finns okända enheter i rummet",
"Missing room_id in request": "room_id saknas i förfrågan",
"Missing user_id in request": "user_id saknas i förfrågan",
"Mobile phone number": "Telefonnummer",
"Mobile phone number (optional)": "Telefonnummer (valfri)",
"Moderator": "Moderator"
}

155
src/i18n/strings/uk.json Normal file
View file

@ -0,0 +1,155 @@
{
"af": "афрікаанс",
"ar-ae": "арабська (ОАЕ)",
"ar-bh": "арабська (Бахрейн)",
"ar-dz": "арабська (Алжир)",
"ar-eg": "арабська (Єгипет)",
"ar-iq": "арабська (Ірак)",
"ar-jo": "арабська (Йорданія)",
"ar-kw": "арабська (Кувейт)",
"ar-lb": "арабська (Ліван)",
"ar-ly": "арабська (Лівія)",
"ar-ma": "арабська (Марокко)",
"ar-om": "арабська (Оман)",
"ar-qa": "арабська (Катар)",
"ar-sa": "арабська (Саудівська Аравія)",
"ar-sy": "арабська (Сирія)",
"ar-tn": "арабська (Туніс)",
"ar-ye": "арабська (Йемен)",
"be": "білоруська",
"bg": "болгарська",
"ca": "каталонська",
"cs": "чеська",
"da": "данська",
"de-at": "німецька (Австрія)",
"de-ch": "німецька (Швейцарія)",
"de": "німецька",
"de-li": "німецька (Ліхтенштейн)",
"de-lu": "німецька (Люксембург)",
"el": "грецька",
"en-au": "англійська (Австралія)",
"en-bz": "англійська (Беліз)",
"en-ca": "англійська (Канада)",
"en": "англійська",
"en-gb": "англійська (Великобританія)",
"en-ie": "англійська (Ірландія)",
"en-jm": "англійська (Ямайка)",
"en-nz": "англійська (Нова Зеландія)",
"en-tt": "англійська (Тринідад)",
"en-us": "англійська (Сполучені Штати)",
"en-za": "англійська (ПАР)",
"es-ar": "іспанська (Аргентина)",
"es-bo": "іспанська (Болівія)",
"es-cl": "іспанська (Чилі)",
"es-co": "іспанська (Колумбія)",
"es-cr": "іспанська (Коста Ріка)",
"es-do": "іспанська (Домініканська Республіка)",
"es-ec": "іспанська (Еквадор)",
"es-gt": "іспанська (Гватемала)",
"es-hn": "іспанська (Гондурас)",
"es-mx": "іспанська (Мексика)",
"es-ni": "іспанська (Нікарагуа)",
"es-pa": "іспанська (Панама)",
"es-pe": "іспанська (Перу)",
"es-pr": "іспанська (Пуерто Ріко)",
"es-py": "іспанська (Парагвай)",
"es": "іспанська (Іспанія)",
"es-sv": "іспанська (Сальвадор)",
"es-uy": "іспанська (Уругвай)",
"es-ve": "іспанська (Венесуела)",
"et": "естонська",
"eu": "баскійська",
"fa": "перська",
"fi": "фінська",
"fo": "фарерська",
"Cancel": "Скасувати",
"Close": "Закрити",
"Create new room": "Створити нову кімнату",
"Custom Server Options": "Нетипові параметри сервера",
"Direct Chat": "Прямий чат",
"Dismiss": "Відхилити",
"Drop here %(toAction)s": "Кидайте сюди %(toAction)s",
"Error": "Помилка",
"Failed to forget room %(errCode)s": "Не вдалось забути кімнату %(errCode)s",
"Failed to join the room": "Не вдалося приєднатись до кімнати",
"Favourite": "Вибране",
"Mute": "Стишити",
"Notifications": "Сповіщення",
"Operation failed": "Не вдалося виконати дію",
"Please Register": "Зареєструйтеся, будь ласка",
"powered by Matrix": "працює на Matrix",
"Remove": "Прибрати",
"Room directory": "Каталог кімнат",
"Search": "Пошук",
"Settings": "Налаштування",
"Start chat": "Почати розмову",
"unknown error code": "невідомий код помилки",
"Sunday": "Неділя",
"Monday": "Понеділок",
"Tuesday": "Вівторок",
"Wednesday": "Середа",
"Thursday": "Четвер",
"Friday": "П'ятниця",
"Saturday": "Субота",
"OK": "Гаразд",
"Welcome page": "Ласкаво просимо",
"Failed to change password. Is your password correct?": "Не вдалось змінити пароль. Ви впевнені, що пароль введено правильно?",
"Continue": "Продовжити",
"fr-be": "французька (Бельгія)",
"fr-ca": "французька (Канада)",
"fr-ch": "французька (Швейцарія)",
"fr": "французька",
"fr-lu": "французька (Люксембург)",
"ga": "ірландська",
"gd": "гельська (Шотландія)",
"he": "іврит",
"hi": "гінді",
"hr": "хорватська",
"hu": "угорська",
"id": "індонезійська",
"is": "ісландська",
"it-ch": "італійська (Швейцарія)",
"it": "італійська",
"ja": "японська",
"ji": "ідиш",
"ko": "корейська",
"lt": "литовська",
"lv": "латвійська",
"mk": "македонська (КЮРМ)",
"ms": "малайська",
"mt": "мальтійська",
"nl-be": "нідерландська (Бельгія)",
"nl": "нідерландська",
"no": "норвезька",
"pl": "польська",
"pt-br": "бразильська португальська",
"pt": "португальська",
"rm": "ретороманська",
"ro-mo": "румунська (Молдова)",
"ro": "румунська",
"ru-mo": "російська (Молдова)",
"ru": "російська",
"sb": "лужицька",
"sk": "словацька",
"sl": "словенська",
"sq": "албанська",
"sr": "сербська",
"sv-fi": "шведська (Фінляндія)",
"sv": "шведська",
"sx": "сесото",
"sz": "північносаамська",
"th": "тайська",
"tn": "свана",
"tr": "турецька",
"ts": "тсонга",
"uk": "українська",
"ur": "урду",
"ve": "венда",
"vi": "в’єтнамська",
"xh": "коса",
"zh-cn": "спрощена китайська (КНР)",
"zh-hk": "традиційна китайська (Гонконг)",
"zh-sg": "спрощена китайська (Сингапур)",
"zh-tw": "традиційна китайська (Тайвань)",
"zu": "зулу"
}