Merge branch 'develop' into luke/fix-event-id-state

Conflicts:
	src/components/structures/MatrixChat.js
This commit is contained in:
Luke Barnard 2017-06-08 14:33:58 +01:00
commit ea97d16aa2
13 changed files with 490 additions and 54 deletions

191
.eslintignore.errorfiles Normal file
View file

@ -0,0 +1,191 @@
# autogenerated file: run scripts/generate-eslint-error-ignore-file to update.
src/AddThreepid.js
src/async-components/views/dialogs/EncryptedEventDialog.js
src/async-components/views/dialogs/ExportE2eKeysDialog.js
src/async-components/views/dialogs/ImportE2eKeysDialog.js
src/autocomplete/AutocompleteProvider.js
src/autocomplete/Autocompleter.js
src/autocomplete/Components.js
src/autocomplete/DuckDuckGoProvider.js
src/autocomplete/EmojiProvider.js
src/autocomplete/RoomProvider.js
src/autocomplete/UserProvider.js
src/Avatar.js
src/BasePlatform.js
src/CallHandler.js
src/component-index.js
src/components/structures/ContextualMenu.js
src/components/structures/CreateRoom.js
src/components/structures/FilePanel.js
src/components/structures/InteractiveAuth.js
src/components/structures/LoggedInView.js
src/components/structures/login/ForgotPassword.js
src/components/structures/login/Login.js
src/components/structures/login/PostRegistration.js
src/components/structures/login/Registration.js
src/components/structures/MatrixChat.js
src/components/structures/MessagePanel.js
src/components/structures/NotificationPanel.js
src/components/structures/RoomStatusBar.js
src/components/structures/RoomView.js
src/components/structures/ScrollPanel.js
src/components/structures/TimelinePanel.js
src/components/structures/UploadBar.js
src/components/structures/UserSettings.js
src/components/views/avatars/BaseAvatar.js
src/components/views/avatars/MemberAvatar.js
src/components/views/avatars/RoomAvatar.js
src/components/views/create_room/CreateRoomButton.js
src/components/views/create_room/Presets.js
src/components/views/create_room/RoomAlias.js
src/components/views/dialogs/ChatCreateOrReuseDialog.js
src/components/views/dialogs/ChatInviteDialog.js
src/components/views/dialogs/DeactivateAccountDialog.js
src/components/views/dialogs/InteractiveAuthDialog.js
src/components/views/dialogs/SetMxIdDialog.js
src/components/views/dialogs/UnknownDeviceDialog.js
src/components/views/elements/AccessibleButton.js
src/components/views/elements/ActionButton.js
src/components/views/elements/AddressSelector.js
src/components/views/elements/AddressTile.js
src/components/views/elements/CreateRoomButton.js
src/components/views/elements/DeviceVerifyButtons.js
src/components/views/elements/DirectorySearchBox.js
src/components/views/elements/Dropdown.js
src/components/views/elements/EditableText.js
src/components/views/elements/EditableTextContainer.js
src/components/views/elements/HomeButton.js
src/components/views/elements/LanguageDropdown.js
src/components/views/elements/MemberEventListSummary.js
src/components/views/elements/PowerSelector.js
src/components/views/elements/ProgressBar.js
src/components/views/elements/RoomDirectoryButton.js
src/components/views/elements/SettingsButton.js
src/components/views/elements/StartChatButton.js
src/components/views/elements/TintableSvg.js
src/components/views/elements/TruncatedList.js
src/components/views/elements/UserSelector.js
src/components/views/login/CaptchaForm.js
src/components/views/login/CasLogin.js
src/components/views/login/CountryDropdown.js
src/components/views/login/CustomServerDialog.js
src/components/views/login/InteractiveAuthEntryComponents.js
src/components/views/login/LoginHeader.js
src/components/views/login/PasswordLogin.js
src/components/views/login/RegistrationForm.js
src/components/views/login/ServerConfig.js
src/components/views/messages/MAudioBody.js
src/components/views/messages/MessageEvent.js
src/components/views/messages/MFileBody.js
src/components/views/messages/MImageBody.js
src/components/views/messages/MVideoBody.js
src/components/views/messages/RoomAvatarEvent.js
src/components/views/messages/TextualBody.js
src/components/views/messages/TextualEvent.js
src/components/views/room_settings/AliasSettings.js
src/components/views/room_settings/ColorSettings.js
src/components/views/room_settings/UrlPreviewSettings.js
src/components/views/rooms/Autocomplete.js
src/components/views/rooms/AuxPanel.js
src/components/views/rooms/EntityTile.js
src/components/views/rooms/EventTile.js
src/components/views/rooms/LinkPreviewWidget.js
src/components/views/rooms/MemberDeviceInfo.js
src/components/views/rooms/MemberInfo.js
src/components/views/rooms/MemberList.js
src/components/views/rooms/MemberTile.js
src/components/views/rooms/MessageComposer.js
src/components/views/rooms/MessageComposerInput.js
src/components/views/rooms/MessageComposerInputOld.js
src/components/views/rooms/PresenceLabel.js
src/components/views/rooms/ReadReceiptMarker.js
src/components/views/rooms/RoomHeader.js
src/components/views/rooms/RoomList.js
src/components/views/rooms/RoomNameEditor.js
src/components/views/rooms/RoomPreviewBar.js
src/components/views/rooms/RoomSettings.js
src/components/views/rooms/RoomTile.js
src/components/views/rooms/RoomTopicEditor.js
src/components/views/rooms/SearchableEntityList.js
src/components/views/rooms/SearchResultTile.js
src/components/views/rooms/TabCompleteBar.js
src/components/views/rooms/TopUnreadMessagesBar.js
src/components/views/rooms/UserTile.js
src/components/views/settings/AddPhoneNumber.js
src/components/views/settings/ChangeAvatar.js
src/components/views/settings/ChangeDisplayName.js
src/components/views/settings/ChangePassword.js
src/components/views/settings/DevicesPanel.js
src/components/views/settings/DevicesPanelEntry.js
src/components/views/settings/EnableNotificationsButton.js
src/components/views/voip/CallView.js
src/components/views/voip/IncomingCallBox.js
src/components/views/voip/VideoFeed.js
src/components/views/voip/VideoView.js
src/ContentMessages.js
src/createRoom.js
src/DateUtils.js
src/email.js
src/Entities.js
src/extend.js
src/HtmlUtils.js
src/ImageUtils.js
src/Invite.js
src/languageHandler.js
src/linkify-matrix.js
src/Login.js
src/Markdown.js
src/MatrixClientPeg.js
src/Modal.js
src/Notifier.js
src/ObjectUtils.js
src/PasswordReset.js
src/PlatformPeg.js
src/Presence.js
src/ratelimitedfunc.js
src/Resend.js
src/RichText.js
src/Roles.js
src/RoomListSorter.js
src/RoomNotifs.js
src/Rooms.js
src/RtsClient.js
src/ScalarAuthClient.js
src/ScalarMessaging.js
src/SdkConfig.js
src/Skinner.js
src/SlashCommands.js
src/stores/LifecycleStore.js
src/TabComplete.js
src/TabCompleteEntries.js
src/TextForEvent.js
src/Tinter.js
src/UiEffects.js
src/Unread.js
src/UserActivity.js
src/utils/DecryptFile.js
src/utils/DMRoomMap.js
src/utils/FormattingUtils.js
src/utils/MegolmExportEncryption.js
src/utils/MultiInviter.js
src/utils/Receipt.js
src/Velociraptor.js
src/VelocityBounce.js
src/WhoIsTyping.js
src/wrappers/WithMatrixClient.js
test/all-tests.js
test/components/structures/login/Registration-test.js
test/components/structures/MessagePanel-test.js
test/components/structures/ScrollPanel-test.js
test/components/structures/TimelinePanel-test.js
test/components/stub-component.js
test/components/views/dialogs/InteractiveAuthDialog-test.js
test/components/views/elements/MemberEventListSummary-test.js
test/components/views/login/RegistrationForm-test.js
test/components/views/rooms/MessageComposerInput-test.js
test/mock-clock.js
test/skinned-sdk.js
test/stores/RoomViewStore-test.js
test/test-utils.js
test/utils/MegolmExportEncryption-test.js

View file

@ -5,6 +5,4 @@ install:
- npm install
- (cd node_modules/matrix-js-sdk && npm install)
script:
# don't run the riot tests unless the react-sdk tests pass, otherwise
# the output is confusing.
- npm run test && ./.travis-test-riot.sh
./scripts/travis.sh

View file

@ -21,6 +21,11 @@ npm run test
# run eslint
npm run lintall -- -f checkstyle -o eslint.xml || true
# re-run the linter, excluding any files known to have errors or warnings.
./node_modules/.bin/eslint --max-warnings 0 \
--ignore-path .eslintignore.errorfiles \
src test
# delete the old tarball, if it exists
rm -f matrix-react-sdk-*.tgz

View file

@ -0,0 +1,21 @@
#!/bin/sh
#
# generates .eslintignore.errorfiles to list the files which have errors in,
# so that they can be ignored in future automated linting.
out=.eslintignore.errorfiles
cd `dirname $0`/..
echo "generating $out"
{
cat <<EOF
# autogenerated file: run scripts/generate-eslint-error-ignore-file to update.
EOF
./node_modules/.bin/eslint --no-ignore -f json src test |
jq -r '.[] | select((.errorCount + .warningCount) > 0) | .filePath' |
sed -e 's/.*matrix-react-sdk\///';
} > "$out"

11
scripts/travis.sh Executable file
View file

@ -0,0 +1,11 @@
#!/bin/sh
set -ex
npm run test
./.travis-test-riot.sh
# run the linter, but exclude any files known to have errors or warnings.
./node_modules/.bin/eslint --max-warnings 0 \
--ignore-path .eslintignore.errorfiles \
src test

View file

@ -625,8 +625,15 @@ module.exports = React.createClass({
autoJoin: roomInfo.auto_join,
};
if (!roomInfo.room_alias) {
newState.currentRoomId = roomInfo.room_id;
if (roomInfo.room_alias) {
console.log(
`Switching to room alias ${roomInfo.room_alias} at event ` +
roomInfo.event_id,
);
} else {
console.log(`Switching to room id ${roomInfo.room_id} at event ` +
roomInfo.event_id,
);
}
// Wait for the first sync to complete so that if a room does have an alias,

View file

@ -902,6 +902,9 @@ var TimelinePanel = React.createClass({
var onError = (error) => {
this.setState({timelineLoading: false});
console.error(
`Error loading timeline panel at ${eventId}: ${error}`,
);
var msg = error.message ? error.message : JSON.stringify(error);
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");

View file

@ -23,7 +23,7 @@ const HomeButton = function(props) {
const ActionButton = sdk.getComponent('elements.ActionButton');
return (
<ActionButton action="view_home_page"
label={ _t("Welcome page") }
label={ _t("Home") }
iconPath="img/icons-home.svg"
size={props.size}
tooltip={props.tooltip}

View file

@ -114,7 +114,7 @@
"Failed to change password. Is your password correct?": "Passwortänderung fehlgeschlagen. Ist dein Passwort richtig?",
"Failed to forget room": "Vergessen des Raums schlug fehl",
"Failed to leave room": "Verlassen des Raums fehlgeschlagen",
"Failed to reject invitation": "Fehler beim Abweisen der Einladung",
"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 upload file": "Datei-Upload fehlgeschlagen",
@ -127,7 +127,7 @@
"Found a bug?": "Fehler gefunden?",
"Guests cannot join this room even if explicitly invited.": "Gäste können diesem Raum nicht beitreten, auch wenn sie explizit eingeladen wurden.",
"Guests can't set avatars. Please register.": "Gäste können kein Profilbild setzen. Bitte registrieren.",
"Guest users can't upload files. Please register to upload.": "Gäste können keine Dateien hochladen. Bitte registrieren um hochzuladen.",
"Guest users can't upload files. Please register to upload.": "Gäste können keine Dateien hochladen. Bitte zunächst registrieren.",
"had": "hatte",
"Hangup": "Auflegen",
"Homeserver is": "Der Homeserver ist",
@ -182,7 +182,7 @@
"Once you&#39;ve followed the link it contains, click below": "Nachdem du dem darin enthaltenen Link gefolgt bist, klicke unten",
"rejected the invitation.": "lehnte die Einladung ab.",
"Reject invitation": "Einladung ablehnen",
"Remove Contact Information?": "Kontakt-Informationen löschen?",
"Remove Contact Information?": "Kontakt-Informationen entfernen?",
"removed their display name": "löschte den eigenen Anzeigenamen",
"Remove": "Entfernen",
"requested a VoIP conference": "hat eine VoIP-Konferenz angefordert",
@ -227,7 +227,7 @@
"to join the discussion": "um an der Diskussion teilzunehmen",
"To kick users": "Um Nutzer zu entfernen",
"Admin": "Administrator",
"Server may be unavailable, overloaded, or you hit a bug.": "Server könnte nicht verfügbar oder überlastet sein oder du bist auf einen Fehler gestoßen.",
"Server may be unavailable, overloaded, or you hit a bug.": "Server ist nicht verfügbar, überlastet oder du bist auf einen Fehler gestoßen.",
"Could not connect to the integration server": "Konnte keine Verbindung zum Integrations-Server herstellen",
"Disable inline URL previews by default": "URL-Vorschau im Chat standardmäßig deaktivieren",
"Guests can't use labs features. Please register.": "Gäste können keine Labor-Funktionen nutzen. Bitte registrieren.",
@ -271,7 +271,7 @@
"Who would you like to communicate with?": "Mit wem möchtest du kommunizieren?",
"Would you like to": "Möchtest du",
"You do not have permission to post to this room": "Du hast keine Berechtigung an diesen Raum etwas zu senden",
"You have been invited to join this room by %(inviterName)s": "Du wurdest von %(inviterName)s in diesen Raum eingeladen",
"You have been invited to join this room by %(inviterName)s": "%(inviterName)s hat dich in diesen Raum eingeladen",
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Du wurdest auf allen Geräten abgemeldet und wirst keine Push-Benachrichtigungen mehr erhalten. Um die Benachrichtigungen zu reaktivieren, musst du dich auf jedem Gerät neu anmelden",
"you must be a": "nötige Rolle",
"Your password has been reset": "Dein Passwort wurde zurückgesetzt",
@ -281,14 +281,14 @@
"Bulk Options": "Bulk-Optionen",
"Call Timeout": "Anruf-Timeout",
"Conference call failed.": "Konferenzgespräch fehlgeschlagen.",
"Conference calling is in development and may not be reliable.": "Konferenzgespräche sind in Entwicklung und evtl. nicht zuverlässig.",
"Conference calling is in development and may not be reliable.": "Konferenzgespräche befinden sich noch in der Entwicklungsphase und sind möglicherweise nicht zuverlässig nutzbar.",
"Conference calls are not supported in encrypted rooms": "Konferenzgespräche werden in verschlüsselten Räumen nicht unterstützt",
"Conference calls are not supported in this client": "Konferenzgespräche werden von diesem Client nicht unterstützt",
"Existing Call": "Bereits bestehender Anruf",
"Failed to set up conference call": "Konferenzgespräch konnte nicht gestartet werden",
"Failed to verify email address: make sure you clicked the link in the email": "Verifizierung der E-Mail-Adresse fehlgeschlagen: Bitte stelle sicher, dass du den Link in der E-Mail angeklickt hast",
"Failure to create room": "Raumerstellung fehlgeschlagen",
"Guest users can't create new rooms. Please register to create room and start a chat.": "Gäste können keine neuen Räume erstellen. Bitte registrieren um einen Raum zu erstellen und einen Chat zu starten.",
"Guest users can't create new rooms. Please register to create room and start a chat.": "Gastnutzer können keine neuen Räume erstellen. Bitte registriere dich um Räume zu erstellen und Chats zu starten.",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot hat keine Berechtigung Benachrichtigungen zu senden - bitte prüfe deine Browser-Einstellungen",
"Riot was not given permission to send notifications - please try again": "Riot hat das Recht nicht bekommen Benachrichtigungen zu senden. Bitte erneut probieren",
"This email address is already in use": "Diese E-Mail-Adresse wird bereits verwendet",
@ -302,11 +302,11 @@
"Unable to enable Notifications": "Benachrichtigungen konnten nicht aktiviert werden",
"Upload Failed": "Upload fehlgeschlagen",
"VoIP is unsupported": "VoIP wird nicht unterstützt",
"You are already in a call.": "Du bist bereits bei einem Anruf.",
"You are already in a call.": "Du bist bereits in einem Gespräch.",
"You cannot place a call with yourself.": "Du kannst keinen Anruf mit dir selbst starten.",
"You cannot place VoIP calls in this browser.": "Du kannst kein VoIP-Gespräch in diesem Browser starten.",
"You cannot place VoIP calls in this browser.": "Du kannst keine VoIP-Gespräche in diesem Browser starten.",
"You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Du musst dich erneut anmelden, um Ende-zu-Ende-Verschlüsselungs-Schlüssel für dieses Gerät zu generieren und um den öffentlichen Schlüssel auf deinem Homeserver zu hinterlegen. Dies muss nur einmal durchgeführt werden, bitte entschuldige die Unannehmlichkeiten.",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Deine E-Mail-Adresse scheint nicht mit einer Matrix-ID auf diesem Homeserver verknüpft zu sein.",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Deine E-Mail-Adresse scheint nicht mit einer Matrix-ID auf diesem Heimserver verbunden zu sein.",
"Sun": "So",
"Mon": "Mo",
"Tue": "Di",
@ -377,7 +377,7 @@
"Power level must be positive integer.": "Berechtigungslevel muss eine positive ganze Zahl sein.",
"Reason": "Grund",
"%(targetName)s rejected the invitation.": "%(targetName)s hat die Einladung abgelehnt.",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s löschte den Anzeigenamen (%(oldDisplayName)s).",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s hat den Anzeigenamen entfernt (%(oldDisplayName)s).",
"%(senderName)s removed their profile picture.": "%(senderName)s hat das Profilbild gelöscht.",
"%(senderName)s requested a VoIP conference.": "%(senderName)s möchte eine VoIP-Konferenz beginnen.",
"Room %(roomId)s not visible": "Raum %(roomId)s ist nicht sichtbar",
@ -418,7 +418,7 @@
"Press": "Drücke",
"tag as %(tagName)s": "als %(tagName)s taggen",
"to browse the directory": "um das Raum-Verzeichnis zu durchsuchen",
"to demote": "um die Priorität herabzusetzen",
"to demote": "um das Berechtigungslevel herabzusetzen",
"to favourite": "zum Favorisieren",
"to make a room or": "um einen Raum zu erstellen, oder",
"to restore": "zum wiederherstellen",
@ -581,7 +581,6 @@
"Failed to save settings": "Einstellungen konnten nicht gespeichert werden",
"Failed to set display name": "Anzeigename konnte nicht gesetzt werden",
"Fill screen": "Fülle Bildschirm",
"Guest users can't upload files. Please register to upload.": "Gäste können keine Dateien hochladen. Bitte zunächst registrieren.",
"Hide Text Formatting Toolbar": "Verberge Text-Formatierungs-Toolbar",
"Incorrect verification code": "Falscher Verifizierungscode",
"Invalid alias format": "Ungültiges Alias-Format",
@ -608,16 +607,17 @@
"Server error": "Server-Fehler",
"Server may be unavailable, overloaded, or search timed out :(": "Der Server ist entweder nicht verfügbar, überlastet oder die Suche wurde wegen Zeitüberschreitung abgebrochen :(",
"Server may be unavailable, overloaded, or the file too big": "Server ist entweder nicht verfügbar, überlastet oder die Datei ist zu groß",
"Server unavailable, overloaded, or something else went wrong.": "Der Server ist entweder nicht verfügbar, überlastet oder es liegt ein anderweitiger Fehler vor.",
"Some of your messages have not been sent.": "Einige deiner Nachrichten wurden noch nicht gesendet.",
"Server unavailable, overloaded, or something else went wrong.": "Server nicht verfügbar, überlastet oder etwas anderes lief falsch.",
"Some of your messages have not been sent.": "Einige deiner Nachrichten wurden nicht gesendet.",
"Submit": "Absenden",
"The main address for this room is: %(canonical_alias_section)s": "Die Hauptadresse für diesen Raum ist: %(canonical_alias_section)s",
"This action cannot be performed by a guest user. Please register to be able to do this": "Diese Aktion kann nicht von einem Gast ausgeführt werden. Bitte registriere dich um dies zu tun",
"%(actionVerb)s this person?": "Diese Person %(actionVerb)s?",
"This room has no local addresses": "Dieser Raum hat keine lokale Adresse",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Versuchte einen spezifischen Punkt in der Raum-Chronik zu laden, aber du hast keine Berechtigung die angeforderte Nachricht anzuzeigen.",
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Der Versuch, einen spezifischen Punkt im Chatverlauf zu laden, ist fehlgeschlagen. Der Punkt konnte nicht gefunden werden.",
"Turn Markdown off": "Markdown abschalten",
"This room is private or inaccessible to guests. You may be able to join if you register": "Dieser Raum ist privat oder für Gäste nicht zugänglich. Du kannst jedoch eventuell beitreten, wenn du dich registrierst",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question": "Versuchte einen spezifischen Punkt in der Raum-Chronik zu laden, aber du hast keine Berechtigung die angeforderte Nachricht anzuzeigen",
"Tried to load a specific point in this room's timeline, but was unable to find it": "Der Versuch, einen spezifischen Punkt im Chatverlauf zu laden, ist fehlgeschlagen. Der Punkt konnte nicht gefunden werden",
"Turn Markdown off": "Markdown deaktiveren",
"Turn Markdown on": "Markdown einschalten",
"Unable to load device list": "Geräteliste konnte nicht geladen werden",
"Unknown command": "Unbekannter Befehl",
@ -725,7 +725,7 @@
"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.": "Eine Änderung des Passworts setzt derzeit alle Schlüssel für die E2E-Verschlüsselung auf allen verwendeten Geräten zurück. Bereits verschlüsselte Chat-Inhalte sind somit nur noch lesbar, wenn du zunächst alle Schlüssel exportierst und später wieder importierst. Wir arbeiten an einer Verbesserung dieser momentan noch notwendigen Vorgehensweise.",
"Unmute": "Stummschalten aufheben",
"Invalid file%(extra)s": "Ungültige Datei%(extra)s",
"Remove %(threePid)s?": "Entferne %(threePid)s?",
"Remove %(threePid)s?": "%(threePid)s entfernen?",
"Please select the destination room for this message": "Bitte den Raum auswählen, an den diese Nachricht gesendet werden soll",
"%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s hat den Raum-Namen gelöscht.",
"Passphrases must match": "Passphrase muss übereinstimmen",
@ -735,7 +735,6 @@
"Confirm passphrase": "Bestätige Passphrase",
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Die Export-Datei wird mit einer Passphrase geschützt sein. Du solltest die Passphrase hier eingeben um die Datei zu entschlüsseln.",
"You must join the room to see its files": "Du musst dem Raum beitreten, um die Raum-Dateien sehen zu können",
"Server may be unavailable, overloaded, or you hit a bug.": "Server ist nicht verfügbar, überlastet oder du bist auf einen Fehler gestoßen.",
"Reject all %(invitedRooms)s invites": "Alle %(invitedRooms)s Einladungen ablehnen",
"Start new Chat": "Starte neuen Chat",
"Guest users can't invite users. Please register.": "Gäste können keine Nutzer einladen. Bitte registrieren.",
@ -785,7 +784,7 @@
"This image cannot be displayed.": "Dieses Bild kann nicht angezeigt werden.",
"Error decrypting video": "Video-Entschlüsselung fehlgeschlagen",
"Import room keys": "Importiere Raum-Schlüssel",
"File to import": "Datei zum Importieren",
"File to import": "Zu importierende Datei",
"Failed to invite the following users to the %(roomName)s room:": "Das Einladen der folgenden Nutzer in den Raum \"%(roomName)s\" ist fehlgeschlagen:",
"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.": "Bist du sicher, dass du dieses Ereignis entfernen (löschen) möchtest? Wenn du die Änderung eines Raum-Namens oder eines Raum-Themas löscht, kann dies dazu führen, dass die ursprüngliche Änderung rückgängig gemacht wird.",
"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.": "Dieser Prozess erlaubt es dir, die Schlüssel für in verschlüsselten Räumen empfangene Nachrichten in eine lokale Datei zu exportieren. In Zukunft wird es möglich sein, diese Datei in einen anderen Matrix-Client zu importieren, sodass dieser Client ebenfalls diese Nachrichten entschlüsseln kann.",
@ -827,7 +826,7 @@
"Invited": "Eingeladen",
"Set a Display Name": "Setze einen Anzeigenamen",
"for %(amount)ss": "für %(amount)ss",
"for %(amount)sm": "für %(amount)sm",
"for %(amount)sm": "seit %(amount)smin",
"for %(amount)sh": "für %(amount)sh",
"for %(amount)sd": "für %(amount)sd",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s hat das Raum-Bild entfernt.",
@ -840,17 +839,13 @@
"Default Device": "Standard-Gerät",
"Microphone": "Mikrofon",
"Camera": "Kamera",
"Conference call failed.": "Konferenzgespräch fehlgeschlagen.",
"Conference calling is in development and may not be reliable.": "Konferenzgespräche befinden sich noch in der Entwicklungsphase und sind möglicherweise nicht zuverlässig nutzbar.",
"Device already verified!": "Gerät bereits verifiziert!",
"Export": "Export",
"Failed to register as guest:": "Registrieren als Gast schlug fehl:",
"Guest access is disabled on this Home Server.": "Gastzugang ist auf diesem Heimserver deaktivert.",
"Guest users can't create new rooms. Please register to create room and start a chat.": "Gastnutzer können keine neuen Räume erstellen. Bitte registriere dich um Räume zu erstellen und Chats zu starten.",
"Import": "Import",
"Incorrect username and/or password.": "Inkorrekter Nutzername und/oder Passwort.",
"Results from DuckDuckGo": "Ergebnisse von DuckDuckGo",
"Server unavailable, overloaded, or something else went wrong.": "Server nicht verfügbar, überlastet oder etwas anderes lief falsch.",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Den Signaturschlüssel den du bereitstellst stimmt mit dem Schlüssel den du von %(userId)s's Gerät %(deviceId)s empfangen hast überein. Gerät als verifiziert markiert.",
"Add a topic": "Thema hinzufügen",
"Anyone": "Jeder",
@ -878,13 +873,9 @@
"Verified key": "Verifizierter Schlüssel",
"WARNING: Device already verified, but keys do NOT MATCH!": "WARNUNG: Gerät bereits verifiziert, aber Schlüssel sind NICHT GLEICH!",
"WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "WARNUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signatur-Schlüssel für %(userId)s und Gerät %(deviceId)s ist \"%(fprint)s\" welche nicht dem bereitgestellten Schlüssel \"%(fingerprint)s\" übereinstimmen. Dies kann bedeuten, dass deine Kommunikation abgefangen wird!",
"You are already in a call.": "Du bist bereits in einem Gespräch.",
"You cannot place a call with yourself.": "Du kannst keinen Anruf mit dir selbst starten.",
"You cannot place VoIP calls in this browser.": "Du kannst keine VoIP-Gespräche in diesem Browser starten.",
"You have <a>disabled</a> URL previews by default.": "Du hast die URL-Vorschau standardmäßig <a>deaktiviert</a>.",
"You have <a>enabled</a> URL previews by default.": "Du hast die URL-Vorschau standardmäßig <a>aktiviert</a>.",
"You have entered an invalid contact. Try using their Matrix ID or email address.": "Du hast einen ungültigen Kontakt eingegeben. Versuche es mit der Matrix-ID oder der E-Mail-Adresse.",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Deine E-Mail-Adresse scheint nicht mit einer Matrix-ID auf diesem Heimserver verbunden zu sein.",
"$senderDisplayName changed the room avatar to <img/>": "$senderDisplayName hat das Raum-Bild geändert zu <img/>",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s hat das Raum-Bild für %(roomName)s geändert",
"Hide removed messages": "Gelöschte Nachrichten verbergen",
@ -895,17 +886,16 @@
"%(count)s new messages.other": "%(count)s neue Nachrichten",
"Error: Problem communicating with the given homeserver.": "Fehler: Problem beim kommunizieren mit dem angegebenen Heimserver.",
"Failed to fetch avatar URL": "Fehler beim holen der Avatar-URL",
"Some of your messages have not been sent.": "Einige deiner Nachrichten wurden nicht gesendet.",
"The phone number entered looks invalid": "Die Telefonnummer, die eingegeben wurde, sieht ungültig aus",
"This room is private or inaccessible to guests. You may be able to join if you register.": "Dieser Raum ist privat oder für Gäste nicht betretbar. Du kannst evtl. beitreten wenn du dich registrierst.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Es wurde versucht einen spezifischen Punkt in der Chat-Historie zu laden, aber du hast keine Berechtigung diese Nachricht zu sehen.",
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Es wurde versucht einen spezifischen Punkt in der Chat-Historie zu laden, aber er konnte nicht gefunden werden.",
"Uploading %(filename)s and %(count)s others.zero": "%(filename)s wird hochgeladen",
"Uploading %(filename)s and %(count)s others.one": "%(filename)s und %(count)s weitere werden hochgeladen",
"Uploading %(filename)s and %(count)s others.other": "%(filename)s und %(count)s weitere werden hochgeladen",
"Uploading %(filename)s and %(count)s others.one": "%(filename)s und %(count)s weitere Dateien werden hochgeladen",
"Uploading %(filename)s and %(count)s others.other": "%(filename)s und %(count)s weitere Dateien werden hochgeladen",
"You must <a>register</a> to use this functionality": "Du musst dich <a>registrieren</a> um diese Funktionalität zu nutzen",
"<a>Resend all</a> or <a>cancel all</a> now. You can also select individual messages to resend or cancel.": "<a>Sende erneut</a> oder <a>breche alles ab</a>. Du kannst auch auch individuelle Nachrichten erneut senden or abbrechen.",
"Create new room": "Erstelle neuen Raum",
"Create new room": "Neuen Raum erstellen",
"Welcome page": "Willkommensseite",
"Room directory": "Raum-Verzeichnis",
"Start chat": "Starte Chat",
@ -919,5 +909,7 @@
"Username not available": "Nutzername nicht verfügbar",
"Something went wrong!": "Etwas ging schief!",
"This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.": "Dies wird dein Konto-Name auf dem <span></span> Heimserver, oder du kannst einen <a>anderen Server</a> auswählen.",
"If you already have a Matrix account you can <a>log in</a> instead.": "Wenn du bereits ein Matrix-Konto hast, kannst du ansonsten auch <a>anmelden</a>."
"If you already have a Matrix account you can <a>log in</a> instead.": "Wenn du bereits ein Matrix-Benutzerkonto hast, kannst du dich stattdessen auch direkt <a>anmelden</a>.",
"Home": "Start",
"Username invalid: %(errMessage)s": "Nutzername falsch: %(errMessage)s"
}

View file

@ -325,6 +325,7 @@
"Hide read receipts": "Hide read receipts",
"Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar",
"Historical": "Historical",
"Home": "Home",
"Homeserver is": "Homeserver is",
"Identity Server is": "Identity Server is",
"I have verified my email address": "I have verified my email address",

View file

@ -829,5 +829,34 @@
"Hide removed messages": "Cacher les messages supprimés",
"Add": "Ajouter",
"%(count)s new messages.one": "%(count)s nouveau message",
"%(count)s new messages.other": "%(count)s nouveaux messages"
"%(count)s new messages.other": "%(count)s nouveaux messages",
"Disable markdown formatting": "Désactiver le formattage markdown",
"Error: Problem communicating with the given homeserver.": "Erreur: Problème de communication avec le homeserveur.",
"Failed to fetch avatar URL": "Échec lors de la récupération de lURL de lavatar",
"The phone number entered looks invalid": "Le numéro de téléphone entré semble être invalide",
"Guest users can't upload files. Please register to upload.": "Les visiteurs ne peuvent pas télécharger de fichier. Veuillez vous enregistrer pour télécharger.",
"Some of your messages have not been sent.": "Certains de vos messages nont pas été envoyés.",
"This room is private or inaccessible to guests. You may be able to join if you register.": "Ce salon est privé ou interdits aux visiteurs. Vous pourrez peut-être le joindre si vous vous enregistrez.",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Un instant donné de la chronologie na pu être chargé car vous navez pas la permission de le visualiser.",
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Un instant donné de la chronologie na pu être chargé car il na pas pu être trouvé.",
"Uploading %(filename)s and %(count)s others.zero": "Téléchargement de %(filename)s",
"Uploading %(filename)s and %(count)s others.one": "Téléchargement de %(filename)s et %(count)s autre",
"Uploading %(filename)s and %(count)s others.other": "Téléchargement de %(filename)s et %(count)s autres",
"You must <a>register</a> to use this functionality": "Vous devez vous <a>inscrire</a> pour utiliser cette fonctionnalité",
"<a>Resend all</a> or <a>cancel all</a> now. You can also select individual messages to resend or cancel.": "<a>Tout renvoyer</a> or <a>tout annuler</a> maintenant. Vous pouvez aussi sélectionner des messages individuels à envoyer ou annuler.",
"Create new room": "Créer un nouveau salon",
"Welcome page": "Page d'accueil",
"Room directory": "Répertoire des salons",
"Start chat": "Démarrer une discussion",
"New Password": "Nouveau mot de passe",
"Start chatting": "Démarrer une discussion",
"Start Chatting": "Démarrer une discussion",
"Click on the button below to start chatting!": "Cliquer sur le bouton ci-dessous pour commencer une discussion !",
"Create a new chat or reuse an existing one": "Démarrer une nouvelle discussion ou en réutiliser une existante",
"You already have existing direct chats with this user:": "Vous avez déjà des discussions en cours avec cet utilisateur :",
"Username available": "Nom d'utilisateur disponible",
"Username not available": "Nom d'utilisateur indisponible",
"Something went wrong!": "Quelque chose sest mal passé !",
"This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.": "Cela sera le nom de votre compte sur le serveur <span></span>, ou vous pouvez sélectionner un <a>autre serveur</a>.",
"If you already have a Matrix account you can <a>log in</a> instead.": "Si vous avez déjà un compte Matrix vous pouvez vous <a>identifier</a> à la place."
}

View file

@ -92,14 +92,14 @@
"Found a bug?": "Нашли ошибку?",
"had": "имеет",
"Hangup": "Отключение",
"Historical": "Исторический",
"Historical": "История",
"Homeserver is": "Домашний сервер является",
"Identity Server is": "Регистрационный сервер",
"I have verified my email address": "Я проверил мой адрес электронной почты",
"Import E2E room keys": "Импортировать E2E ключ комнаты",
"Invalid Email Address": "Недействительный адрес электронной почты",
"invited": "invited",
"Invite new room members": "Прегласить новых учасников комнаты",
"Invite new room members": "Пригласить новых учасников в комнату",
"Invites": "Приглашать",
"Invites user with given id to current room": "Пригласить пользователя с данным id в текущую комнату",
"is a": "является",
@ -119,13 +119,13 @@
"Logout": "Выход из системы",
"Low priority": "Низкий приоритет",
"made future room history visible to": "made future room history visible to",
"Manage Integrations": "Управление интеграций",
"Manage Integrations": "Управление интеграциями",
"Members only": "Только участники",
"Mobile phone number": "Номер мобильного телефона",
"Moderator": "Ведущий",
"my Matrix ID": "мой Matrix ID",
"Name": "Имя",
"Never send encrypted messages to unverified devices from this device": "Никогда не отправляйте зашифрованные сообщения в непроверенные устройства с этого устройства",
"Never send encrypted messages to unverified devices from this device": "Никогда не отправлять зашифрованные сообщения на неверифицированные устроства с этого устройства",
"Never send encrypted messages to unverified devices in this room from this device": "Никогда не отправляйте зашифрованные сообщения в непроверенные устройства в этой комнате из этого устройства",
"New password": "Новый пароль",
"New passwords must match each other.": "Новые пароли должны соответствовать друг другу.",
@ -190,7 +190,7 @@
"Voice call": "Голосовой вызов",
"VoIP conference finished.": "VoIP конференция закончилась.",
"VoIP conference started.": "VoIP Конференция стартовала.",
"(warning: cannot be disabled again!)": "(предупреждение: не может быть снова отключен!)",
"(warning: cannot be disabled again!)": "(предупреждение: не может быть отключено!)",
"Warning!": "Предупреждение!",
"was banned": "запрещен",
"was invited": "приглашенный",
@ -200,7 +200,7 @@
"were": "быть",
"Who can access this room?": "Кто может получить доступ к этой комнате?",
"Who can read history?": "Кто может читать историю?",
"Who would you like to add to this room?": "Кого хотели бы Вы добавлять к этой комнате?",
"Who would you like to add to this room?": "Кого бы вы хотели пригласить в эту комнату?",
"Who would you like to communicate with?": "С кем хотели бы Вы связываться?",
"withdrawn": "уходить",
"Would you like to": "Хотели бы Вы",
@ -658,7 +658,7 @@
"powered by Matrix": "управляемый с Matrix",
"Add a topic": "Добавить тему",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Времея отображать в 12 часовом формате (напр. 2:30pm)",
"Use compact timeline layout": "Используйте компактным указанием времени",
"Use compact timeline layout": "Компактное отображение",
"Hide removed messages": "Скрыть удаленное сообщение",
"No Microphones detected": "Микрофоны не обнаружены",
"Unknown devices": "Незнакомое устройство",
@ -864,5 +864,35 @@
"Disable URL previews for this room (affects only you)": "Отключить предпросмотр URL в этой комнате (только для вас)",
"$senderDisplayName changed the room avatar to <img/>": "$senderDisplayName сменил аватар комнаты на <img/>",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s удалил аватар комнаты.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s сменил аватар для %(roomName)s"
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s сменил аватар для %(roomName)s",
"Create new room": "Создать комнату",
"Room directory": "Каталог комнат",
"Start chat": "Начать чат",
"Welcome page": "Домашняя страница",
"Add": "Добавить",
"%(count)s new messages.one": "%(count)s новое сообщение",
"%(count)s new messages.other": "%(count)s новых сообщений",
"Error: Problem communicating with the given homeserver.": "Ошибка: проблема коммуникаций с указанным Home Server'ом.",
"Failed to fetch avatar URL": "Ошибка получения аватара",
"The phone number entered looks invalid": "Введенный номер телефона выглядит неправильным",
"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.": "Ошибка загрузки истории комнаты: запрошенный элемент не найден.",
"Uploading %(filename)s and %(count)s others.zero": "Загрузка %(filename)s",
"Uploading %(filename)s and %(count)s others.one": "Загрузка %(filename)s и %(count)s другой файл",
"Uploading %(filename)s and %(count)s others.other": "Загрузка %(filename)s и %(count)s других файлов",
"Username invalid: %(errMessage)s": "Неверное имя пользователя: %(errMessage)s",
"Searching known users": "Искать известных пользователей",
"You must <a>register</a> to use this functionality": "Вы должны <a>зарегистрироваться</a> для использования этой функции",
"<a>Resend all</a> or <a>cancel all</a> now. You can also select individual messages to resend or cancel.": "<a>Отослать снова</a> или <a>отменить отправку</a>. Вы также можете выбрать на отправку или отмену отдельные сообщения.",
"New Password": "Новый пароль",
"Start chatting": "Начать общение",
"Start Chatting": "Начать общение",
"Click on the button below to start chatting!": "Нажмите на кнопку ниже для того, чтобы начать общение!",
"Create a new chat or reuse an existing one": "Создать новый чат или использовать уже существующий",
"You already have existing direct chats with this user:": "У вас уже есть существующие приватные чаты с этим пользователем:",
"Username available": "Имя пользователя доступно",
"Username not available": "Имя пользователя недоступно",
"Something went wrong!": "Что-то пошло не так!",
"This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.": "Это будет ваше имя пользователя на <span></span>, или вы можете выбрать <a>другой сервер</a>.",
"If you already have a Matrix account you can <a>log in</a> instead.": "Если вы уже имеете учетную запись Matrix, то вы можете <a>войти</a>."
}

View file

@ -201,7 +201,7 @@
"Hangup": "วางสาย",
"Historical": "ประวัติแชทเก่า",
"Homeserver is": "เซิร์ฟเวอร์บ้านคือ",
"Identity Server is": "เซิร์ฟเวอร์ยืนยันตัวตนคือ",
"Identity Server is": "เซิร์ฟเวอร์ระบุตัวตนคือ",
"I have verified my email address": "ฉันยืนยันที่อยู่อีเมลแล้ว",
"Import": "นำเข้า",
"Incorrect username and/or password.": "ชื่อผู้ใช้และ/หรือรหัสผ่านไม่ถูกต้อง",
@ -229,7 +229,7 @@
"Leave room": "ออกจากห้อง",
"left and rejoined": "ออกแล้วกลับเข้าร่วมอีกครั้ง",
"left": "ออกไปแล้ว",
"%(targetName)s left the room.": "%(targetName)s ออกจากห้องไปแล้ว",
"%(targetName)s left the room.": "%(targetName)s ออกจากห้องแล้ว",
"List this room in %(domain)s's room directory?": "แสดงห้องนี้ในไดเรกทอรีห้องของ %(domain)s?",
"Logged in as:": "เข้าสู่ระบบในชื่อ:",
"Login as guest": "เข้าสู่ระบบในฐานะแขก",
@ -322,7 +322,7 @@
"This is a preview of this room. Room interactions have been disabled": "นี่คือตัวอย่างของห้อง การตอบสนองภายในห้องถูกปิดใช้งาน",
"This phone number is already in use": "หมายเลขโทรศัพท์นี้ถูกใช้งานแล้ว",
"This room's internal ID is": "ID ภายในของห้องนี้คือ",
"times": "เวลา",
"times": "ครั้ง",
"%(oneUser)schanged their name": "%(oneUser)sเปลี่ยนชื่อของเขาแล้ว",
"%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)sเปลี่ยนชื่อของพวกเขา %(repeats)s ครั้ง",
"%(oneUser)schanged their name %(repeats)s times": "%(oneUser)sเปลี่ยนชื่อของเขา %(repeats)s ครั้ง",
@ -330,5 +330,153 @@
"Create new room": "สร้างห้องใหม่",
"Room directory": "ไดเรกทอรีห้อง",
"Start chat": "เริ่มแชท",
"Welcome page": "หน้าต้อนรับ"
"Welcome page": "หน้าต้อนรับ",
"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>.": "ไม่สามารถเชื่อมต่อไปยังเซิร์ฟเวอร์บ้านผ่านทาง HTTP ได้เนื่องจาก URL ที่อยู่บนเบราว์เซอร์เป็น HTTPS กรุณาใช้ HTTPS หรือ<a>เปิดใช้งานสคริปต์ที่ไม่ปลอดภัย</a>.",
"%(count)s new messages.one": "มี %(count)s ข้อความใหม่",
"%(count)s new messages.other": "มี %(count)s ข้อความใหม่",
"Disable inline URL previews by default": "ตั้งค่าเริ่มต้นให้ไม่แสดงตัวอย่าง URL ในแชท",
"Disable markdown formatting": "ปิดใช้งานการจัดรูปแบบ markdown",
"End-to-end encryption information": "ข้อมูลการเข้ารหัสจากปลายทางถึงปลายทาง",
"End-to-end encryption is in beta and may not be reliable": "การเข้ารหัสจากปลายทางถึงปลายทางยังอยู่ในเบต้า และอาจพึ่งพาไม่ได้",
"Error: Problem communicating with the given homeserver.": "ข้อผิดพลาด: มีปัญหาในการติดต่อกับเซิร์ฟเวอร์บ้านที่กำหนด",
"Export E2E room keys": "ส่งออกกุญแจถอดรหัส E2E",
"Failed to change power level": "การเปลี่ยนระดับอำนาจล้มเหลว",
"Import E2E room keys": "นำเข้ากุญแจถอดรหัส E2E",
"to favourite": "ไปยังรายการโปรด",
"to demote": "เพื่อลดขั้น",
"The default role for new room members is": "บทบาทเริ่มต้นของสมาชิกใหม่คือ",
"The phone number entered looks invalid": "ดูเหมือนว่าหมายเลขโทรศัพท์ที่กรอกรมาไม่ถูกต้อง",
"The email address linked to your account must be entered.": "กรุณากรอกที่อยู่อีเมลที่เชื่อมกับบัญชีของคุณ",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "ไฟล์ '%(fileName)s' มีขนาดใหญ่เกินจำกัดของเซิร์ฟเวอร์บ้าน",
"To send messages": "เพื่อส่งข้อความ",
"to start a chat with someone": "เพื่อเริ่มแชทกับผู้อื่น",
"to tag as %(tagName)s": "เพื่อแท็กว่า %(tagName)s",
"to tag direct chat": "เพื่อแทกว่าแชทตรง",
"Turn Markdown off": "ปิด markdown",
"Turn Markdown on": "เปิด markdown",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ได้เปิดใช้งานการเข้ารหัสจากปลายทางถึงปลายทาง (อัลกอริทึม%(algorithm)s).",
"Unable to add email address": "ไมาสามารถเพิ่มที่อยู่อีเมล",
"Unable to verify email address.": "ไม่สามารถยืนยันที่อยู่อีเมล",
"Unban": "ปลดแบน",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s ปลดแบน %(targetName)s แล้ว",
"Unable to capture screen": "ไม่สามารถจับภาพหน้าจอ",
"Unable to enable Notifications": "ไม่สามารถเปิดใช้งานการแจ้งเตือน",
"Unable to load device list": "ไม่สามารถโหลดรายชื่ออุปกรณ์",
"Unencrypted room": "ห้องที่ไม่เข้ารหัส",
"unencrypted": "ยังไม่ได้เข้ารหัส",
"Unknown command": "คำสั่งที่ไม่รู้จัก",
"unknown device": "อุปกรณ์ที่ไม่รู้จัก",
"Unknown room %(roomId)s": "ห้องที่ไม่รู้จัก %(roomId)s",
"Unknown (user, device) pair:": "คู่ (ผู้ใช้, อุปกรณ์) ที่ไม่รู้จัก:",
"unknown": "ไม่รู้จัก",
"Unrecognised command:": "คำสั่งที่ไม่รู้จัก:",
"Unrecognised room alias:": "นามแฝงห้องที่ไม่รู้จัก:",
"Uploading %(filename)s and %(count)s others.zero": "กำลังอัปโหลด %(filename)s",
"Uploading %(filename)s and %(count)s others.one": "กำลังอัปโหลด %(filename)s และอีก %(count)s ไฟล์",
"Uploading %(filename)s and %(count)s others.other": "กำลังอัปโหลด %(filename)s และอีก %(count)s ไฟล์",
"uploaded a file": "อัปโหลดไฟล์",
"Upload Failed": "การอัปโหลดล้มเหลว",
"Upload Files": "อัปโหลดไฟล์",
"Upload file": "อัปโหลดไฟล์",
"Usage": "การใช้งาน",
"User ID": "ID ผู้ใช้",
"User Interface": "อินเตอร์เฟสผู้ใช้",
"User name": "ชื่อผู้ใช้",
"User": "ผู้ใช้",
"Warning!": "คำเตือน!",
"Who can access this room?": "ใครสามารถเข้าถึงห้องนี้ได้?",
"Who can read history?": "ใครสามารถอ่านประวัติแชทได้?",
"Who would you like to add to this room?": "คุณต้องการเพิ่มใครเข้าห้องนี้?",
"Who would you like to communicate with?": "คุณต้องการสื่อสารกับใคร?",
"You're not in any rooms yet! Press": "คุณยังไม่ได้อยู่ในห้องใดเลย! กด",
"You are trying to access %(roomName)s": "คุณกำลังพยายามเข้าสู่ %(roomName)s",
"You have <a>disabled</a> URL previews by default.": "ค่าเริ่มต้นของคุณ<a>ปิดใช้งาน</a>ตัวอย่าง URL เอาไว้",
"You have <a>enabled</a> URL previews by default.": "ค่าเริ่มต้นของคุณ<a>เปิดใช้งาน</a>ตัวอย่าง URL เอาไว้",
"you must be a": "คุณต้องเป็น",
"You must <a>register</a> to use this functionality": "คุณต้อง<a>ลงทะเบียน</a>เพื่อใช้ฟังก์ชันนี้",
"You need to be logged in.": "คุณต้องเข้าสู่ระบบก่อน",
"You need to enter a user name.": "คุณต้องกรอกชื่อผู้ใช้ก่อน",
"Your password has been reset": "รหัสผ่านถูกรีเซ็ตแล้ว",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "การเปลี่ยนรหัสผ่านเสร็จสมบูณณ์ คุณจะไม่ได้รับการแจ้งเตือนบนอุปกรณ์อื่น ๆ จนกว่าคุณจะกลับเข้าสู่ระบบในอุปกรณ์เหล่านั้น",
"Sun": "อา.",
"Mon": "จ.",
"Tue": "อ.",
"Wed": "พ.",
"Thu": "พฤ.",
"Fri": "ศ.",
"Sat": "ส.",
"Jan": "ม.ค.",
"Feb": "ก.พ.",
"Mar": "มี.ค.",
"Apr": "เม.ย.",
"May": "พ.ค.",
"Jun": "มิ.ย.",
"Jul": "ก.ค.",
"Aug": "ส.ค.",
"Sep": "ก.ย.",
"Oct": "ต.ค.",
"Nov": "พ.ย.",
"Dec": "ธ.ค.",
"%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s %(day)s %(monthName)s %(time)s",
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s %(day)s %(monthName)s %(fullYear)s %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
"Set a display name:": "ตั้งชื่อที่แสดง:",
"Set a Display Name": "ตั้งชื่อที่แสดง",
"Passwords don't match.": "รหัสผ่านไม่ตรงกัน",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "รหัสผ่านสั้นเกินไป (ขึ้นต่ำ %(MIN_PASSWORD_LENGTH)s ตัวอักษร)",
"An unknown error occurred.": "เกิดข้อผิดพลาดที่ไม่รู้จัก",
"I already have an account": "ฉันมีบัญชีอยู่แล้ว",
"An error occured: %(error_string)s": "เกิดข้อผิดพลาด: %(error_string)s",
"Topic": "หัวข้อ",
"Make Moderator": "เลื่อนขั้นเป็นผู้ช่วยดูแล",
"Make this room private": "ทำให้ห้องนี้เป็นส่วนตัว",
"Share message history with new users": "แบ่งประวัติแชทให้ผู้ใช้ใหม่",
"Encrypt room": "เข้ารหัสห้อง",
"Room": "ห้อง",
"(~%(searchCount)s results)": "(~%(searchCount)s ผลลัพธ์)",
"or": "หรือ",
"bold": "หนา",
"italic": "เอียง",
"strike": "ขีดทับ",
"underline": "ขีดเส้นใต้",
"code": "โค๊ด",
"quote": "อ้างอิง",
"were kicked %(repeats)s times": "ถูกเตะ %(repeats)s ครั้ง",
"was kicked %(repeats)s times": "ถูกเตะ %(repeats)s ครั้ง",
"were kicked": "ถูกเตะ",
"was kicked": "ถูกเตะ",
"New Password": "รหัสผ่านใหม่",
"Options": "ตัวเลือก",
"Export room keys": "ส่งออกกุณแจห้อง",
"Confirm passphrase": "ยืนยันรหัสผ่าน",
"Import room keys": "นำเข้ากุณแจห้อง",
"File to import": "ไฟล์ที่จะนำเข้า",
"Start new chat": "เริ่มแชทใหม่",
"Failed to invite": "การเชิญล้มเหลว",
"Failed to invite user": "การเชิญผู้ใช้ล้มเหลว",
"Failed to invite the following users to the %(roomName)s room:": "การเชิญผู้ใช้เหล่านี้เข้าสู่ห้อง %(roomName)s ล้มเหลว:",
"Confirm Removal": "ยืนยันการลบ",
"Unknown error": "ข้อผิดพลาดที่ไม่รู้จัก",
"Incorrect password": "รหัสผ่านไม่ถูกต้อง",
"Device name": "ชื่ออุปกรณ์",
"Device key": "Key อุปกรณ์",
"Unknown devices": "อุปกรณ์ที่ไม่รู้จัก",
"Unknown Address": "ที่อยู่ที่ไม่รู้จัก",
"Unblacklist": "ถอดบัญชีดำ",
"Blacklist": "ขึ้นบัญชีดำ",
"ex. @bob:example.com": "เช่น @bob:example.com",
"Add User": "เพิ่มผู้ใช้",
"This Home Server would like to make sure you are not a robot": "เซิร์ฟเวอร์บ้านต้องการยืนยันว่าคุณไม่ใช่หุ่นยนต์",
"Sign in with CAS": "เข้าสู่ระบบด้วย CAS",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "คุณสามารถกำหนดเซิร์ฟเวอร์บ้านเองได้โดยใส่ URL ของเซิร์ฟเวอร์นั้น เพื่อเข้าสู่ระบบของเซิร์ฟเวอร์ Matrix อื่น",
"This allows you to use this app with an existing Matrix account on a different home server.": "ทั้งนี่เพื่อให้คุณสามารถใช้ Riot กับบัญชี Matrix ที่มีอยู่แล้วบนเซิร์ฟเวอร์บ้านอื่น ๆ ได้",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "คุณอาจเลือกเซิร์ฟเวอร์ระบุตัวตนเองด้วยก็ได้ แต่คุณจะไม่สามารถเชิญผู้ใช้อื่นด้วยที่อยู่อีเมล หรือรับคำเชิญจากผู้ใช้อื่นทางที่อยู่อีเมลได้",
"Default server": "เซิร์ฟเวอร์เริ่มต้น",
"Custom server": "เซิร์ฟเวอร์ที่กำหนดเอง",
"Home server URL": "URL เซิร์ฟเวอร์บ้าน",
"Identity server URL": "URL เซิร์ฟเวอร์ระบุตัวตน",
"%(severalUsers)sleft %(repeats)s times": "%(targetName)sออกจากห้อง %(repeats)s ครั้ง",
"%(oneUser)sleft %(repeats)s times": "%(oneUser)sออกจากห้อง %(repeats)s ครั้ง",
"%(severalUsers)sleft": "%(severalUsers)sออกจากห้องแล้ว",
"%(oneUser)sleft": "%(oneUser)sออกจากห้องแล้ว"
}