Merge branch 'develop' into maximee/3779_fix_reply_after_jump_unread

This commit is contained in:
MaximeE 2022-02-22 16:29:59 +01:00
commit 67910fcb53
117 changed files with 2716 additions and 1329 deletions

View file

@ -1,3 +1,55 @@
## Changes in 1.8.2 (2022-02-22)
✨ Features
- Add Onboarding Use Case selection screen after the splash screen. ([#5160](https://github.com/vector-im/element-ios/issues/5160))
🙌 Improvements
- Upgrade MatrixSDK version ([v0.22.2](https://github.com/matrix-org/matrix-ios-sdk/releases/tag/v0.22.2)).
- ActivityCenter: Use ActivityCenter to show loading indicators on the home screen (in DEBUG builds only) ([#4829](https://github.com/vector-im/element-ios/issues/4829))
- Enabled poll editing and undisclosed polls. Added support for unstable poll prefixes. ([#5114](https://github.com/vector-im/element-ios/issues/5114))
- Filter: update placeholder text and icon ([#5250](https://github.com/vector-im/element-ios/issues/5250))
- Create Room: Update avatar placeholder & add remove button ([#5251](https://github.com/vector-im/element-ios/issues/5251))
- Search: remove bubbles background ([#5471](https://github.com/vector-im/element-ios/issues/5471))
- Exclude all files and directories from iCloud and iTunes backup ([#5498](https://github.com/vector-im/element-ios/issues/5498))
- ThreadListViewModel: Use new apis to fetch threads. ([#5540](https://github.com/vector-im/element-ios/issues/5540))
- Search: Use bundled aggregations if provided. ([#5562](https://github.com/vector-im/element-ios/issues/5562))
- MXKRoomDataSource: Stop pagination in a thread when the root event received. ([#5582](https://github.com/vector-im/element-ios/issues/5582))
- Add support for UserProperties to analytics and capture FTUE use case selection. ([#5590](https://github.com/vector-im/element-ios/issues/5590))
- Add attribution to location sharing maps. ([#5609](https://github.com/vector-im/element-ios/issues/5609))
- Onboarding: Use a different green spinner during onboarding and use the one presented by the LegacyAppDelegate only when logged in. ([#5621](https://github.com/vector-im/element-ios/issues/5621))
- MXKRoomDataSource: Enable usage of thread timelines. ([#5629](https://github.com/vector-im/element-ios/issues/5629))
🐛 Bugfixes
- Home Tab: Initial support for navigating through the room lists using voiceover. ([#1433](https://github.com/vector-im/element-ios/issues/1433))
- Authent: fix phone number validation through custom URL ([#3562](https://github.com/vector-im/element-ios/issues/3562))
- Fix registration to be compliant with the Matrix specification. This allows registering for accounts on Conduit servers. Contributed by @aaronraimist. ([#3736](https://github.com/vector-im/element-ios/issues/3736))
- Fix proximity sensor staying on and sleep timer staying disabled after call ends ([#4103](https://github.com/vector-im/element-ios/issues/4103))
- Fonts: Fix dynamic type only working after a fresh launch on SwiftUI views. ([#5027](https://github.com/vector-im/element-ios/issues/5027))
- Fixed arithmetical exception errors when changing poll responses. ([#5114](https://github.com/vector-im/element-ios/issues/5114))
- Wordings: Replace "kick" and all affiliate word by "remove" ([#5346](https://github.com/vector-im/element-ios/issues/5346))
- Markdown/HTML: Fix HTTP links containing Markdown formatting ([#5355](https://github.com/vector-im/element-ios/issues/5355))
- Message Bubbles: Fix read marker appearing part way thru a message. ([#5521](https://github.com/vector-im/element-ios/issues/5521))
- HomeViewController: Refresh section badges and tab bar badges on updates. ([#5537](https://github.com/vector-im/element-ios/issues/5537))
- Update the tintColor in ThemeV1 to sRGB to match the Compound and ThemeV2. ([#5545](https://github.com/vector-im/element-ios/issues/5545))
- Message bubbles: Increase text message width. ([#5550](https://github.com/vector-im/element-ios/issues/5550))
- Message bubbles: Fix edited text message `edited` link not working. ([#5553](https://github.com/vector-im/element-ios/issues/5553))
- Message bubbles: Fix horizontal lines between messages. ([#5555](https://github.com/vector-im/element-ios/issues/5555))
- App Launch: Fix a potential issue where the green spinner is kept on screen when the room lists are ready. ([#5559](https://github.com/vector-im/element-ios/issues/5559))
- Authentication: Fix reCaptcha failing to indicate success. ([#5602](https://github.com/vector-im/element-ios/issues/5602))
- Timeline: scroll to the bottom when opening a notification ([#5639](https://github.com/vector-im/element-ios/issues/5639))
Others
- Fixed or ignored various project warnings for better DevX ([#5513](https://github.com/vector-im/element-ios/pull/5513))
- SwiftGen: Objective-C support for assets helpers ([#5533](https://github.com/vector-im/element-ios/pull/5533))
- Fix introspect not being able to theme the SwiftUI navigation bars. ([#5556](https://github.com/vector-im/element-ios/pull/5556))
- Message bubbles: Reduce sender name bottom margin for text message. ([#5634](https://github.com/vector-im/element-ios/pull/5634))
- Message bubbles: Use layout constants instead magic numbers. ([#5409](https://github.com/vector-im/element-ios/issues/5409))
## Changes in 1.8.1 (2022-02-16) ## Changes in 1.8.1 (2022-02-16)
🙌 Improvements 🙌 Improvements

View file

@ -15,5 +15,5 @@
// //
// Version // Version
MARKETING_VERSION = 1.8.2 MARKETING_VERSION = 1.8.3
CURRENT_PROJECT_VERSION = 1.8.2 CURRENT_PROJECT_VERSION = 1.8.3

View file

@ -213,7 +213,7 @@ final class BuildSettings: NSObject {
/// Whether a screen uses legacy local activity indicators or improved app-wide indicators /// Whether a screen uses legacy local activity indicators or improved app-wide indicators
static var appActivityIndicators: Bool { static var appActivityIndicators: Bool {
#if DEBUG #if DEBUG
return true return false
#else #else
return false return false
#endif #endif

View file

@ -23,7 +23,7 @@ import SwiftUI
@available(iOS 14.0, *) @available(iOS 14.0, *)
public struct FontSwiftUI: Fonts { public struct FontSwiftUI: Fonts {
public let uiFonts: ElementFonts public let uiFonts: FontsUIKit
public var largeTitle: Font public var largeTitle: Font
@ -66,27 +66,27 @@ public struct FontSwiftUI: Fonts {
public var caption2SB: Font public var caption2SB: Font
public init(values: ElementFonts) { public init(values: ElementFonts) {
self.uiFonts = values self.uiFonts = FontsUIKit(values: values)
self.largeTitle = Font(values.largeTitle) self.largeTitle = values.largeTitle.font
self.largeTitleB = Font(values.largeTitleB) self.largeTitleB = values.largeTitleB.font
self.title1 = Font(values.title1) self.title1 = values.title1.font
self.title1B = Font(values.title1B) self.title1B = values.title1B.font
self.title2 = Font(values.title2) self.title2 = values.title2.font
self.title2B = Font(values.title2B) self.title2B = values.title2B.font
self.title3 = Font(values.title3) self.title3 = values.title3.font
self.title3SB = Font(values.title3SB) self.title3SB = values.title3SB.font
self.headline = Font(values.headline) self.headline = values.headline.font
self.subheadline = Font(values.subheadline) self.subheadline = values.subheadline.font
self.body = Font(values.body) self.body = values.body.font
self.bodySB = Font(values.bodySB) self.bodySB = values.bodySB.font
self.callout = Font(values.callout) self.callout = values.callout.font
self.calloutSB = Font(values.calloutSB) self.calloutSB = values.calloutSB.font
self.footnote = Font(values.footnote) self.footnote = values.footnote.font
self.footnoteSB = Font(values.footnoteSB) self.footnoteSB = values.footnoteSB.font
self.caption1 = Font(values.caption1) self.caption1 = values.caption1.font
self.caption1SB = Font(values.caption1SB) self.caption1SB = values.caption1SB.font
self.caption2 = Font(values.caption2) self.caption2 = values.caption2.font
self.caption2SB = Font(values.caption2SB) self.caption2SB = values.caption2SB.font
} }
} }

View file

@ -63,25 +63,25 @@ import UIKit
public var caption2SB: UIFont public var caption2SB: UIFont
public init(values: ElementFonts) { public init(values: ElementFonts) {
self.largeTitle = values.largeTitle self.largeTitle = values.largeTitle.uiFont
self.largeTitleB = values.largeTitleB self.largeTitleB = values.largeTitleB.uiFont
self.title1 = values.title1 self.title1 = values.title1.uiFont
self.title1B = values.title1B self.title1B = values.title1B.uiFont
self.title2 = values.title2 self.title2 = values.title2.uiFont
self.title2B = values.title2B self.title2B = values.title2B.uiFont
self.title3 = values.title3 self.title3 = values.title3.uiFont
self.title3SB = values.title3SB self.title3SB = values.title3SB.uiFont
self.headline = values.headline self.headline = values.headline.uiFont
self.subheadline = values.subheadline self.subheadline = values.subheadline.uiFont
self.body = values.body self.body = values.body.uiFont
self.bodySB = values.bodySB self.bodySB = values.bodySB.uiFont
self.callout = values.callout self.callout = values.callout.uiFont
self.calloutSB = values.calloutSB self.calloutSB = values.calloutSB.uiFont
self.footnote = values.footnote self.footnote = values.footnote.uiFont
self.footnoteSB = values.footnoteSB self.footnoteSB = values.footnoteSB.uiFont
self.caption1 = values.caption1 self.caption1 = values.caption1.uiFont
self.caption1SB = values.caption1SB self.caption1SB = values.caption1SB.uiFont
self.caption2 = values.caption2 self.caption2 = values.caption2.uiFont
self.caption2SB = values.caption2SB self.caption2SB = values.caption2SB.uiFont
} }
} }

View file

@ -14,12 +14,42 @@
// limitations under the License. // limitations under the License.
// //
import UIKit import SwiftUI
/// Fonts at https://www.figma.com/file/X4XTH9iS2KGJ2wFKDqkyed/Compound?node-id=1362%3A0 /// Fonts at https://www.figma.com/file/X4XTH9iS2KGJ2wFKDqkyed/Compound?node-id=1362%3A0
@objcMembers @objcMembers
public class ElementFonts { public class ElementFonts {
// MARK: - Types
/// A wrapper to provide both a `UIFont` and a SwiftUI `Font` in the same type.
/// The need for this comes from `Font` not adapting for dynamic type until the app
/// is restarted (or working at all in Xcode Previews) when initialised from a `UIFont`
/// (even if that font was created with the appropriate metrics).
public struct SharedFont {
public let uiFont: UIFont
/// The underlying font for the `font` property. This is stored
/// as an optional `Any` due to unavailability on iOS 12.
private let _font: Any?
@available(iOS 13.0, *)
public var font: Font {
_font as! Font
}
@available(iOS, deprecated: 13.0, message: "Use init(uiFont:font:) instead and remove this initialiser.")
init(uiFont: UIFont) {
self.uiFont = uiFont
self._font = nil
}
@available(iOS 13.0, *)
init(uiFont: UIFont, font: Font) {
self.uiFont = uiFont
self._font = font
}
}
// MARK: - Setup // MARK: - Setup
public init() { public init() {
@ -35,85 +65,217 @@ public class ElementFonts {
} }
// MARK: - Fonts protocol // MARK: - Fonts protocol
extension ElementFonts: Fonts { extension ElementFonts: Fonts {
public var largeTitle: UIFont { public var largeTitle: SharedFont {
return self.font(forTextStyle: .largeTitle) let uiFont = self.font(forTextStyle: .largeTitle)
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .largeTitle)
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var largeTitleB: UIFont { public var largeTitleB: SharedFont {
return self.largeTitle.vc_bold let uiFont = self.largeTitle.uiFont.vc_bold
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .largeTitle.bold())
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var title1: UIFont { public var title1: SharedFont {
return self.font(forTextStyle: .title1) let uiFont = self.font(forTextStyle: .title1)
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .title)
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var title1B: UIFont { public var title1B: SharedFont {
return self.title1.vc_bold let uiFont = self.title1.uiFont.vc_bold
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .title.bold())
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var title2: UIFont { public var title2: SharedFont {
return self.font(forTextStyle: .title2) let uiFont = self.font(forTextStyle: .title2)
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: Font(uiFont))
} else if #available(iOS 14.0, *) {
return SharedFont(uiFont: uiFont, font: .title2)
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var title2B: UIFont { public var title2B: SharedFont {
return self.title2.vc_bold let uiFont = self.title2.uiFont.vc_bold
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: Font(uiFont))
} else if #available(iOS 14.0, *) {
return SharedFont(uiFont: uiFont, font: .title2.bold())
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var title3: UIFont { public var title3: SharedFont {
return self.font(forTextStyle: .title3) let uiFont = self.font(forTextStyle: .title3)
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: Font(uiFont))
} else if #available(iOS 14.0, *) {
return SharedFont(uiFont: uiFont, font: .title3)
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var title3SB: UIFont { public var title3SB: SharedFont {
return self.title3.vc_semiBold let uiFont = self.title3.uiFont.vc_semiBold
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: Font(uiFont))
} else if #available(iOS 14.0, *) {
return SharedFont(uiFont: uiFont, font: .title3.weight(.semibold))
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var headline: UIFont { public var headline: SharedFont {
return self.font(forTextStyle: .headline) let uiFont = self.font(forTextStyle: .headline)
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .headline)
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var subheadline: UIFont { public var subheadline: SharedFont {
return self.font(forTextStyle: .subheadline) let uiFont = self.font(forTextStyle: .subheadline)
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .subheadline)
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var body: UIFont { public var body: SharedFont {
return self.font(forTextStyle: .body) let uiFont = self.font(forTextStyle: .body)
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .body)
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var bodySB: UIFont { public var bodySB: SharedFont {
return self.body.vc_semiBold let uiFont = self.body.uiFont.vc_semiBold
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .body.weight(.semibold))
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var callout: UIFont { public var callout: SharedFont {
return self.font(forTextStyle: .callout) let uiFont = self.font(forTextStyle: .callout)
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .callout)
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var calloutSB: UIFont { public var calloutSB: SharedFont {
return self.callout.vc_semiBold let uiFont = self.callout.uiFont.vc_semiBold
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .callout.weight(.semibold))
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var footnote: UIFont { public var footnote: SharedFont {
return self.font(forTextStyle: .footnote) let uiFont = self.font(forTextStyle: .footnote)
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .footnote)
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var footnoteSB: UIFont { public var footnoteSB: SharedFont {
return self.footnote.vc_semiBold let uiFont = self.footnote.uiFont.vc_semiBold
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .footnote.weight(.semibold))
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var caption1: UIFont { public var caption1: SharedFont {
return self.font(forTextStyle: .caption1) let uiFont = self.font(forTextStyle: .caption1)
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .caption)
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var caption1SB: UIFont { public var caption1SB: SharedFont {
return self.caption1.vc_semiBold let uiFont = self.caption1.uiFont.vc_semiBold
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: .caption.weight(.semibold))
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var caption2: UIFont { public var caption2: SharedFont {
return self.font(forTextStyle: .caption2) let uiFont = self.font(forTextStyle: .caption2)
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: Font(uiFont))
} else if #available(iOS 14.0, *) {
return SharedFont(uiFont: uiFont, font: .caption2)
} else {
return SharedFont(uiFont: uiFont)
}
} }
public var caption2SB: UIFont { public var caption2SB: SharedFont {
return self.caption2.vc_semiBold let uiFont = self.caption2.uiFont.vc_semiBold
if #available(iOS 13.0, *) {
return SharedFont(uiFont: uiFont, font: Font(uiFont))
} else if #available(iOS 14.0, *) {
return SharedFont(uiFont: uiFont, font: .caption2.weight(.semibold))
} else {
return SharedFont(uiFont: uiFont)
}
} }
} }

View file

@ -13,7 +13,7 @@ use_frameworks!
# - `{ :specHash => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for MatrixSDK repo. Used by Fastfile during CI # - `{ :specHash => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for MatrixSDK repo. Used by Fastfile during CI
# #
# Warning: our internal tooling depends on the name of this variable name, so be sure not to change it # Warning: our internal tooling depends on the name of this variable name, so be sure not to change it
$matrixSDKVersion = '= 0.22.1' $matrixSDKVersion = '= 0.22.2'
# $matrixSDKVersion = :local # $matrixSDKVersion = :local
# $matrixSDKVersion = { :branch => 'develop'} # $matrixSDKVersion = { :branch => 'develop'}
# $matrixSDKVersion = { :specHash => { git: 'https://git.io/fork123', branch: 'fix' } } # $matrixSDKVersion = { :specHash => { git: 'https://git.io/fork123', branch: 'fix' } }

View file

@ -56,16 +56,16 @@ PODS:
- LoggerAPI (1.9.200): - LoggerAPI (1.9.200):
- Logging (~> 1.1) - Logging (~> 1.1)
- Logging (1.4.0) - Logging (1.4.0)
- MatrixSDK (0.22.1): - MatrixSDK (0.22.2):
- MatrixSDK/Core (= 0.22.1) - MatrixSDK/Core (= 0.22.2)
- MatrixSDK/Core (0.22.1): - MatrixSDK/Core (0.22.2):
- AFNetworking (~> 4.0.0) - AFNetworking (~> 4.0.0)
- GZIP (~> 1.3.0) - GZIP (~> 1.3.0)
- libbase58 (~> 0.1.4) - libbase58 (~> 0.1.4)
- OLMKit (~> 3.2.5) - OLMKit (~> 3.2.5)
- Realm (= 10.16.0) - Realm (= 10.16.0)
- SwiftyBeaver (= 1.9.5) - SwiftyBeaver (= 1.9.5)
- MatrixSDK/JingleCallStack (0.22.1): - MatrixSDK/JingleCallStack (0.22.2):
- JitsiMeetSDK (= 3.10.2) - JitsiMeetSDK (= 3.10.2)
- MatrixSDK/Core - MatrixSDK/Core
- OLMKit (3.2.5): - OLMKit (3.2.5):
@ -115,8 +115,8 @@ DEPENDENCIES:
- KeychainAccess (~> 4.2.2) - KeychainAccess (~> 4.2.2)
- KTCenterFlowLayout (~> 1.3.1) - KTCenterFlowLayout (~> 1.3.1)
- libPhoneNumber-iOS (~> 0.9.13) - libPhoneNumber-iOS (~> 0.9.13)
- MatrixSDK (= 0.22.1) - MatrixSDK (= 0.22.2)
- MatrixSDK/JingleCallStack (= 0.22.1) - MatrixSDK/JingleCallStack (= 0.22.2)
- OLMKit - OLMKit
- PostHog (~> 1.4.4) - PostHog (~> 1.4.4)
- ReadMoreTextView (~> 3.0.1) - ReadMoreTextView (~> 3.0.1)
@ -208,7 +208,7 @@ SPEC CHECKSUMS:
libPhoneNumber-iOS: 0a32a9525cf8744fe02c5206eb30d571e38f7d75 libPhoneNumber-iOS: 0a32a9525cf8744fe02c5206eb30d571e38f7d75
LoggerAPI: ad9c4a6f1e32f518fdb43a1347ac14d765ab5e3d LoggerAPI: ad9c4a6f1e32f518fdb43a1347ac14d765ab5e3d
Logging: beeb016c9c80cf77042d62e83495816847ef108b Logging: beeb016c9c80cf77042d62e83495816847ef108b
MatrixSDK: 12c1a56e037f629e493cbcd615fd13cfc58cee3a MatrixSDK: 4e7c8f0cfff3553e8dd60d97eef6b31653408ae7
OLMKit: 9fb4799c4a044dd2c06bda31ec31a12191ad30b5 OLMKit: 9fb4799c4a044dd2c06bda31ec31a12191ad30b5
PostHog: 4b6321b521569092d4ef3a02238d9435dbaeb99f PostHog: 4b6321b521569092d4ef3a02238d9435dbaeb99f
ReadMoreTextView: 19147adf93abce6d7271e14031a00303fe28720d ReadMoreTextView: 19147adf93abce6d7271e14031a00303fe28720d
@ -225,6 +225,6 @@ SPEC CHECKSUMS:
zxcvbn-ios: fef98b7c80f1512ff0eec47ac1fa399fc00f7e3c zxcvbn-ios: fef98b7c80f1512ff0eec47ac1fa399fc00f7e3c
ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb
PODFILE CHECKSUM: 03d59acfc44f69c0727a98aff6c5cbc2470844ef PODFILE CHECKSUM: 093d29092285618a84be5d5abb772c15cb7dcba5
COCOAPODS: 1.11.2 COCOAPODS: 1.11.2

View file

@ -1,17 +1,50 @@
{ {
"images" : [ "images" : [
{ {
"filename" : "Group 3153.png", "filename" : "capture_avatar.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Group 3153@2x.png", "appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "capture_avatar_dark.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "capture_avatar@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Group 3153@3x.png", "appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "capture_avatar_dark@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "capture_avatar@3x.png",
"idiom" : "universal",
"scale" : "3x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "capture_avatar_dark@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View file

@ -0,0 +1,56 @@
{
"images" : [
{
"filename" : "delete_avatar.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "delete_avatar_dark.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "delete_avatar@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "delete_avatar_dark@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "delete_avatar@3x.png",
"idiom" : "universal",
"scale" : "3x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "delete_avatar_dark@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View file

@ -45,7 +45,7 @@
"auth_optional_phone_placeholder" = "Telefon-Nummer (optional)"; "auth_optional_phone_placeholder" = "Telefon-Nummer (optional)";
"auth_phone_placeholder" = "Telefon-Nummer"; "auth_phone_placeholder" = "Telefon-Nummer";
"auth_repeat_password_placeholder" = "Wiederhole Passwort"; "auth_repeat_password_placeholder" = "Wiederhole Passwort";
"auth_repeat_new_password_placeholder" = "Bestätige dein neues Passwort"; "auth_repeat_new_password_placeholder" = "Bestätige das neue Passwort für dein Matrix-Konto";
"auth_invalid_user_name" = "Nutzernamen dürfen nur Buchstaben, Nummern, Punkte, Binde- und Unterstriche enthalten"; "auth_invalid_user_name" = "Nutzernamen dürfen nur Buchstaben, Nummern, Punkte, Binde- und Unterstriche enthalten";
"auth_invalid_password" = "Passwort zu kurz (min. 6 Zeichen)"; "auth_invalid_password" = "Passwort zu kurz (min. 6 Zeichen)";
"auth_invalid_email" = "Dies sieht nicht nach eine validen E-Mail-Adresse aus"; "auth_invalid_email" = "Dies sieht nicht nach eine validen E-Mail-Adresse aus";
@ -56,7 +56,7 @@
"auth_missing_email_or_phone" = "Fehlende E-Mail-Adresse oder Telefon-Nummer"; "auth_missing_email_or_phone" = "Fehlende E-Mail-Adresse oder Telefon-Nummer";
"auth_password_dont_match" = "Passwörter stimmen nicht überein"; "auth_password_dont_match" = "Passwörter stimmen nicht überein";
"auth_username_in_use" = "Benutzername bereits verwendet"; "auth_username_in_use" = "Benutzername bereits verwendet";
"auth_forgot_password" = "Passwort vergessen?"; "auth_forgot_password" = "Passwort des Matrix-Kontos vergessen?";
"auth_msisdn_validation_title" = "Verifizierung ausstehend"; "auth_msisdn_validation_title" = "Verifizierung ausstehend";
"auth_msisdn_validation_message" = "Bitte gib unten den Aktivierungs-Code ein, den wir per SMS verschickt haben."; "auth_msisdn_validation_message" = "Bitte gib unten den Aktivierungs-Code ein, den wir per SMS verschickt haben.";
"auth_msisdn_validation_error" = "Telefonnummer kann nicht verifiziert werden."; "auth_msisdn_validation_error" = "Telefonnummer kann nicht verifiziert werden.";
@ -137,7 +137,7 @@
"room_participants_action_invite" = "Einladen"; "room_participants_action_invite" = "Einladen";
"room_participants_action_leave" = "Diesen Raum verlassen"; "room_participants_action_leave" = "Diesen Raum verlassen";
"room_participants_action_remove" = "Aus diesem Raum entfernen"; "room_participants_action_remove" = "Aus diesem Raum entfernen";
"room_participants_action_ban" = "Aus diesem Raum bannen"; "room_participants_action_ban" = "Aus diesem Raum verbannen";
"room_participants_action_ignore" = "Alle Nachrichten dieser Person verbergen"; "room_participants_action_ignore" = "Alle Nachrichten dieser Person verbergen";
"room_participants_action_unignore" = "Alle Nachrichten dieser Person zeigen"; "room_participants_action_unignore" = "Alle Nachrichten dieser Person zeigen";
"room_participants_action_set_moderator" = "Moderationsrechte vergeben"; "room_participants_action_set_moderator" = "Moderationsrechte vergeben";
@ -166,7 +166,7 @@
"room_event_action_quote" = "Zitieren"; "room_event_action_quote" = "Zitieren";
"room_event_action_more" = "Mehr"; "room_event_action_more" = "Mehr";
"room_event_action_share" = "Teilen"; "room_event_action_share" = "Teilen";
"room_event_action_permalink" = "Permalink"; "room_event_action_permalink" = "Link zur Nachricht kopieren";
"room_event_action_view_source" = "Zeige Quelltext"; "room_event_action_view_source" = "Zeige Quelltext";
"room_event_action_report" = "Inhalt melden"; "room_event_action_report" = "Inhalt melden";
"room_event_action_report_prompt_reason" = "Grund fürs Melden dieses Inhalts"; "room_event_action_report_prompt_reason" = "Grund fürs Melden dieses Inhalts";
@ -234,11 +234,11 @@
"settings_term_conditions" = "Geschäftsbedingungen"; "settings_term_conditions" = "Geschäftsbedingungen";
"settings_privacy_policy" = "Datenschutzerklärung"; "settings_privacy_policy" = "Datenschutzerklärung";
"settings_send_crash_report" = "Sende anonyme Absturz- und Nutzungsdaten"; "settings_send_crash_report" = "Sende anonyme Absturz- und Nutzungsdaten";
"settings_change_password" = "Passwort ändern"; "settings_change_password" = "Passwort deines Matrix-Kontos ändern";
"settings_old_password" = "altes Passwort"; "settings_old_password" = "altes Passwort";
"settings_new_password" = "neues Passwort"; "settings_new_password" = "neues Passwort";
"settings_confirm_password" = "bestätige Passwort"; "settings_confirm_password" = "bestätige Passwort";
"settings_password_updated" = "Dein Passwort wurde aktualisiert"; "settings_password_updated" = "Das Passwort deines Matrix-Kontos wurde aktualisiert";
"settings_crypto_device_name" = "Öffentlicher Sitzungs-Name: "; "settings_crypto_device_name" = "Öffentlicher Sitzungs-Name: ";
"settings_crypto_device_key" = "\nSitzungs-Schlüssel:\n"; "settings_crypto_device_key" = "\nSitzungs-Schlüssel:\n";
"settings_crypto_export" = "Schlüssel exportieren"; "settings_crypto_export" = "Schlüssel exportieren";
@ -262,7 +262,7 @@
"room_details_no_local_addresses" = "Dieser Raum hat keine lokalen Adressen"; "room_details_no_local_addresses" = "Dieser Raum hat keine lokalen Adressen";
"room_details_new_address" = "Füge neue Adresse hinzu"; "room_details_new_address" = "Füge neue Adresse hinzu";
"room_details_new_address_placeholder" = "Füge neue Adresse hinzu (z.B. #foo%@)"; "room_details_new_address_placeholder" = "Füge neue Adresse hinzu (z.B. #foo%@)";
"room_details_banned_users_section" = "Gebannte Nutzer"; "room_details_banned_users_section" = "Verbannte Personen";
"room_details_advanced_section" = "Erweitert"; "room_details_advanced_section" = "Erweitert";
"room_details_advanced_room_id" = "Raum-ID:"; "room_details_advanced_room_id" = "Raum-ID:";
"room_details_advanced_enable_e2e_encryption" = "Aktivere Verschlüsselung (Warnung: Nicht deaktivierbar!)"; "room_details_advanced_enable_e2e_encryption" = "Aktivere Verschlüsselung (Warnung: Nicht deaktivierbar!)";
@ -279,11 +279,11 @@
"auth_use_server_options" = "Individuelle Server-Optionen"; "auth_use_server_options" = "Individuelle Server-Optionen";
"auth_email_validation_message" = "Prüfe dein E-Mail-Konto um mit der Registrierung fortzufahren"; "auth_email_validation_message" = "Prüfe dein E-Mail-Konto um mit der Registrierung fortzufahren";
"auth_recaptcha_message" = "Dieser Heimserver will sicherstellen dass du kein Roboter bist"; "auth_recaptcha_message" = "Dieser Heimserver will sicherstellen dass du kein Roboter bist";
"auth_reset_password_message" = "E-Mail-Adresse angeben, um das Passwort zurückzusetzen:"; "auth_reset_password_message" = "Um das Passwort deines Matrix-Kontos zurückzusetzen, gib die mit deinem Konto verbundene E-Mail-Adresse an:";
"auth_reset_password_missing_email" = "Die E-Mail-Adresse die mit dem Konto verbunden ist muss eingegeben werden."; "auth_reset_password_missing_email" = "Die E-Mail-Adresse die mit dem Konto verbunden ist muss eingegeben werden.";
"auth_reset_password_error_unauthorized" = "Konnte E-Mail-Adresse nicht verifizieren. Klicke den Link in der Registrierungs-E-Mail"; "auth_reset_password_error_unauthorized" = "Konnte E-Mail-Adresse nicht verifizieren. Klicke den Link in der Registrierungs-E-Mail";
"auth_reset_password_error_not_found" = "Diese E-Mail-Adresse ist nicht mit einer Matrix-ID auf diesem Heimserver verknüpft."; "auth_reset_password_error_not_found" = "Diese E-Mail-Adresse ist nicht mit einer Matrix-ID auf diesem Heimserver verknüpft.";
"auth_reset_password_success_message" = "Dein Passwort wurde zurückgesetzt.\n\nDu wurdest aus allen Sitzungen abgemeldet, diese bekommen jetzt keine Push-Benachrichtigungen mehr. Um diese wieder einzuschalten, melde dich auf den Geräten erneut an."; "auth_reset_password_success_message" = "Das Passwort deines Matrix-Kontos wurde zurückgesetzt.\n\nDu wurdest aus allen Sitzungen abgemeldet und bekommst keine Push-Benachrichtigungen mehr. Um diese zu reaktivieren, melde dich jeweils auf allen Geräten erneut an.";
"auth_add_email_and_phone_warning" = "Registrierung mit E-Mail und Telefonnummer zugleich ist noch nicht unterstützt. Nur die Telefonnummer wird berücksichtigt. Du kannst deine E-Mail-Adresse in deinem Profil ergänzen."; "auth_add_email_and_phone_warning" = "Registrierung mit E-Mail und Telefonnummer zugleich ist noch nicht unterstützt. Nur die Telefonnummer wird berücksichtigt. Du kannst deine E-Mail-Adresse in deinem Profil ergänzen.";
"room_creation_make_public_prompt_msg" = "Sicher, dass du diesen Raum öffentlich machen willst? Jeder kann deine Nachrichten lesen und dem Raum beitreten."; "room_creation_make_public_prompt_msg" = "Sicher, dass du diesen Raum öffentlich machen willst? Jeder kann deine Nachrichten lesen und dem Raum beitreten.";
"room_creation_invite_another_user" = "Benutzer-ID, Name oder E-Mail"; "room_creation_invite_another_user" = "Benutzer-ID, Name oder E-Mail";
@ -320,7 +320,7 @@
"settings_labs_e2e_encryption_prompt_message" = "Zum Fertigstellen der Verschlüsselung bitte neu anmelden."; "settings_labs_e2e_encryption_prompt_message" = "Zum Fertigstellen der Verschlüsselung bitte neu anmelden.";
"settings_third_party_notices" = "Anmerkungen von Dritten"; "settings_third_party_notices" = "Anmerkungen von Dritten";
"settings_clear_cache" = "Cache löschen"; "settings_clear_cache" = "Cache löschen";
"settings_fail_to_update_password" = "Passwortänderung fehlgeschlagen"; "settings_fail_to_update_password" = "Passwortänderung des Matrix-Kontos fehlgeschlagen";
"settings_crypto_device_id" = "\nSitzungs-ID: "; "settings_crypto_device_id" = "\nSitzungs-ID: ";
"settings_crypto_blacklist_unverified_devices" = "Verschlüssele nur zu verifizierten Sitzungen"; "settings_crypto_blacklist_unverified_devices" = "Verschlüssele nur zu verifizierten Sitzungen";
"room_details_people" = "Mitglieder"; "room_details_people" = "Mitglieder";
@ -505,7 +505,7 @@
"e2e_room_key_request_message_new_device" = "Du hast die neue Sitzung '%@' hinzugefügt, welche Verschlüsselungs-Schlüssel anfordert."; "e2e_room_key_request_message_new_device" = "Du hast die neue Sitzung '%@' hinzugefügt, welche Verschlüsselungs-Schlüssel anfordert.";
"room_do_not_have_permission_to_post" = "Du hast keine Berechtigung Nachrichten in diesem Raum zu senden"; "room_do_not_have_permission_to_post" = "Du hast keine Berechtigung Nachrichten in diesem Raum zu senden";
"room_event_action_kick_prompt_reason" = "Grund für das Entfernen des Benutzers"; "room_event_action_kick_prompt_reason" = "Grund für das Entfernen des Benutzers";
"room_event_action_ban_prompt_reason" = "Grund für die Verbannung des Benutzers"; "room_event_action_ban_prompt_reason" = "Grund für die Verbannung der Person";
"room_action_send_photo_or_video" = "Foto oder Video senden"; "room_action_send_photo_or_video" = "Foto oder Video senden";
"room_action_send_sticker" = "Aufkleber senden"; "room_action_send_sticker" = "Aufkleber senden";
"settings_deactivate_account" = "DEAKTIVIERTES KONTO"; "settings_deactivate_account" = "DEAKTIVIERTES KONTO";
@ -526,7 +526,7 @@
"deactivate_account_forget_messages_information_part3" = ": Dies wird dafür sorgen, dass zukünftige Nutzer eine unvollständige Konversation sehen)"; "deactivate_account_forget_messages_information_part3" = ": Dies wird dafür sorgen, dass zukünftige Nutzer eine unvollständige Konversation sehen)";
"deactivate_account_validate_action" = "Konto deaktiveren"; "deactivate_account_validate_action" = "Konto deaktiveren";
"deactivate_account_password_alert_title" = "Konto deaktivieren"; "deactivate_account_password_alert_title" = "Konto deaktivieren";
"deactivate_account_password_alert_message" = "Zum Fortfahren, Passwort eingeben"; "deactivate_account_password_alert_message" = "Zum Fortfahren, gib bitte das Passwort deines Matrix-Kontos ein";
"event_formatter_rerequest_keys_part1_link" = "Verschlüsselungsschlüssel neu anfordern"; "event_formatter_rerequest_keys_part1_link" = "Verschlüsselungsschlüssel neu anfordern";
"event_formatter_rerequest_keys_part2" = " von deinen anderen Sitzungen anfragen."; "event_formatter_rerequest_keys_part2" = " von deinen anderen Sitzungen anfragen.";
// Re-request confirmation dialog // Re-request confirmation dialog
@ -585,7 +585,7 @@
"key_backup_setup_intro_setup_action_without_existing_backup" = "Beginne Schlüsselsicherung zu nutzen"; "key_backup_setup_intro_setup_action_without_existing_backup" = "Beginne Schlüsselsicherung zu nutzen";
"key_backup_setup_intro_setup_action_with_existing_backup" = "Benutze Schlüsselsicherung"; "key_backup_setup_intro_setup_action_with_existing_backup" = "Benutze Schlüsselsicherung";
"key_backup_setup_passphrase_title" = "Sichere dein Backup mit einer Sicherungsphrase"; "key_backup_setup_passphrase_title" = "Sichere dein Backup mit einer Sicherungsphrase";
"key_backup_setup_passphrase_info" = "Wir speichern eine verschlüsselte Kopie deiner Schlüssel auf unserem Server. Schütze sie mit einer Passphrase, um sie sicher zu halten.\n\nFür maximale Sicherheit sollte sich dies von deinem Kontopasswort unterscheiden."; "key_backup_setup_passphrase_info" = "Wir speichern eine verschlüsselte Kopie deiner Schlüssel auf unserem Server. Schütze sie mit einer Passphrase, um sie sicher zu halten.\n\nFür maximale Sicherheit sollte sich dies von dem Passwort deines Matrix-Kontos unterscheiden.";
"key_backup_setup_passphrase_passphrase_title" = "Eingeben"; "key_backup_setup_passphrase_passphrase_title" = "Eingeben";
"key_backup_setup_passphrase_passphrase_placeholder" = "Sicherungsphrase eingeben"; "key_backup_setup_passphrase_passphrase_placeholder" = "Sicherungsphrase eingeben";
"key_backup_setup_passphrase_passphrase_valid" = "Gut!"; "key_backup_setup_passphrase_passphrase_valid" = "Gut!";
@ -801,7 +801,7 @@
"image_picker_action_library" = "Aus der Mediathek auswählen"; "image_picker_action_library" = "Aus der Mediathek auswählen";
"camera_unavailable" = "Die Kamera ist auf deinem Gerät nicht verfügbar"; "camera_unavailable" = "Die Kamera ist auf deinem Gerät nicht verfügbar";
"photo_library_access_not_granted" = "%@ hat keine Berechtigung zum Zugriff auf die Fotobibliothek. Bitte ändere die Datenschutzeinstellungen"; "photo_library_access_not_granted" = "%@ hat keine Berechtigung zum Zugriff auf die Fotobibliothek. Bitte ändere die Datenschutzeinstellungen";
"auth_forgot_password_error_no_configured_identity_server" = "Es ist kein Identitätsserver konfiguriert: Füge einen hinzu, um dein Kennwort zurückzusetzen."; "auth_forgot_password_error_no_configured_identity_server" = "Es ist kein Identitätsserver konfiguriert: Füge einen hinzu, um das Kennwort deines Matrix-Kontos zurückzusetzen.";
"room_creation_error_invite_user_by_email_without_identity_server" = "Es ist kein Identitätsserver konfiguriert, sodass du keine Teilnehmenden mit einer E-Mail hinzufügen kannst."; "room_creation_error_invite_user_by_email_without_identity_server" = "Es ist kein Identitätsserver konfiguriert, sodass du keine Teilnehmenden mit einer E-Mail hinzufügen kannst.";
"room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Es ist kein Identitätsserver konfiguriert, sodass du keinen Chat mit einem Kontakt über eine E-Mail starten kannst."; "room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Es ist kein Identitätsserver konfiguriert, sodass du keinen Chat mit einem Kontakt über eine E-Mail starten kannst.";
// Service terms // Service terms
@ -810,9 +810,9 @@
"service_terms_modal_accept_button" = "Akzeptieren"; "service_terms_modal_accept_button" = "Akzeptieren";
"service_terms_modal_description_for_identity_server" = "Für andere auffindbar sein"; "service_terms_modal_description_for_identity_server" = "Für andere auffindbar sein";
"service_terms_modal_description_for_integration_manager" = "Bots, Brücken, Widgets und Aufkleberpakete verwenden"; "service_terms_modal_description_for_integration_manager" = "Bots, Brücken, Widgets und Aufkleberpakete verwenden";
"auth_email_is_required" = "Es ist kein Identitätsserver konfiguriert, sodass du keine E-Mail-Adresse hinzufügen kannst, um dein Kennwort in Zukunft zurückzusetzen."; "auth_email_is_required" = "Es ist kein Identitätsserver konfiguriert, sodass du keine E-Mail-Adresse hinzufügen kannst, um das Kennwort deines Matrix-Kontos in Zukunft zurückzusetzen.";
"auth_phone_is_required" = "Es ist kein Identitätsserver konfiguriert, sodass du keine Telefonnummer hinzufügen kannst, um dein Kennwort in Zukunft zurückzusetzen."; "auth_phone_is_required" = "Es ist kein Identitätsserver konfiguriert, sodass du keine Telefonnummer hinzufügen kannst, um das Kennwort deines Matrix-Kontos in Zukunft zurückzusetzen.";
"auth_reset_password_error_is_required" = "Es ist kein Identitätsserver konfiguriert: Füge einen in die Serveroptionen ein, um dein Kennwort zurückzusetzen."; "auth_reset_password_error_is_required" = "Es ist kein Identitätsserver konfiguriert: Füge einen in die Serveroptionen ein, um das Kennwort deines Matrix-Kontos zurückzusetzen.";
// Errors // Errors
"error_user_already_logged_in" = "Du versuchst anscheinend, eine Verbindung zu einem anderen Heimserver herzustellen. Möchtest du dich abmelden?"; "error_user_already_logged_in" = "Du versuchst anscheinend, eine Verbindung zu einem anderen Heimserver herzustellen. Möchtest du dich abmelden?";
"contacts_address_book_no_identity_server" = "Kein Identitätsserver konfiguriert"; "contacts_address_book_no_identity_server" = "Kein Identitätsserver konfiguriert";
@ -888,7 +888,7 @@
"identity_server_settings_alert_disconnect_still_sharing_3pid" = "Du teilst noch deine persönlichen Daten mit dem Identitätsserver %@.\n\nWir empfehlen dir deine E-Mail-Adresse und Telefonnummer zu entfernen, bevor du die Verbindung zum Identitätsserver trennst."; "identity_server_settings_alert_disconnect_still_sharing_3pid" = "Du teilst noch deine persönlichen Daten mit dem Identitätsserver %@.\n\nWir empfehlen dir deine E-Mail-Adresse und Telefonnummer zu entfernen, bevor du die Verbindung zum Identitätsserver trennst.";
"settings_add_3pid_password_title_email" = "E-Mail-Adresse hinzufügen"; "settings_add_3pid_password_title_email" = "E-Mail-Adresse hinzufügen";
"settings_add_3pid_password_title_msidsn" = "Telefonnummer hinzufügen"; "settings_add_3pid_password_title_msidsn" = "Telefonnummer hinzufügen";
"settings_add_3pid_password_message" = "Um fortzufahren, bitte Passwort eingeben"; "settings_add_3pid_password_message" = "Um fortzufahren, gib bitte das Passwort deines Matrix-Kontos ein";
"settings_add_3pid_invalid_password_message" = "Ungültige Anmeldedaten"; "settings_add_3pid_invalid_password_message" = "Ungültige Anmeldedaten";
"identity_server_settings_disconnect_info" = "Eine Trennung vom Identitätsserver bedeutet, dass du weder von anderen Nutzer gefunden werden, noch diese dich per E-Mail oder Telefonnummer einladen können."; "identity_server_settings_disconnect_info" = "Eine Trennung vom Identitätsserver bedeutet, dass du weder von anderen Nutzer gefunden werden, noch diese dich per E-Mail oder Telefonnummer einladen können.";
"error_not_supported_on_mobile" = "Dies ist in der Mobilvariante von %@ nicht möglich."; "error_not_supported_on_mobile" = "Dies ist in der Mobilvariante von %@ nicht möglich.";
@ -1012,7 +1012,7 @@
"security_settings_crosssigning_info_ok" = "Quersignierung ist bereit zur Anwendung."; "security_settings_crosssigning_info_ok" = "Quersignierung ist bereit zur Anwendung.";
"security_settings_crosssigning_reset" = "Zurücksetzen"; "security_settings_crosssigning_reset" = "Zurücksetzen";
"security_settings_coming_soon" = "Entschuldigung, diese Funktion ist noch nicht für %@ iOS verfügbar. Bitte nutze einen anderen Matrix-Client, um es einzurichten. %@ iOS wird es benutzen."; "security_settings_coming_soon" = "Entschuldigung, diese Funktion ist noch nicht für %@ iOS verfügbar. Bitte nutze einen anderen Matrix-Client, um es einzurichten. %@ iOS wird es benutzen.";
"security_settings_user_password_description" = "Bestätige deine Identität durch Eingabe des Kontopassworts"; "security_settings_user_password_description" = "Bestätige deine Identität durch Eingabe des Passworts deines Matrix-Kontos";
// AuthenticatedSessionViewControllerFactory // AuthenticatedSessionViewControllerFactory
"authenticated_session_flow_not_supported" = "Diese App unterstützt nicht diese Authentifizierungsmethode für deinen Heimserver."; "authenticated_session_flow_not_supported" = "Diese App unterstützt nicht diese Authentifizierungsmethode für deinen Heimserver.";
"secure_key_backup_setup_intro_title" = "Sichere Datensicherung"; "secure_key_backup_setup_intro_title" = "Sichere Datensicherung";
@ -1020,7 +1020,7 @@
"room_participants_action_security_status_complete_security" = "Vollständige Sicherheit"; "room_participants_action_security_status_complete_security" = "Vollständige Sicherheit";
"external_link_confirmation_title" = "Überprüfe diesen Link genau"; "external_link_confirmation_title" = "Überprüfe diesen Link genau";
"external_link_confirmation_message" = "Der Link %@ bringt dich auf eine andere Seite: %@\n\nSicher, dass du fortfahren möchtest?"; "external_link_confirmation_message" = "Der Link %@ bringt dich auf eine andere Seite: %@\n\nSicher, dass du fortfahren möchtest?";
"security_settings_crypto_sessions_description_2" = "Wenn du dich nicht angemeldet hast, ändere dein Passwort und setze die Sichere Sicherheitskopie zurück."; "security_settings_crypto_sessions_description_2" = "Wenn du dich nicht angemeldet hast, ändere das Passwort deines Matrix-Kontos und setze die Sichere Sicherheitskopie zurück.";
"security_settings_secure_backup_description" = "Sichere die Schlüssel, um Datenverlust zu verhindern. Sie werden mit einem Sicherungsschlüssel gesichert."; "security_settings_secure_backup_description" = "Sichere die Schlüssel, um Datenverlust zu verhindern. Sie werden mit einem Sicherungsschlüssel gesichert.";
"security_settings_crosssigning_info_exists" = "Dein Konto hat eine Quersignatur-Identität, aber dieser Sitzung wird noch nicht vertraut. Vervollständige die Sicherheit auf diese Sitzung."; "security_settings_crosssigning_info_exists" = "Dein Konto hat eine Quersignatur-Identität, aber dieser Sitzung wird noch nicht vertraut. Vervollständige die Sicherheit auf diese Sitzung.";
"security_settings_crosssigning_info_trusted" = "Quersignierung ist aktiviert. Du kannst anderen Nutzern und deinen anderen Sitzungen basierend auf der Quersignatur vertrauen, aber du kannst in dieser Sitzung keine Quersignierung durchführen, da sie keine privaten Quersignatur-Schlüssel enthält. Vervollständige die Sicherheit dieser Sitzung."; "security_settings_crosssigning_info_trusted" = "Quersignierung ist aktiviert. Du kannst anderen Nutzern und deinen anderen Sitzungen basierend auf der Quersignatur vertrauen, aber du kannst in dieser Sitzung keine Quersignierung durchführen, da sie keine privaten Quersignatur-Schlüssel enthält. Vervollständige die Sicherheit dieser Sitzung.";
@ -1076,8 +1076,8 @@
"key_verification_manually_verify_device_additional_information" = "Falls sie nicht übereinstimmen, wurde die Kommunikation vielleicht kompromittiert."; "key_verification_manually_verify_device_additional_information" = "Falls sie nicht übereinstimmen, wurde die Kommunikation vielleicht kompromittiert.";
"key_verification_verified_new_session_title" = "Neue Sitzung verifiziert!"; "key_verification_verified_new_session_title" = "Neue Sitzung verifiziert!";
"key_verification_verified_other_session_information" = "Du kannst nun sichere Nachrichten in deiner anderen Sitzung lesen. Andere Benutzer wissen, dass sie ihr vertrauen können."; "key_verification_verified_other_session_information" = "Du kannst nun sichere Nachrichten in deiner anderen Sitzung lesen. Andere Benutzer wissen, dass sie ihr vertrauen können.";
"key_verification_verified_new_session_information" = "Du kannst nun sichere Nachrichten auf deinem neuen Gerät lesen. Andere Benutzer wissen, dass sie es vertrauen können."; "key_verification_verified_new_session_information" = "Du kannst nun sichere Nachrichten auf deinem neuen Gerät lesen. Andere Benutzer wissen, dass sie ihm vertrauen können.";
"key_verification_verified_this_session_information" = "Du kannst nun sichere Nachrichten auf diesem Gerät lesen. Andere Benutzer wissen, dass sie es vertrauen können."; "key_verification_verified_this_session_information" = "Du kannst nun sichere Nachrichten auf diesem Gerät lesen. Andere Benutzer wissen, dass sie ihm vertrauen können.";
"key_verification_verified_user_information" = "Nachrichten mit diesem Gegenüber sind Ende-zu-Ende verschlüsselt und können nicht von Dritten gelesen werden."; "key_verification_verified_user_information" = "Nachrichten mit diesem Gegenüber sind Ende-zu-Ende verschlüsselt und können nicht von Dritten gelesen werden.";
"key_verification_bootstrap_not_setup_title" = "Fehler"; "key_verification_bootstrap_not_setup_title" = "Fehler";
"key_verification_bootstrap_not_setup_message" = "Du musst erst die Quersignatur einrichten."; "key_verification_bootstrap_not_setup_message" = "Du musst erst die Quersignatur einrichten.";
@ -1134,7 +1134,7 @@
"secrets_setup_recovery_key_storage_alert_message" = "✓ Drucke ihn aus und bewahre ihn an einem sicheren Ort auf\n✓ Speichere ihn auf einem USB-Stick oder einem Sicherungslaufwerk\n✓ Kopiere ihn zu deinem persönlichen Speicher im Netz"; "secrets_setup_recovery_key_storage_alert_message" = "✓ Drucke ihn aus und bewahre ihn an einem sicheren Ort auf\n✓ Speichere ihn auf einem USB-Stick oder einem Sicherungslaufwerk\n✓ Kopiere ihn zu deinem persönlichen Speicher im Netz";
"secrets_setup_recovery_passphrase_title" = "Setze Sicherheitsphrase"; "secrets_setup_recovery_passphrase_title" = "Setze Sicherheitsphrase";
"secrets_setup_recovery_passphrase_information" = "Gib eine Sicherheitsphrase ein, welche nur du kennst und deine Daten auf dem Server geheim halten soll."; "secrets_setup_recovery_passphrase_information" = "Gib eine Sicherheitsphrase ein, welche nur du kennst und deine Daten auf dem Server geheim halten soll.";
"secrets_setup_recovery_passphrase_additional_information" = "Benutze dein Kontopasswort nicht mehrfach."; "secrets_setup_recovery_passphrase_additional_information" = "Benutze nicht das Passwort deines Matrix-Kontos.";
"secrets_setup_recovery_passphrase_validate_action" = "Fertig"; "secrets_setup_recovery_passphrase_validate_action" = "Fertig";
"secrets_setup_recovery_passphrase_confirm_information" = "Gib deine Sicherheitsphrase zur Bestätigung erneut ein."; "secrets_setup_recovery_passphrase_confirm_information" = "Gib deine Sicherheitsphrase zur Bestätigung erneut ein.";
"secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Bestätigen"; "secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Bestätigen";
@ -1231,7 +1231,7 @@
"secrets_recovery_reset_action_part_1" = "Wiederherstellungsoptionen vergessen oder verloren? "; "secrets_recovery_reset_action_part_1" = "Wiederherstellungsoptionen vergessen oder verloren? ";
"less" = "Weniger"; "less" = "Weniger";
"secrets_reset_authentication_message" = "Gib dein Kontopasswort ein, um zu bestätigen"; "secrets_reset_authentication_message" = "Gib zum Bestätigen das Passwort deines Matrix-Kontos ein";
"secrets_reset_reset_action" = "Zurücksetzen"; "secrets_reset_reset_action" = "Zurücksetzen";
"secrets_reset_warning_message" = "Du wirst ohne Nachrichtenverlauf, Nachrichten, vertraute Geräte oder vertraute Benutzer neustarten."; "secrets_reset_warning_message" = "Du wirst ohne Nachrichtenverlauf, Nachrichten, vertraute Geräte oder vertraute Benutzer neustarten.";
"secrets_reset_warning_title" = "Falls du alles zurücksetzt"; "secrets_reset_warning_title" = "Falls du alles zurücksetzt";
@ -1248,7 +1248,7 @@
// MARK: - Favourites // MARK: - Favourites
"favourites_empty_view_title" = "Lieblingsräume und -nutzer"; "favourites_empty_view_title" = "Favorisierte Räume und Personen";
"favourites_empty_view_information" = "Um einen Lieblingschat hinzuzufügen, halte diesen gedrückt und wähle den Stern aus. Du findest deine Lieblingschats gesammelt hier."; "favourites_empty_view_information" = "Um einen Lieblingschat hinzuzufügen, halte diesen gedrückt und wähle den Stern aus. Du findest deine Lieblingschats gesammelt hier.";
"home_empty_view_information" = "Die sichere Chat-App für Teams, Freunde und Organisationen. Tippe unten auf das +, um Leute und Räume hinzuzufügen."; "home_empty_view_information" = "Die sichere Chat-App für Teams, Freunde und Organisationen. Tippe unten auf das +, um Leute und Räume hinzuzufügen.";
"rooms_empty_view_information" = "Noch keine Chat-Räume vorhanden. Tippe auf das +, um einem Raum beizutreten oder einen neuen zu erstellen."; "rooms_empty_view_information" = "Noch keine Chat-Räume vorhanden. Tippe auf das +, um einem Raum beizutreten oder einen neuen zu erstellen.";
@ -1476,7 +1476,7 @@
"spaces_empty_space_title" = "Dieser Space hat (noch) keine Räume"; "spaces_empty_space_title" = "Dieser Space hat (noch) keine Räume";
"spaces_explore_rooms" = "Räume erkunden"; "spaces_explore_rooms" = "Räume erkunden";
"leave_space_and_all_rooms_action" = "Alle Räume und Spaces verlassen"; "leave_space_and_all_rooms_action" = "Alle Räume und Spaces verlassen";
"leave_space_only_action" = "Keine Räume verlassen"; "leave_space_only_action" = "Keine Räume und Subspaces verlassen";
"spaces_left_panel_title" = "Spaces"; "spaces_left_panel_title" = "Spaces";
"room_recents_suggested_rooms_section" = "VORGESCHLAGENE RÄUME"; "room_recents_suggested_rooms_section" = "VORGESCHLAGENE RÄUME";
"spaces_home_space_title" = "Start"; "spaces_home_space_title" = "Start";
@ -1603,3 +1603,35 @@
"poll_edit_form_poll_type_open_description" = "Ergebnisse werden direkt nach Stimmabgabe angezeigt"; "poll_edit_form_poll_type_open_description" = "Ergebnisse werden direkt nach Stimmabgabe angezeigt";
"poll_edit_form_poll_type_open" = "Offene Umfrage"; "poll_edit_form_poll_type_open" = "Offene Umfrage";
"poll_edit_form_update_failure_title" = "Aktualisierung der Umfrage fehlgeschlagen"; "poll_edit_form_update_failure_title" = "Aktualisierung der Umfrage fehlgeschlagen";
"threads_empty_tip" = "Hinweis: Tippe auf eine Nachricht und wähle „Thread“ um einen neuen zu starten.";
"threads_empty_info_my" = "Antworte auf einen laufenden Thread oder tippe auf eine Nachricht und wähle „Thread“ um einen neuen zu starten.";
"home_context_menu_normal_priority" = "Normale Priorität";
"home_context_menu_low_priority" = "Niedrige Priorität";
"home_context_menu_unfavourite" = "Aus Favoriten entfernen";
"home_context_menu_favourite" = "Favorisieren";
"location_sharing_post_failure_subtitle" = "%@ konnte deinen Standort nicht versenden. Bitte versuche es später erneut.";
"location_sharing_post_failure_title" = "Wir konnten deinen Standort nicht versenden";
"home_context_menu_leave" = "Verlassen";
"home_context_menu_unmute" = "Stummschaltung aufheben";
"home_context_menu_mute" = "Stummschalten";
"home_context_menu_notifications" = "Benachrichtigungen";
"home_context_menu_make_room" = "Zu Räume verschieben";
"home_context_menu_make_dm" = "Zu Personen verschieben";
"event_formatter_message_deleted" = "Nachricht gelöscht";
"settings_labs_enable_threads" = "Threads";
"message_from_a_thread" = "Aus einem Thread";
"threads_empty_show_all_threads" = "Alle Threads anzeigen";
"threads_empty_info_all" = "Threads helfen dabei, dass deine Konversationen beim Thema und leicht nachverfolgbar bleiben.";
"threads_empty_title" = "Organisiere Diskussionen mit Threads";
"threads_action_my_threads" = "Meine Threads";
"threads_action_all_threads" = "Alle Threads";
"threads_title" = "Threads";
"thread_copy_link_to_thread" = "Link in Thread kopieren";
// MARK: Threads
"room_thread_title" = "Thread";
"room_accessibility_thread_more" = "Mehr";
"room_accessibility_threads" = "Threads";
"room_event_copy_link_info" = "Link in die Zwischenablage kopiert.";
"room_event_action_reply_in_thread" = "Thread";
"room_event_action_view_in_room" = "Im Raum anzeigen";

View file

@ -53,7 +53,7 @@
"auth_optional_phone_placeholder" = "Telefoninumber (kui soovid)"; "auth_optional_phone_placeholder" = "Telefoninumber (kui soovid)";
"auth_phone_placeholder" = "Telefoninumber"; "auth_phone_placeholder" = "Telefoninumber";
"auth_repeat_password_placeholder" = "Korda salasõna"; "auth_repeat_password_placeholder" = "Korda salasõna";
"auth_repeat_new_password_placeholder" = "Korda uut salasõna"; "auth_repeat_new_password_placeholder" = "Korda uut Matrix'i konto salasõna";
"auth_home_server_placeholder" = "URL (näiteks https://matrix.org)"; "auth_home_server_placeholder" = "URL (näiteks https://matrix.org)";
"auth_identity_server_placeholder" = "URL (näiteks https://vector.im)"; "auth_identity_server_placeholder" = "URL (näiteks https://vector.im)";
"auth_invalid_login_param" = "Vigane kasutajanimi ja/või salasõna"; "auth_invalid_login_param" = "Vigane kasutajanimi ja/või salasõna";
@ -70,13 +70,13 @@
"auth_missing_email_or_phone" = "E-posti aadress või telefoninumber on puudu"; "auth_missing_email_or_phone" = "E-posti aadress või telefoninumber on puudu";
"auth_email_in_use" = "See e-posti aadress on juba kasutusel"; "auth_email_in_use" = "See e-posti aadress on juba kasutusel";
"auth_phone_in_use" = "See telefoninumber on juba kasutusel"; "auth_phone_in_use" = "See telefoninumber on juba kasutusel";
"auth_email_is_required" = "Ühtegi isikutuvastusserverit pole seadistatud ning sul ei ole võimalik lisada oma e-posti aadressi hilisemaks võimalikuks salasõna muutmiseks."; "auth_email_is_required" = "Ühtegi isikutuvastusserverit pole seadistatud ning sul ei ole võimalik lisada oma e-posti aadressi hilisemaks võimalikuks Matrix'i konto salasõna muutmiseks.";
"auth_phone_is_required" = "Ühtegi isikutuvastusserverit pole seadistatud ning sul ei ole võimalik lisada oma telefoninumbrit hilisemaks võimalikuks salasõna muutmiseks."; "auth_phone_is_required" = "Ühtegi isikutuvastusserverit pole seadistatud ning sul ei ole võimalik lisada oma telefoninumbrit hilisemaks võimalikuks Matrix'i konto salasõna muutmiseks.";
"auth_untrusted_id_server" = "See isikutuvastusserver pole usaldusväärne"; "auth_untrusted_id_server" = "See isikutuvastusserver pole usaldusväärne";
"auth_password_dont_match" = "Salasõnad ei klapi omavahel"; "auth_password_dont_match" = "Salasõnad ei klapi omavahel";
"auth_username_in_use" = "Selline kasutajanimi on juba olemas"; "auth_username_in_use" = "Selline kasutajanimi on juba olemas";
"auth_forgot_password" = "Kas unustasid oma salasõna?"; "auth_forgot_password" = "Kas unustasid oma Matrix'i konto salasõna?";
"auth_forgot_password_error_no_configured_identity_server" = "Ühtegi isikutuvastusserverit pole seadistatud: salasõna taastamiseks määra see."; "auth_forgot_password_error_no_configured_identity_server" = "Ühtegi isikutuvastusserverit pole seadistatud: Matrix'i konto salasõna taastamiseks määra see.";
"auth_email_not_found" = "E-kirja saatmine ei õnnestunud: sellist e-posti aadressi ei leidu"; "auth_email_not_found" = "E-kirja saatmine ei õnnestunud: sellist e-posti aadressi ei leidu";
"auth_use_server_options" = "Kohandatud serveriseadistused"; "auth_use_server_options" = "Kohandatud serveriseadistused";
"auth_email_validation_message" = "Registreerimise jätkamiseks palun vaata oma e-posti"; "auth_email_validation_message" = "Registreerimise jätkamiseks palun vaata oma e-posti";
@ -84,15 +84,15 @@
"auth_msisdn_validation_message" = "Me oleme SMS'iga saatnud aktiveerimiskoodi. Palun sisesta see kood siia."; "auth_msisdn_validation_message" = "Me oleme SMS'iga saatnud aktiveerimiskoodi. Palun sisesta see kood siia.";
"auth_msisdn_validation_error" = "Telefoninumbri verifitseerimine ei õnnestunud."; "auth_msisdn_validation_error" = "Telefoninumbri verifitseerimine ei õnnestunud.";
"auth_recaptcha_message" = "See server soovib kindlaks teha, et sa ei ole robot"; "auth_recaptcha_message" = "See server soovib kindlaks teha, et sa ei ole robot";
"auth_reset_password_message" = "Salasõna taastamiseks sisesta sinu kontoga seotud e-posti aadress:"; "auth_reset_password_message" = "Matrix'i konto salasõna taastamiseks sisesta sinu kontoga seotud e-posti aadress:";
"auth_reset_password_missing_email" = "Sa pead sisestama oma kontoga seotud e-posti aadressi."; "auth_reset_password_missing_email" = "Sa pead sisestama oma kontoga seotud e-posti aadressi.";
"auth_reset_password_missing_password" = "Palun sisesta uus salasõna."; "auth_reset_password_missing_password" = "Palun sisesta uus salasõna.";
"auth_reset_password_email_validation_message" = "Saatsime e-kirja %@ aadressile. Kui oled avanud selles kirjas leidunud lingi, siis palun vajuta järgnevat nuppu."; "auth_reset_password_email_validation_message" = "Saatsime e-kirja %@ aadressile. Kui oled avanud selles kirjas leidunud lingi, siis palun vajuta järgnevat nuppu.";
"auth_reset_password_next_step_button" = "Ma olen teinud läbi oma e-posti aadressi kontrolli"; "auth_reset_password_next_step_button" = "Ma olen teinud läbi oma e-posti aadressi kontrolli";
"auth_reset_password_error_unauthorized" = "E-posti aadressi kontrollimine ei õnnestunud: palun vaata, et sa kindlasti klõpsisid saabunud kirjas olnud viidet"; "auth_reset_password_error_unauthorized" = "E-posti aadressi kontrollimine ei õnnestunud: palun vaata, et sa kindlasti klõpsisid saabunud kirjas olnud viidet";
"auth_reset_password_error_not_found" = "Sinu e-posti aadress ei tundu olema selles koduserveris seotud Matrixi kasutajatunnusega."; "auth_reset_password_error_not_found" = "Sinu e-posti aadress ei tundu olema selles koduserveris seotud Matrixi kasutajatunnusega.";
"auth_reset_password_error_is_required" = "Ühtegi isikutuvastusserverit pole seadistatud: salasõna taastamiseks määra see serveri sätetes."; "auth_reset_password_error_is_required" = "Ühtegi isikutuvastusserverit pole seadistatud: Matrix'i konto salasõna taastamiseks määra see serveri sätetes.";
"auth_reset_password_success_message" = "Sinu salasõna on vahetatud. \n \nSa oled välja logitud kõikidest oma seni kasutusel olnud sessioonidest ega saa enam teateid ega sõnumeid. Nende uuesti lugemiseks palun logi igas seadmes tagasi Matrix'i võrku."; "auth_reset_password_success_message" = "Sinu Matrix'i konto salasõna on vahetatud. \n \nSa oled välja logitud kõikidest oma seni kasutusel olnud sessioonidest ega saa enam teateid ega sõnumeid. Nende uuesti lugemiseks palun logi igas seadmes tagasi Matrix'i võrku.";
"auth_add_email_and_phone_warning" = "Registreerimine kasutades korraga nii e-posti aadressi kui ka telefoninumbrit ei ole senise API versiooni puhul veel võimalik. Hetkel läheb arvesse vaid telefoninumber. Sa võid hiljem lisada e-posti aadressi oma kasutajaprofiili seadetest."; "auth_add_email_and_phone_warning" = "Registreerimine kasutades korraga nii e-posti aadressi kui ka telefoninumbrit ei ole senise API versiooni puhul veel võimalik. Hetkel läheb arvesse vaid telefoninumber. Sa võid hiljem lisada e-posti aadressi oma kasutajaprofiili seadetest.";
"auth_accept_policies" = "Palun vaata üle kõik selle koduserveri kasutustingimused ja nõustu nendega:"; "auth_accept_policies" = "Palun vaata üle kõik selle koduserveri kasutustingimused ja nõustu nendega:";
"auth_autodiscover_invalid_response" = "Vigane koduserveri tuvastamise päringu vastus"; "auth_autodiscover_invalid_response" = "Vigane koduserveri tuvastamise päringu vastus";
@ -209,7 +209,7 @@
"deactivate_account_forget_messages_information_part2_emphasize" = "Hoiatus"; "deactivate_account_forget_messages_information_part2_emphasize" = "Hoiatus";
"deactivate_account_validate_action" = "Kas eemaldame selle konto kasutusest"; "deactivate_account_validate_action" = "Kas eemaldame selle konto kasutusest";
"deactivate_account_password_alert_title" = "Eemalda konto"; "deactivate_account_password_alert_title" = "Eemalda konto";
"deactivate_account_password_alert_message" = "Jätkamiseks palun sisesta oma salasõna"; "deactivate_account_password_alert_message" = "Jätkamiseks palun sisesta oma Matrix'i konto salasõna";
"auth_login_single_sign_on" = "Logi sisse"; "auth_login_single_sign_on" = "Logi sisse";
// Room recents // Room recents
"room_recents_directory_section" = "JUTUTUBADE LOEND"; "room_recents_directory_section" = "JUTUTUBADE LOEND";
@ -251,7 +251,7 @@
"room_event_action_redact" = "Eemalda"; "room_event_action_redact" = "Eemalda";
"room_event_action_more" = "Veel"; "room_event_action_more" = "Veel";
"room_event_action_share" = "Jaga"; "room_event_action_share" = "Jaga";
"room_event_action_permalink" = "Püsiviide"; "room_event_action_permalink" = "Kopeeri link sõnumisse";
"room_event_action_view_source" = "Vaata lähtekoodi"; "room_event_action_view_source" = "Vaata lähtekoodi";
"room_event_action_view_decrypted_source" = "Näita dekrüptitud lähtekoodi"; "room_event_action_view_decrypted_source" = "Näita dekrüptitud lähtekoodi";
"room_event_action_report" = "Teata kahtlasest sisust"; "room_event_action_report" = "Teata kahtlasest sisust";
@ -487,7 +487,7 @@
"settings_add_email_address" = "Lisa e-posti aadress"; "settings_add_email_address" = "Lisa e-posti aadress";
"settings_phone_number" = "Telefon"; "settings_phone_number" = "Telefon";
"settings_add_phone_number" = "Lisa telefoninumber"; "settings_add_phone_number" = "Lisa telefoninumber";
"settings_change_password" = "Muuda salasõna"; "settings_change_password" = "Muuda Matrix'i konto salasõna";
"settings_fail_to_update_profile" = "Profiili uuendamine ei õnnestunud"; "settings_fail_to_update_profile" = "Profiili uuendamine ei õnnestunud";
"settings_global_settings_info" = "Üldised teavituste seadistused leiduvad sinu %@ veebikliendis"; "settings_global_settings_info" = "Üldised teavituste seadistused leiduvad sinu %@ veebikliendis";
"settings_pin_rooms_with_missed_notif" = "Klammerda jututoad, kus leidub lugemata teavitusi"; "settings_pin_rooms_with_missed_notif" = "Klammerda jututoad, kus leidub lugemata teavitusi";
@ -524,11 +524,11 @@
"settings_old_password" = "vana salasõna"; "settings_old_password" = "vana salasõna";
"settings_new_password" = "uus salasõna"; "settings_new_password" = "uus salasõna";
"settings_confirm_password" = "korda uut salasõna"; "settings_confirm_password" = "korda uut salasõna";
"settings_fail_to_update_password" = "Salasõna uuendamine ei õnnestunud"; "settings_fail_to_update_password" = "Matrix'i konto salasõna uuendamine ei õnnestunud";
"settings_password_updated" = "Sinu salasõna on muudetud"; "settings_password_updated" = "Sinu Matrix'i konto salasõna on muudetud";
"settings_add_3pid_password_title_email" = "Lisa e-posti aadress"; "settings_add_3pid_password_title_email" = "Lisa e-posti aadress";
"settings_add_3pid_password_title_msidsn" = "Lisa telefoninumber"; "settings_add_3pid_password_title_msidsn" = "Lisa telefoninumber";
"settings_add_3pid_password_message" = "Jätkamiseks palun sisesta oma salasõna"; "settings_add_3pid_password_message" = "Jätkamiseks palun sisesta oma Matrix'i konto salasõna";
"settings_add_3pid_invalid_password_message" = "Vigane kasutajanimi või salasõna"; "settings_add_3pid_invalid_password_message" = "Vigane kasutajanimi või salasõna";
"settings_crypto_device_name" = "Sessiooni nimi: "; "settings_crypto_device_name" = "Sessiooni nimi: ";
"settings_crypto_device_id" = "\nSessiooni tunnus: "; "settings_crypto_device_id" = "\nSessiooni tunnus: ";
@ -537,7 +537,7 @@
"settings_crypto_blacklist_unverified_devices" = "Kasuta krüptimist vaid verifitseeritud sessioonides"; "settings_crypto_blacklist_unverified_devices" = "Kasuta krüptimist vaid verifitseeritud sessioonides";
"settings_deactivate_my_account" = "Eemalda minu konto kasutusest"; "settings_deactivate_my_account" = "Eemalda minu konto kasutusest";
"security_settings_crypto_sessions_loading" = "Laadin sessioone…"; "security_settings_crypto_sessions_loading" = "Laadin sessioone…";
"security_settings_user_password_description" = "Tuvasta oma isik sisestades salasõna"; "security_settings_user_password_description" = "Tuvasta oma isik sisestades Matrix'i konto salasõna";
// Manage session // Manage session
"manage_session_title" = "Halda sessiooni"; "manage_session_title" = "Halda sessiooni";
"manage_session_info" = "SESSIOONI TEAVE"; "manage_session_info" = "SESSIOONI TEAVE";
@ -766,7 +766,7 @@
// Security settings // Security settings
"security_settings_title" = "Turvalisus"; "security_settings_title" = "Turvalisus";
"security_settings_crypto_sessions" = "MINU SESSIOONID"; "security_settings_crypto_sessions" = "MINU SESSIOONID";
"security_settings_crypto_sessions_description_2" = "Kui sa ei tunne ära mõnda oma sisselogimissessiooni, siis muuda ära oma salasõna ja tee võtmetest uus turvaline varukoopia."; "security_settings_crypto_sessions_description_2" = "Kui sa ei tunne ära mõnda oma sisselogimissessiooni, siis muuda ära oma Matrix'i konto salasõna ja tee võtmetest uus turvaline varukoopia.";
"security_settings_secure_backup" = "TURVALINE VARUNDUS"; "security_settings_secure_backup" = "TURVALINE VARUNDUS";
"security_settings_secure_backup_description" = "Selleks puhuks, kui sa kaotad ligipääsu kõikidele oma sessioonidele, tee varukoopia oma krüptovõtmetest ja kasutajakonto seadistustest. Unikaalse turvavõtmega tagad selle, et sinu varukoopia on kaitstud."; "security_settings_secure_backup_description" = "Selleks puhuks, kui sa kaotad ligipääsu kõikidele oma sessioonidele, tee varukoopia oma krüptovõtmetest ja kasutajakonto seadistustest. Unikaalse turvavõtmega tagad selle, et sinu varukoopia on kaitstud.";
"security_settings_secure_backup_setup" = "Võta kasutusele"; "security_settings_secure_backup_setup" = "Võta kasutusele";
@ -794,7 +794,7 @@
"key_backup_setup_intro_manual_export_info" = "(Lisaseadistused)"; "key_backup_setup_intro_manual_export_info" = "(Lisaseadistused)";
"key_backup_setup_intro_manual_export_action" = "Ekspordi võtmed käsitsi"; "key_backup_setup_intro_manual_export_action" = "Ekspordi võtmed käsitsi";
"key_backup_setup_passphrase_title" = "Krüpti oma varukoopia turvafraasiga"; "key_backup_setup_passphrase_title" = "Krüpti oma varukoopia turvafraasiga";
"key_backup_setup_passphrase_info" = "Me salvestame krüptitud varukoopia sinu krüptovõtmetest meie serveris. Tagamaks, et keegi ei saa seda kasutada, krüpti varukoopia paroolifraasiga.\n\n Parima turvalisuse jaoks peaks paroolifraas olema erinev sinu konto salasõnast."; "key_backup_setup_passphrase_info" = "Me salvestame krüptitud varukoopia sinu krüptovõtmetest meie serveris. Tagamaks, et keegi ei saa seda kasutada, krüpti varukoopia paroolifraasiga.\n\n Parima turvalisuse jaoks peaks paroolifraas olema erinev sinu Matrix'i konto salasõnast.";
"key_backup_setup_passphrase_passphrase_title" = "Sisesta"; "key_backup_setup_passphrase_passphrase_title" = "Sisesta";
"key_backup_setup_passphrase_passphrase_placeholder" = "Sisesta paroolifraas"; "key_backup_setup_passphrase_passphrase_placeholder" = "Sisesta paroolifraas";
"key_backup_setup_passphrase_passphrase_valid" = "Tore!"; "key_backup_setup_passphrase_passphrase_valid" = "Tore!";
@ -1057,7 +1057,7 @@
"secrets_setup_recovery_key_storage_alert_message" = "✓ Trüki välja ja hoia turvalises kohas\n✓ Salvesta ta mälupulgale või välisele kõvakattale\n✓ Kopeeri ta sinu isiklikku salvestusruumi mõnes andmepilves"; "secrets_setup_recovery_key_storage_alert_message" = "✓ Trüki välja ja hoia turvalises kohas\n✓ Salvesta ta mälupulgale või välisele kõvakattale\n✓ Kopeeri ta sinu isiklikku salvestusruumi mõnes andmepilves";
"secrets_setup_recovery_passphrase_title" = "Määra turvafraas"; "secrets_setup_recovery_passphrase_title" = "Määra turvafraas";
"secrets_setup_recovery_passphrase_information" = "Andmete kaitsmiseks sinu koduserveris sisesta turvafraas, mida vaid sina tead."; "secrets_setup_recovery_passphrase_information" = "Andmete kaitsmiseks sinu koduserveris sisesta turvafraas, mida vaid sina tead.";
"secrets_setup_recovery_passphrase_additional_information" = "Palun ära kasuta selleks oma tavalist konto salasõna."; "secrets_setup_recovery_passphrase_additional_information" = "Palun ära kasuta selleks oma Matrix'i konto salasõna.";
"secrets_setup_recovery_passphrase_validate_action" = "Valmis"; "secrets_setup_recovery_passphrase_validate_action" = "Valmis";
"secrets_setup_recovery_passphrase_confirm_information" = "Kinnituseks sisesta turvafraas uuesti."; "secrets_setup_recovery_passphrase_confirm_information" = "Kinnituseks sisesta turvafraas uuesti.";
"secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Kinnita"; "secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Kinnita";
@ -1181,7 +1181,7 @@
"room_details_advanced_e2e_encryption_enabled_for_dm" = "Krüptimine on selles jututoas kasutusel"; "room_details_advanced_e2e_encryption_enabled_for_dm" = "Krüptimine on selles jututoas kasutusel";
"room_details_advanced_e2e_encryption_disabled_for_dm" = "Krüptimine ei ole selles jututoas kasutusel."; "room_details_advanced_e2e_encryption_disabled_for_dm" = "Krüptimine ei ole selles jututoas kasutusel.";
"pin_protection_kick_user_alert_message" = "Liiga palju vigu PIN-koodi sisestamisel ning sa oled nüüd välja logitud"; "pin_protection_kick_user_alert_message" = "Liiga palju vigu PIN-koodi sisestamisel ning sa oled nüüd välja logitud";
"secrets_reset_authentication_message" = "Kinnitamaks seda muudatust, sisesta oma konto salasõna"; "secrets_reset_authentication_message" = "Kinnitamaks seda muudatust, sisesta oma Matrix'i konto salasõna";
"secrets_reset_reset_action" = "Taasta algolek"; "secrets_reset_reset_action" = "Taasta algolek";
"secrets_reset_warning_message" = "Siis alustad nii, et kadunud on ajalugu, sõnumid ning usaldatud seadmed ja kasutajad."; "secrets_reset_warning_message" = "Siis alustad nii, et kadunud on ajalugu, sõnumid ning usaldatud seadmed ja kasutajad.";
"secrets_reset_warning_title" = "Kui sa alustad kõigega algusest"; "secrets_reset_warning_title" = "Kui sa alustad kõigega algusest";
@ -1563,3 +1563,35 @@
"poll_edit_form_update_failure_subtitle" = "Palun proovi uuesti"; "poll_edit_form_update_failure_subtitle" = "Palun proovi uuesti";
"poll_edit_form_update_failure_title" = "Küsitluse muutmine ei õnnestunud"; "poll_edit_form_update_failure_title" = "Küsitluse muutmine ei õnnestunud";
"poll_edit_form_poll_type" = "Küsitluse tüüp"; "poll_edit_form_poll_type" = "Küsitluse tüüp";
"location_sharing_post_failure_subtitle" = "%@ ei saanud sinu asukohta edastada. Palun proovi hiljem uuesti.";
"location_sharing_post_failure_title" = "Sinu asukoha saatmine ei õnnestunud";
"home_context_menu_leave" = "Lahku";
"home_context_menu_normal_priority" = "Tavalise tähtsusega";
"home_context_menu_low_priority" = "Vähetähtis";
"home_context_menu_unfavourite" = "Eemalda lemmikute hulgast";
"home_context_menu_favourite" = "Lemmik";
"home_context_menu_unmute" = "Eemalda summutamine";
"home_context_menu_mute" = "Summuta";
"home_context_menu_notifications" = "Teavitused";
"home_context_menu_make_dm" = "Tõsta otsevestluste alla";
"home_context_menu_make_room" = "Tõsta jututubade alla";
"event_formatter_message_deleted" = "Sõnum on kustutatud";
"settings_labs_enable_threads" = "Sõnumid jutulõngana";
"message_from_a_thread" = "Jutulõngast";
"threads_empty_show_all_threads" = "Näita kõiki jutulõngasid";
"threads_empty_tip" = "Soovitus: uue jutulõnga alustamiseks klõpsi sõnumit ja vali „Jutulõng“.";
"threads_empty_info_my" = "Vasta olemasolevasse jutulõnga või uue jutulõnga alustamiseks klõpsi sõnumit ja vali „Jutulõng“.";
"threads_empty_info_all" = "Jutulõngad aitavad hoida vestlused teemakohastena ning mugavalt loetavatena.";
"threads_empty_title" = "Halda vestlusi jutulõngadena";
"threads_action_my_threads" = "Minu jutulõngad";
"threads_action_all_threads" = "Kõik jutulõngad";
"threads_title" = "Jutulõngad";
"thread_copy_link_to_thread" = "Kopeeri jutulõnga link";
// MARK: Threads
"room_thread_title" = "Jutulõng";
"room_accessibility_thread_more" = "Veel";
"room_accessibility_threads" = "Jutulõngad";
"room_event_copy_link_info" = "Link on kopeeritud lõikelauale.";
"room_event_action_reply_in_thread" = "Jutulõng";
"room_event_action_view_in_room" = "Vaata jututoas";

View file

@ -116,3 +116,6 @@
/** General **/ /** General **/
"NOTIFICATION" = "Notification"; "NOTIFICATION" = "Notification";
/* New file message from a specific person, not referencing a room. */
"LOCATION_FROM_USER" = "%@ a partagé sa localisation";

View file

@ -47,7 +47,7 @@
"auth_optional_phone_placeholder" = "Numéro de téléphone (facultatif)"; "auth_optional_phone_placeholder" = "Numéro de téléphone (facultatif)";
"auth_phone_placeholder" = "Numéro de téléphone"; "auth_phone_placeholder" = "Numéro de téléphone";
"auth_repeat_password_placeholder" = "Répéter le mot de passe"; "auth_repeat_password_placeholder" = "Répéter le mot de passe";
"auth_repeat_new_password_placeholder" = "Confirmer le nouveau mot de passe"; "auth_repeat_new_password_placeholder" = "Confirmer le nouveau mot de passe de votre compte Matrix";
"auth_invalid_login_param" = "Nom dutilisateur et/ou mot de passe incorrect"; "auth_invalid_login_param" = "Nom dutilisateur et/ou mot de passe incorrect";
"auth_invalid_user_name" = "Les noms dutilisateur ne peuvent contenir que des lettres, des chiffres, des points, des traits dunion ou des tirets bas"; "auth_invalid_user_name" = "Les noms dutilisateur ne peuvent contenir que des lettres, des chiffres, des points, des traits dunion ou des tirets bas";
"auth_invalid_password" = "Mot de passe trop court (min 6)"; "auth_invalid_password" = "Mot de passe trop court (min 6)";
@ -70,14 +70,14 @@
"auth_msisdn_validation_message" = "Nous vous avons envoyé un SMS avec un code dactivation. Merci de le recopier ci-dessous."; "auth_msisdn_validation_message" = "Nous vous avons envoyé un SMS avec un code dactivation. Merci de le recopier ci-dessous.";
"auth_msisdn_validation_error" = "Impossible de vérifier votre numéro de téléphone."; "auth_msisdn_validation_error" = "Impossible de vérifier votre numéro de téléphone.";
"auth_recaptcha_message" = "Ce serveur daccueil voudrait sassurer que vous nêtes pas un robot"; "auth_recaptcha_message" = "Ce serveur daccueil voudrait sassurer que vous nêtes pas un robot";
"auth_reset_password_message" = "Pour réinitialiser votre mot de passe, saisissez ladresse e-mail liée à votre compte :"; "auth_reset_password_message" = "Pour réinitialiser le mot de passe de votre compte Matrix, saisissez ladresse e-mail liée à votre compte :";
"auth_reset_password_missing_email" = "Vous devez saisir ladresse e-mail liée à votre compte."; "auth_reset_password_missing_email" = "Vous devez saisir ladresse e-mail liée à votre compte.";
"auth_reset_password_missing_password" = "Vous devez spécifier un nouveau mot de passe."; "auth_reset_password_missing_password" = "Vous devez spécifier un nouveau mot de passe.";
"auth_reset_password_email_validation_message" = "Un e-mail a été envoyé à %@. Cliquez dabord sur le lien dans le-mail, puis ci-dessous."; "auth_reset_password_email_validation_message" = "Un e-mail a été envoyé à %@. Cliquez dabord sur le lien dans le-mail, puis ci-dessous.";
"auth_reset_password_next_step_button" = "Jai vérifié mon adresse e-mail"; "auth_reset_password_next_step_button" = "Jai vérifié mon adresse e-mail";
"auth_reset_password_error_unauthorized" = "Impossible de vérifier ladresse e-mail : assurez-vous de cliquer sur le lien dans le-mail"; "auth_reset_password_error_unauthorized" = "Impossible de vérifier ladresse e-mail : assurez-vous de cliquer sur le lien dans le-mail";
"auth_reset_password_error_not_found" = "Votre adresse e-mail ne semble pas associée à un identifiant Matrix sur ce serveur daccueil."; "auth_reset_password_error_not_found" = "Votre adresse e-mail ne semble pas associée à un identifiant Matrix sur ce serveur daccueil.";
"auth_reset_password_success_message" = "Votre mot de passe a été réinitialisé.\n\nVous avez été déconnecté de toutes vos sessions et ne recevrez plus de notifications. Pour réactiver les notifications, reconnectez-vous sur chaque appareil."; "auth_reset_password_success_message" = "Le mot de passe de votre compte Matrix a été réinitialisé.\n\nVous avez été déconnecté de toutes vos sessions et ne recevrez plus de notifications. Pour réactiver les notifications, reconnectez-vous sur chaque appareil.";
"auth_add_email_and_phone_warning" = "Linscription avec un e-mail et un numéro de téléphone à la fois nest pas prise en charge tant que lAPI n'existe pas. Seul votre numéro de téléphone sera pris en compte. Vous pourrez ajouter ladresse e-mail dans vos options de profil."; "auth_add_email_and_phone_warning" = "Linscription avec un e-mail et un numéro de téléphone à la fois nest pas prise en charge tant que lAPI n'existe pas. Seul votre numéro de téléphone sera pris en compte. Vous pourrez ajouter ladresse e-mail dans vos options de profil.";
// Chat creation // Chat creation
"room_creation_title" = "Nouvelle discussion"; "room_creation_title" = "Nouvelle discussion";
@ -206,7 +206,7 @@
"room_event_action_redact" = "Effacer"; "room_event_action_redact" = "Effacer";
"room_event_action_more" = "Plus"; "room_event_action_more" = "Plus";
"room_event_action_share" = "Partager"; "room_event_action_share" = "Partager";
"room_event_action_permalink" = "Permalien"; "room_event_action_permalink" = "Copier le lien vers le message";
"room_event_action_view_source" = "Voir la source"; "room_event_action_view_source" = "Voir la source";
"room_event_action_report" = "Signaler le contenu"; "room_event_action_report" = "Signaler le contenu";
"room_event_action_report_prompt_reason" = "Raison pour le signalement du contenu"; "room_event_action_report_prompt_reason" = "Raison pour le signalement du contenu";
@ -292,12 +292,12 @@
"settings_send_crash_report" = "Envoyer des rapports danomalies anonymes et des statistiques dutilisation"; "settings_send_crash_report" = "Envoyer des rapports danomalies anonymes et des statistiques dutilisation";
"settings_enable_rageshake" = "Secouer lappareil pour signaler un bug"; "settings_enable_rageshake" = "Secouer lappareil pour signaler un bug";
"settings_clear_cache" = "Vider le cache"; "settings_clear_cache" = "Vider le cache";
"settings_change_password" = "Changer de mot de passe"; "settings_change_password" = "Changer le mot de passe de votre compte Matrix";
"settings_old_password" = "ancien mot de passe"; "settings_old_password" = "ancien mot de passe";
"settings_new_password" = "nouveau mot de passe"; "settings_new_password" = "nouveau mot de passe";
"settings_confirm_password" = "confirmer le mot de passe"; "settings_confirm_password" = "confirmer le mot de passe";
"settings_fail_to_update_password" = "Échec de la modification du mot de passe"; "settings_fail_to_update_password" = "Échec de la modification du mot de passe du compte Matrix";
"settings_password_updated" = "Votre mot de passe a été modifié"; "settings_password_updated" = "Le mot de passe de votre compte Matrix a été modifié";
"settings_crypto_device_name" = "Nom de la session : "; "settings_crypto_device_name" = "Nom de la session : ";
"settings_crypto_device_id" = "\nIdentifiant de la session : "; "settings_crypto_device_id" = "\nIdentifiant de la session : ";
"settings_crypto_device_key" = "\nClé de la session :\n"; "settings_crypto_device_key" = "\nClé de la session :\n";
@ -526,7 +526,7 @@
"deactivate_account_forget_messages_information_part3" = ": les futurs utilisateurs auront alors une vue incomplète des conversations)"; "deactivate_account_forget_messages_information_part3" = ": les futurs utilisateurs auront alors une vue incomplète des conversations)";
"deactivate_account_validate_action" = "Désactiver le compte"; "deactivate_account_validate_action" = "Désactiver le compte";
"deactivate_account_password_alert_title" = "Désactiver le compte"; "deactivate_account_password_alert_title" = "Désactiver le compte";
"deactivate_account_password_alert_message" = "Pour continuer, veuillez renseigner votre mot de passe"; "deactivate_account_password_alert_message" = "Pour continuer, veuillez renseigner le mot de passe de votre compte Matrix";
"event_formatter_rerequest_keys_part1_link" = "Redemander les clés de chiffrement"; "event_formatter_rerequest_keys_part1_link" = "Redemander les clés de chiffrement";
"event_formatter_rerequest_keys_part2" = " depuis vos autres sessions."; "event_formatter_rerequest_keys_part2" = " depuis vos autres sessions.";
// Re-request confirmation dialog // Re-request confirmation dialog
@ -584,7 +584,7 @@
"key_backup_setup_intro_title" = "Ne perdez jamais vos messages chiffrés"; "key_backup_setup_intro_title" = "Ne perdez jamais vos messages chiffrés";
"key_backup_setup_intro_info" = "Les messages des salons chiffrés sont sécurisés avec un chiffrement de bout en bout. Seuls vous et le(s) destinataire(s) avez les clés pour lire ces messages.\n\nSauvegardez vos clés de façon sécurisée pour éviter de les perdre."; "key_backup_setup_intro_info" = "Les messages des salons chiffrés sont sécurisés avec un chiffrement de bout en bout. Seuls vous et le(s) destinataire(s) avez les clés pour lire ces messages.\n\nSauvegardez vos clés de façon sécurisée pour éviter de les perdre.";
"key_backup_setup_intro_setup_action" = "Configurer"; "key_backup_setup_intro_setup_action" = "Configurer";
"key_backup_setup_passphrase_info" = "Nous conserverons une copie chiffrée de vos clés sur notre serveur. Protégez votre sauvegarde avec une phrase secrète pour quelle soit en sécurité.\n\nPour une sécurité maximale, elle devrait être différente du mot de passe de votre compte."; "key_backup_setup_passphrase_info" = "Nous conserverons une copie chiffrée de vos clés sur notre serveur. Protégez votre sauvegarde avec une phrase secrète pour quelle soit en sécurité.\n\nPour une sécurité maximale, elle devrait être différente du mot de passe de votre compte Matrix.";
"key_backup_setup_passphrase_passphrase_title" = "Saisir"; "key_backup_setup_passphrase_passphrase_title" = "Saisir";
"key_backup_setup_passphrase_passphrase_placeholder" = "Saisir la phrase secrète"; "key_backup_setup_passphrase_passphrase_placeholder" = "Saisir la phrase secrète";
"key_backup_setup_passphrase_passphrase_valid" = "Super !"; "key_backup_setup_passphrase_passphrase_valid" = "Super !";
@ -816,7 +816,7 @@
"image_picker_action_library" = "Choisir dans la médiathèque"; "image_picker_action_library" = "Choisir dans la médiathèque";
"camera_unavailable" = "Lappareil photo nest pas disponible sur votre appareil"; "camera_unavailable" = "Lappareil photo nest pas disponible sur votre appareil";
"photo_library_access_not_granted" = "%@ na pas la permission pour accéder à la médiathèque, veuillez modifier les options de confidentialité"; "photo_library_access_not_granted" = "%@ na pas la permission pour accéder à la médiathèque, veuillez modifier les options de confidentialité";
"auth_forgot_password_error_no_configured_identity_server" = "Aucun serveur didentité nest configuré : ajoutez-en un pour réinitialiser votre mot de passe."; "auth_forgot_password_error_no_configured_identity_server" = "Aucun serveur didentité nest configuré : ajoutez-en un pour réinitialiser le mot de passe de votre compte Matrix.";
"room_creation_error_invite_user_by_email_without_identity_server" = "Aucun serveur didentité nest configuré donc vous ne pouvez pas ajouter de participant avec un e-mail."; "room_creation_error_invite_user_by_email_without_identity_server" = "Aucun serveur didentité nest configuré donc vous ne pouvez pas ajouter de participant avec un e-mail.";
"room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Aucun serveur didentité nest configuré donc vous ne pouvez pas commencer de discussion avec un contact en utilisant un e-mail."; "room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Aucun serveur didentité nest configuré donc vous ne pouvez pas commencer de discussion avec un contact en utilisant un e-mail.";
// Service terms // Service terms
@ -845,9 +845,9 @@
"auth_add_email_message_2" = "Définissez une adresse e-mail pour la récupération de compte, et pour être éventuellement découvrable par les personnes qui vous connaissent."; "auth_add_email_message_2" = "Définissez une adresse e-mail pour la récupération de compte, et pour être éventuellement découvrable par les personnes qui vous connaissent.";
"auth_add_phone_message_2" = "Définissez un numéro de téléphone pour être éventuellement découvrable par les personnes qui vous connaissent."; "auth_add_phone_message_2" = "Définissez un numéro de téléphone pour être éventuellement découvrable par les personnes qui vous connaissent.";
"auth_add_email_phone_message_2" = "Définissez une adresse e-mail pour la récupération de compte. Vous pouvez ensuite utiliser votre e-mail ou votre numéro de téléphone pour être découvrable par les personnes qui vous connaissent."; "auth_add_email_phone_message_2" = "Définissez une adresse e-mail pour la récupération de compte. Vous pouvez ensuite utiliser votre e-mail ou votre numéro de téléphone pour être découvrable par les personnes qui vous connaissent.";
"auth_email_is_required" = "Aucun serveur didentité nest configuré donc vous ne pouvez pas ajouter dadresse e-mail pour pouvoir réinitialiser votre mot de passe ultérieurement."; "auth_email_is_required" = "Aucun serveur didentité nest configuré donc vous ne pouvez pas ajouter dadresse e-mail pour pouvoir réinitialiser le mot de passe de votre compte Matrix ultérieurement.";
"auth_phone_is_required" = "Aucun serveur didentité nest configuré donc vous ne pouvez pas ajouter de numéro de téléphone pour pouvoir réinitialiser votre mot de passe ultérieurement."; "auth_phone_is_required" = "Aucun serveur didentité nest configuré donc vous ne pouvez pas ajouter de numéro de téléphone pour pouvoir réinitialiser le mot de passe de votre compte Matrix ultérieurement.";
"auth_reset_password_error_is_required" = "Aucun serveur didentité nest configuré : ajoutez-en un dans les options du serveur pour réinitialiser votre mot de passe."; "auth_reset_password_error_is_required" = "Aucun serveur didentité nest configuré : ajoutez-en un dans les options du serveur pour réinitialiser le mot de passe de votre compte Matrix.";
"contacts_address_book_no_identity_server" = "Aucun serveur didentité nest configuré"; "contacts_address_book_no_identity_server" = "Aucun serveur didentité nest configuré";
"settings_discovery_settings" = "DÉCOUVERTE"; "settings_discovery_settings" = "DÉCOUVERTE";
"settings_identity_server_settings" = "SERVEUR DIDENTITÉ"; "settings_identity_server_settings" = "SERVEUR DIDENTITÉ";
@ -908,7 +908,7 @@
"service_terms_modal_message_identity_server" = "Acceptez les conditions du serveur didentité (%@) pour découvrir des contacts."; "service_terms_modal_message_identity_server" = "Acceptez les conditions du serveur didentité (%@) pour découvrir des contacts.";
"settings_add_3pid_password_title_email" = "Ajouter une adresse e-mail"; "settings_add_3pid_password_title_email" = "Ajouter une adresse e-mail";
"settings_add_3pid_password_title_msidsn" = "Ajouter un numéro de téléphone"; "settings_add_3pid_password_title_msidsn" = "Ajouter un numéro de téléphone";
"settings_add_3pid_password_message" = "Pour continuer, saisissez votre mot de passe"; "settings_add_3pid_password_message" = "Pour continuer, saisissez le mot de passe de votre compte Matrix";
"settings_add_3pid_invalid_password_message" = "Informations dauthentification invalides"; "settings_add_3pid_invalid_password_message" = "Informations dauthentification invalides";
"error_not_supported_on_mobile" = "Vous ne pouvez pas faire cela depuis %@ mobile."; "error_not_supported_on_mobile" = "Vous ne pouvez pas faire cela depuis %@ mobile.";
"widget_menu_refresh" = "Actualiser"; "widget_menu_refresh" = "Actualiser";
@ -1130,7 +1130,7 @@
"secrets_setup_recovery_key_storage_alert_message" = "✓ Imprimez-la et stockez-la dans un endroit sûr\n✓ Sauvegardez-la sur une clé USB ou un disque de sauvegarde\n✓ Copiez-la sur votre stockage personnel dans le cloud"; "secrets_setup_recovery_key_storage_alert_message" = "✓ Imprimez-la et stockez-la dans un endroit sûr\n✓ Sauvegardez-la sur une clé USB ou un disque de sauvegarde\n✓ Copiez-la sur votre stockage personnel dans le cloud";
"secrets_setup_recovery_passphrase_title" = "Définir une phrase de sécurité"; "secrets_setup_recovery_passphrase_title" = "Définir une phrase de sécurité";
"secrets_setup_recovery_passphrase_information" = "Saisissez une phrase de sécurité que vous seul connaissez, utilisée pour sécuriser les secrets sur votre serveur."; "secrets_setup_recovery_passphrase_information" = "Saisissez une phrase de sécurité que vous seul connaissez, utilisée pour sécuriser les secrets sur votre serveur.";
"secrets_setup_recovery_passphrase_additional_information" = "Nutilisez pas le mot de passe de votre compte."; "secrets_setup_recovery_passphrase_additional_information" = "Nutilisez pas le mot de passe de votre compte Matrix.";
"secrets_setup_recovery_passphrase_validate_action" = "Terminé"; "secrets_setup_recovery_passphrase_validate_action" = "Terminé";
"secrets_setup_recovery_passphrase_confirm_information" = "Saisissez à nouveau votre phrase de sécurité pour la confirmer."; "secrets_setup_recovery_passphrase_confirm_information" = "Saisissez à nouveau votre phrase de sécurité pour la confirmer.";
"secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Confirmer"; "secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Confirmer";
@ -1139,13 +1139,13 @@
"authenticated_session_flow_not_supported" = "Cette application ne prend par en charge le mécanisme dauthentification de votre serveur daccueil."; "authenticated_session_flow_not_supported" = "Cette application ne prend par en charge le mécanisme dauthentification de votre serveur daccueil.";
"secure_backup_setup_banner_title" = "Sauvegarde sécurisée"; "secure_backup_setup_banner_title" = "Sauvegarde sécurisée";
"secure_backup_setup_banner_subtitle" = "Protection afin déviter de perdre laccès aux messages et données chiffrés"; "secure_backup_setup_banner_subtitle" = "Protection afin déviter de perdre laccès aux messages et données chiffrés";
"security_settings_crypto_sessions_description_2" = "Si vous ne reconnaissez pas une connexion, changez votre mot de passe et réinitialisez la sauvegarde sécurisée."; "security_settings_crypto_sessions_description_2" = "Si vous ne reconnaissez pas une connexion, changez le mot de passe de votre compte Matrix et réinitialisez la sauvegarde sécurisée.";
"security_settings_secure_backup" = "SAUVEGARDE SÉCURISÉE"; "security_settings_secure_backup" = "SAUVEGARDE SÉCURISÉE";
"security_settings_secure_backup_description" = "Sauvegardez vos clés de chiffrement et les données de votre compte au où vous perdriez laccès à vos sessions. Vos clés seront protégées par une clé de sécurité unique."; "security_settings_secure_backup_description" = "Sauvegardez vos clés de chiffrement et les données de votre compte au où vous perdriez laccès à vos sessions. Vos clés seront protégées par une clé de sécurité unique.";
"security_settings_secure_backup_setup" = "Configurer"; "security_settings_secure_backup_setup" = "Configurer";
"security_settings_secure_backup_synchronise" = "Synchroniser"; "security_settings_secure_backup_synchronise" = "Synchroniser";
"security_settings_secure_backup_delete" = "Supprimer la sauvegarde"; "security_settings_secure_backup_delete" = "Supprimer la sauvegarde";
"security_settings_user_password_description" = "Confirmez votre identité en saisissant le mot de passe de votre compte"; "security_settings_user_password_description" = "Confirmez votre identité en saisissant le mot de passe de votre compte Matrix";
"secure_key_backup_setup_existing_backup_error_title" = "Une sauvegarde pour les messages existe déjà"; "secure_key_backup_setup_existing_backup_error_title" = "Une sauvegarde pour les messages existe déjà";
"secure_key_backup_setup_existing_backup_error_info" = "Déverrouillez-la pour la réutiliser dans la sauvegarde sécurisée ou supprimez-la pour créer une nouvelle sauvegarde de messages dans la sauvegarde sécurisée."; "secure_key_backup_setup_existing_backup_error_info" = "Déverrouillez-la pour la réutiliser dans la sauvegarde sécurisée ou supprimez-la pour créer une nouvelle sauvegarde de messages dans la sauvegarde sécurisée.";
"secure_key_backup_setup_existing_backup_error_unlock_it" = "La déverrouiller"; "secure_key_backup_setup_existing_backup_error_unlock_it" = "La déverrouiller";
@ -1285,7 +1285,7 @@
// MARK: - Major update // MARK: - Major update
"major_update_title" = "Riot est désormais %@"; "major_update_title" = "Riot est désormais %@";
"secrets_reset_authentication_message" = "Saisir votre mot de passe de compte pour confirmer"; "secrets_reset_authentication_message" = "Saisissez le mot de passe de votre compte Matrix pour confirmer";
"secrets_reset_reset_action" = "Réinitialiser"; "secrets_reset_reset_action" = "Réinitialiser";
"secrets_reset_warning_message" = "Vous allez reprendre sans historique, sans message, appareil ou utilisateur de confiance."; "secrets_reset_warning_message" = "Vous allez reprendre sans historique, sans message, appareil ou utilisateur de confiance.";
"secrets_reset_warning_title" = "Si vous réinitialisez tout"; "secrets_reset_warning_title" = "Si vous réinitialisez tout";
@ -1640,3 +1640,35 @@
"poll_edit_form_update_failure_subtitle" = "Veuillez réessayer"; "poll_edit_form_update_failure_subtitle" = "Veuillez réessayer";
"poll_edit_form_update_failure_title" = "Échec lors de la mise à jour du sondage"; "poll_edit_form_update_failure_title" = "Échec lors de la mise à jour du sondage";
"poll_edit_form_poll_type" = "Type de sondage"; "poll_edit_form_poll_type" = "Type de sondage";
"location_sharing_post_failure_subtitle" = "%# na pas pu envoyer votre localisation. Merci de réessayer plus tard.";
"location_sharing_post_failure_title" = "Nous navons pas pu envoyer votre localisation";
"home_context_menu_leave" = "Partir";
"home_context_menu_unfavourite" = "Retirer des favoris";
"home_context_menu_favourite" = "Mettre en favoris";
"home_context_menu_unmute" = "Retirer la sourdine";
"home_context_menu_mute" = "Mettre en sourdine";
"home_context_menu_notifications" = "Notifications";
"home_context_menu_make_room" = "Déplacer vers Salons";
"home_context_menu_make_dm" = "Déplacer vers Personnes";
"event_formatter_message_deleted" = "Message supprimé";
"settings_labs_enable_threads" = "Fils de discussion";
"message_from_a_thread" = "Depuis un fil de discussion";
"threads_empty_show_all_threads" = "Afficher tous les fils de discussion";
"threads_empty_tip" = "Astuce : appuyez sur un message puis sur « Fil » pour en commencer un nouveau.";
"threads_empty_info_my" = "Répondez à un fil de discussion actif, ou appuyez sur un message et utilisez « Fil » pour en commencer un nouveau.";
"threads_empty_info_all" = "Les fils de discussion vous permettent de centrer vos conversations sur un sujet, et de les suivre facilement.";
"threads_empty_title" = "Gardez vos conversations organisées avec les fils de discussion";
"threads_action_my_threads" = "Mes fils";
"threads_action_all_threads" = "Tous les fils";
"threads_title" = "Fils";
"thread_copy_link_to_thread" = "Copier le lien vers le fil";
// MARK: Threads
"room_thread_title" = "Fil";
"room_accessibility_thread_more" = "Plus";
"room_accessibility_threads" = "Fils";
"room_event_copy_link_info" = "Lien copié dans le presse-papier.";
"room_event_action_reply_in_thread" = "Fil";
"room_event_action_view_in_room" = "Afficher dans le salon";
"home_context_menu_normal_priority" = "Priorité normale";
"home_context_menu_low_priority" = "Basse priorité";

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -52,7 +52,7 @@
"auth_optional_phone_placeholder" = "Telefonszám (nem kötelező)"; "auth_optional_phone_placeholder" = "Telefonszám (nem kötelező)";
"auth_phone_placeholder" = "Telefonszám"; "auth_phone_placeholder" = "Telefonszám";
"auth_repeat_password_placeholder" = "Jelszó megerősítés"; "auth_repeat_password_placeholder" = "Jelszó megerősítés";
"auth_repeat_new_password_placeholder" = "Új jelszó megerősítés"; "auth_repeat_new_password_placeholder" = "Új Matrix fiók jelszó megerősítés";
"auth_home_server_placeholder" = "URL (pl. https://matrix.org)"; "auth_home_server_placeholder" = "URL (pl. https://matrix.org)";
"auth_identity_server_placeholder" = "URL (pl. https://vector.im)"; "auth_identity_server_placeholder" = "URL (pl. https://vector.im)";
"auth_invalid_login_param" = "Hibás felhasználói név és/vagy jelszó"; "auth_invalid_login_param" = "Hibás felhasználói név és/vagy jelszó";
@ -73,7 +73,7 @@
"auth_untrusted_id_server" = "Az azonosító szerver megbízhatatlan"; "auth_untrusted_id_server" = "Az azonosító szerver megbízhatatlan";
"auth_password_dont_match" = "A jelszavak nem egyeznek meg"; "auth_password_dont_match" = "A jelszavak nem egyeznek meg";
"auth_username_in_use" = "A felhasználónév foglalt"; "auth_username_in_use" = "A felhasználónév foglalt";
"auth_forgot_password" = "Elfelejtetted a jelszót?"; "auth_forgot_password" = "Elfelejtetted a Matrix fiók jelszót?";
"auth_email_not_found" = "E-mail küldési hiba: Az e-mail cím nem található"; "auth_email_not_found" = "E-mail küldési hiba: Az e-mail cím nem található";
"auth_use_server_options" = "Egyedi szerver beállítások használata (haladó)"; "auth_use_server_options" = "Egyedi szerver beállítások használata (haladó)";
"auth_email_validation_message" = "Ellenőrizd az e-mailedet a regisztráció folytatásához"; "auth_email_validation_message" = "Ellenőrizd az e-mailedet a regisztráció folytatásához";
@ -81,14 +81,14 @@
"auth_msisdn_validation_message" = "Elküldtük az SMS aktivációs kódot. Írd be a kódot ide."; "auth_msisdn_validation_message" = "Elküldtük az SMS aktivációs kódot. Írd be a kódot ide.";
"auth_msisdn_validation_error" = "Nem sikerült ellenőrizni a telefonszámot."; "auth_msisdn_validation_error" = "Nem sikerült ellenőrizni a telefonszámot.";
"auth_recaptcha_message" = "Ez a Matrix szerver szeretne megbizonyosodni arról, hogy nem vagy robot"; "auth_recaptcha_message" = "Ez a Matrix szerver szeretne megbizonyosodni arról, hogy nem vagy robot";
"auth_reset_password_message" = "A jelszó visszaállításához add meg az e-mail címet amit a felhasználói fiókhoz kötöttél:"; "auth_reset_password_message" = "A Matrix fiók jelszó visszaállításához add meg az e-mail címet amit a felhasználói fiókhoz kötöttél:";
"auth_reset_password_missing_email" = "A felhasználói fiókodhoz kötött jelszót kell megadni."; "auth_reset_password_missing_email" = "A felhasználói fiókodhoz kötött jelszót kell megadni.";
"auth_reset_password_missing_password" = "Add meg az új jelszót."; "auth_reset_password_missing_password" = "Add meg az új jelszót.";
"auth_reset_password_email_validation_message" = "Az e-mailt elküldtük a %@ címre. Ha rákattintottál a linkre ami benne van utána kattints ide."; "auth_reset_password_email_validation_message" = "Az e-mailt elküldtük a %@ címre. Ha rákattintottál a linkre ami benne van utána kattints ide.";
"auth_reset_password_next_step_button" = "Ellenőriztem az e-mail címet"; "auth_reset_password_next_step_button" = "Ellenőriztem az e-mail címet";
"auth_reset_password_error_unauthorized" = "E-mail cím ellenőrzése nem sikerült: bizonyosodj meg róla, hogy az e-mailben lévő linkre rákattintottál"; "auth_reset_password_error_unauthorized" = "E-mail cím ellenőrzése nem sikerült: bizonyosodj meg róla, hogy az e-mailben lévő linkre rákattintottál";
"auth_reset_password_error_not_found" = "Úgy tűnik az e-mail címed nincs összekötve a Matrix azonosítóddal a Matrix szerveren."; "auth_reset_password_error_not_found" = "Úgy tűnik az e-mail címed nincs összekötve a Matrix azonosítóddal a Matrix szerveren.";
"auth_reset_password_success_message" = "Visszaállítottuk a jelszavad.\n\nKijelentkeztettünk minden munkamenetedből és nem kapsz értesítéseket sem. Az értesítések újra engedélyezéséhez jelentkezz be újra az eszközökön."; "auth_reset_password_success_message" = "Visszaállítottuk a Matrix fiók jelszavad.\n\nKijelentkeztettünk minden munkamenetedből és nem kapsz értesítéseket sem. Az értesítések újra engedélyezéséhez jelentkezz be újra az eszközökön.";
// Chat creation // Chat creation
"room_creation_title" = "Új csevegés"; "room_creation_title" = "Új csevegés";
"room_creation_account" = "Fiók"; "room_creation_account" = "Fiók";
@ -224,7 +224,7 @@
"room_event_action_redact" = "Töröl"; "room_event_action_redact" = "Töröl";
"room_event_action_more" = "További"; "room_event_action_more" = "További";
"room_event_action_share" = "Megosztás"; "room_event_action_share" = "Megosztás";
"room_event_action_permalink" = "Állandó hivatkozás"; "room_event_action_permalink" = "Üzenet hivatkozás másolása";
"room_event_action_view_source" = "Forrás megjelenítése"; "room_event_action_view_source" = "Forrás megjelenítése";
"room_event_action_view_decrypted_source" = "Visszafejtett forrás megjelenítése"; "room_event_action_view_decrypted_source" = "Visszafejtett forrás megjelenítése";
"room_event_action_report" = "Tartalom bejelentése"; "room_event_action_report" = "Tartalom bejelentése";
@ -338,12 +338,12 @@
"settings_send_crash_report" = "Személytelen összeomlás és felhasználási adatok küldése"; "settings_send_crash_report" = "Személytelen összeomlás és felhasználási adatok küldése";
"settings_enable_rageshake" = "Eszköz megrázása a hiba bejelentéséhez"; "settings_enable_rageshake" = "Eszköz megrázása a hiba bejelentéséhez";
"settings_clear_cache" = "Gyorsítótár kiürítése"; "settings_clear_cache" = "Gyorsítótár kiürítése";
"settings_change_password" = "Jelszó megváltoztatása"; "settings_change_password" = "Matrix fiók jelszó megváltoztatása";
"settings_old_password" = "régi jelszó"; "settings_old_password" = "régi jelszó";
"settings_new_password" = "új jelszó"; "settings_new_password" = "új jelszó";
"settings_confirm_password" = "jelszó megerősítése"; "settings_confirm_password" = "jelszó megerősítése";
"settings_fail_to_update_password" = "A jelszó frissítése nem sikerült"; "settings_fail_to_update_password" = "A Matrix fiók jelszó frissítése nem sikerült";
"settings_password_updated" = "A jelszavad frissítve"; "settings_password_updated" = "A Matrix fiók jelszavad frissítve";
"settings_crypto_device_name" = "Munkamenet neve: "; "settings_crypto_device_name" = "Munkamenet neve: ";
"settings_crypto_device_id" = "\nMunkamenet azonosítója: "; "settings_crypto_device_id" = "\nMunkamenet azonosítója: ";
"settings_crypto_device_key" = "\nMunkamenet kulcsa:\n"; "settings_crypto_device_key" = "\nMunkamenet kulcsa:\n";
@ -543,7 +543,7 @@
"deactivate_account_forget_messages_information_part3" = ": ezzel a jövőben a felhasználók hiányos csevegést fognak csak látni)"; "deactivate_account_forget_messages_information_part3" = ": ezzel a jövőben a felhasználók hiányos csevegést fognak csak látni)";
"deactivate_account_validate_action" = "Felhasználói fiók felfüggesztése"; "deactivate_account_validate_action" = "Felhasználói fiók felfüggesztése";
"deactivate_account_password_alert_title" = "Felhasználói fiók felfüggesztése"; "deactivate_account_password_alert_title" = "Felhasználói fiók felfüggesztése";
"deactivate_account_password_alert_message" = "A folytatáshoz add meg a jelszavadat"; "deactivate_account_password_alert_message" = "A folytatáshoz add meg a Matrix fiók jelszavadat";
// Re-request confirmation dialog // Re-request confirmation dialog
"rerequest_keys_alert_title" = "Kérés elküldve"; "rerequest_keys_alert_title" = "Kérés elküldve";
"rerequest_keys_alert_message" = "Kérlek indítsd el a %@et egy másik eszközödön amelyik vissza tudja fejteni az üzenetet, hogy el tudja küldeni a kulcsokat ennek a munkamenetnek."; "rerequest_keys_alert_message" = "Kérlek indítsd el a %@et egy másik eszközödön amelyik vissza tudja fejteni az üzenetet, hogy el tudja küldeni a kulcsokat ennek a munkamenetnek.";
@ -589,7 +589,7 @@
"key_backup_setup_intro_title" = "Soha ne veszítsd el a titkosított üzeneteidet"; "key_backup_setup_intro_title" = "Soha ne veszítsd el a titkosított üzeneteidet";
"key_backup_setup_intro_info" = "Titkosított szobákban az üzenetek végponttól-végpontig vannak titkosítva. Csak te és a címzettek rendelkeznek a kulcsokkal az üzenetek visszafejtéséhez.\n\nMentsd el megfelelően a kulcsaidat, hogy ne veszítsd el őket."; "key_backup_setup_intro_info" = "Titkosított szobákban az üzenetek végponttól-végpontig vannak titkosítva. Csak te és a címzettek rendelkeznek a kulcsokkal az üzenetek visszafejtéséhez.\n\nMentsd el megfelelően a kulcsaidat, hogy ne veszítsd el őket.";
"key_backup_setup_intro_setup_action" = "Beállítás"; "key_backup_setup_intro_setup_action" = "Beállítás";
"key_backup_setup_passphrase_info" = "A kulcsaid titkosított másolatát elmentjük a szerverünkre. Védd a mentést jelmondattal.\n\nA maximális biztonság érdekében ez a jelmondat különbözzön a felhasználói fiókhoz használttól."; "key_backup_setup_passphrase_info" = "A kulcsaid titkosított másolatát elmentjük a szerverünkre. Védd a mentést jelmondattal.\n\nA maximális biztonság érdekében ez a jelmondat különbözzön a felhasználói Matrix fiókhoz használttól.";
"key_backup_setup_passphrase_passphrase_title" = "Bead"; "key_backup_setup_passphrase_passphrase_title" = "Bead";
"key_backup_setup_passphrase_passphrase_placeholder" = "Jelmondat bevitele"; "key_backup_setup_passphrase_passphrase_placeholder" = "Jelmondat bevitele";
"key_backup_setup_passphrase_passphrase_valid" = "Szuper!"; "key_backup_setup_passphrase_passphrase_valid" = "Szuper!";
@ -813,7 +813,7 @@
"room_event_action_reaction_history" = "Reakciók története"; "room_event_action_reaction_history" = "Reakciók története";
// MARK: Reaction history // MARK: Reaction history
"reaction_history_title" = "Reakciók"; "reaction_history_title" = "Reakciók";
"auth_forgot_password_error_no_configured_identity_server" = "Azonosítási szerver nincs beállítva: a jelszó visszaállításhoz adj hozzá egyet."; "auth_forgot_password_error_no_configured_identity_server" = "Azonosítási szerver nincs beállítva: a Matrix fiók jelszó visszaállításhoz adj hozzá egyet.";
"room_creation_error_invite_user_by_email_without_identity_server" = "Azonosítási szerver nincs beállítva, így e-mail cím alapján nem tudsz hozzáadni résztvevőt."; "room_creation_error_invite_user_by_email_without_identity_server" = "Azonosítási szerver nincs beállítva, így e-mail cím alapján nem tudsz hozzáadni résztvevőt.";
"room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Azonosítási szerver nincs beállítva, így e-mail cím alapján nem tudsz beszélgetést kezdeményezni."; "room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Azonosítási szerver nincs beállítva, így e-mail cím alapján nem tudsz beszélgetést kezdeményezni.";
"room_action_camera" = "Fotó vagy videó készítése"; "room_action_camera" = "Fotó vagy videó készítése";
@ -850,9 +850,9 @@
"auth_add_email_message_2" = "E-mail cím beállítása fiók visszaállításhoz és, hogy később az ismerősök megtalálhassanak."; "auth_add_email_message_2" = "E-mail cím beállítása fiók visszaállításhoz és, hogy később az ismerősök megtalálhassanak.";
"auth_add_phone_message_2" = "Telefonszám beállítása, hogy később az ismerősök megtalálhassanak."; "auth_add_phone_message_2" = "Telefonszám beállítása, hogy később az ismerősök megtalálhassanak.";
"auth_add_email_phone_message_2" = "E-mail cím beállítása fiók visszaállításhoz. Használj később e-mail címet vagy telefonszámot, hogy az ismerősök megtalálhassanak."; "auth_add_email_phone_message_2" = "E-mail cím beállítása fiók visszaállításhoz. Használj később e-mail címet vagy telefonszámot, hogy az ismerősök megtalálhassanak.";
"auth_email_is_required" = "Azonosítási szerver nincs beállítva, így nem tudsz hozzáadni e-mail címet amivel vissza lehetne állítani a jelszót a későbbiekben."; "auth_email_is_required" = "Azonosítási szerver nincs beállítva, így nem tudsz hozzáadni e-mail címet amivel vissza lehetne állítani a Matrix fiók jelszót a későbbiekben.";
"auth_phone_is_required" = "Azonosítási szerver nincs beállítva, így nem tudsz hozzáadni telefonszámot, hogy vissza lehetne állítani a jelszót a későbbiekben."; "auth_phone_is_required" = "Azonosítási szerver nincs beállítva, így nem tudsz hozzáadni telefonszámot, hogy vissza lehetne állítani a Matrix fiók jelszót a későbbiekben.";
"auth_reset_password_error_is_required" = "Azonosítási szerver nincs beállítva: adj hozzá egyet a szerver beállításoknál, hogy a jelszót vissza lehessen állítani."; "auth_reset_password_error_is_required" = "Azonosítási szerver nincs beállítva: adj hozzá egyet a szerver beállításoknál, hogy a Matrix fiók jelszót vissza lehessen állítani.";
"contacts_address_book_no_identity_server" = "Azonosítási szerver nincs beállítva"; "contacts_address_book_no_identity_server" = "Azonosítási szerver nincs beállítva";
"settings_discovery_settings" = "FELDERÍTÉS"; "settings_discovery_settings" = "FELDERÍTÉS";
"settings_identity_server_settings" = "AZONOSÍTÁSI SZERVER"; "settings_identity_server_settings" = "AZONOSÍTÁSI SZERVER";
@ -913,7 +913,7 @@
"service_terms_modal_message_identity_server" = "Az azonosítási szerver (%@) felhasználási feltételeit el kell fogadnod, hogy ismerősöket kereshess."; "service_terms_modal_message_identity_server" = "Az azonosítási szerver (%@) felhasználási feltételeit el kell fogadnod, hogy ismerősöket kereshess.";
"settings_add_3pid_password_title_email" = "E-mail cím hozzáadása"; "settings_add_3pid_password_title_email" = "E-mail cím hozzáadása";
"settings_add_3pid_password_title_msidsn" = "Telefonszám hozzáadása"; "settings_add_3pid_password_title_msidsn" = "Telefonszám hozzáadása";
"settings_add_3pid_password_message" = "A folytatáshoz add meg a jelszavadat"; "settings_add_3pid_password_message" = "A folytatáshoz add meg a Matrix fiók jelszavadat";
"settings_add_3pid_invalid_password_message" = "Érvénytelen jelszó"; "settings_add_3pid_invalid_password_message" = "Érvénytelen jelszó";
"error_not_supported_on_mobile" = "%@ mobilról ezt nem teheted meg."; "error_not_supported_on_mobile" = "%@ mobilról ezt nem teheted meg.";
"widget_menu_refresh" = "Frissítés"; "widget_menu_refresh" = "Frissítés";
@ -1119,7 +1119,7 @@
"security_settings_secure_backup_setup" = "Beállítás"; "security_settings_secure_backup_setup" = "Beállítás";
"security_settings_secure_backup_synchronise" = "Szinkronizál"; "security_settings_secure_backup_synchronise" = "Szinkronizál";
"security_settings_secure_backup_delete" = "Mentés törlése"; "security_settings_secure_backup_delete" = "Mentés törlése";
"security_settings_user_password_description" = "A fiók jelszó megadásával erősítsd meg a személyazonosságodat"; "security_settings_user_password_description" = "A Matrix fiók jelszó megadásával erősítsd meg a személyazonosságodat";
"secure_key_backup_setup_intro_title" = "Biztonsági Mentés"; "secure_key_backup_setup_intro_title" = "Biztonsági Mentés";
"secure_key_backup_setup_intro_info" = "A titkosított üzenetekhez és adatokhoz való hozzáférés elvesztése esetén használható biztonsági tartalék a titkosított kulcsok a szerveredre való elmentésével."; "secure_key_backup_setup_intro_info" = "A titkosított üzenetekhez és adatokhoz való hozzáférés elvesztése esetén használható biztonsági tartalék a titkosított kulcsok a szerveredre való elmentésével.";
"secure_key_backup_setup_intro_use_security_key_title" = "Használd a Biztonsági Kulcsot"; "secure_key_backup_setup_intro_use_security_key_title" = "Használd a Biztonsági Kulcsot";
@ -1139,14 +1139,14 @@
"secrets_setup_recovery_key_done_action" = "Kész"; "secrets_setup_recovery_key_done_action" = "Kész";
"secrets_setup_recovery_key_storage_alert_title" = "Tartsd biztonságban"; "secrets_setup_recovery_key_storage_alert_title" = "Tartsd biztonságban";
"secrets_setup_recovery_passphrase_title" = "Biztonsági Jelmondat beállítása"; "secrets_setup_recovery_passphrase_title" = "Biztonsági Jelmondat beállítása";
"secrets_setup_recovery_passphrase_additional_information" = "Ne a fiók jelszavadat használd."; "secrets_setup_recovery_passphrase_additional_information" = "Ne a Matrix fiók jelszavadat használd.";
"secrets_setup_recovery_passphrase_validate_action" = "Kész"; "secrets_setup_recovery_passphrase_validate_action" = "Kész";
"secrets_setup_recovery_passphrase_confirm_information" = "A megerősítéshez add meg újra a Biztonsági Jelmondatot."; "secrets_setup_recovery_passphrase_confirm_information" = "A megerősítéshez add meg újra a Biztonsági Jelmondatot.";
"secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Megerősítés"; "secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Megerősítés";
"secrets_setup_recovery_passphrase_confirm_passphrase_placeholder" = "Jelmondat megerősítése"; "secrets_setup_recovery_passphrase_confirm_passphrase_placeholder" = "Jelmondat megerősítése";
"cross_signing_setup_banner_title" = "Titkosítás beállítása"; "cross_signing_setup_banner_title" = "Titkosítás beállítása";
"cross_signing_setup_banner_subtitle" = "A többi eszközödet ellenőrizd egyszerűen"; "cross_signing_setup_banner_subtitle" = "A többi eszközödet ellenőrizd egyszerűen";
"security_settings_crypto_sessions_description_2" = "Ha ez a bejelentkezés nem ismerős, akkor változtasd meg a jelszavad és újra állítsd be a Biztonsági Mentést."; "security_settings_crypto_sessions_description_2" = "Ha ez a bejelentkezés nem ismerős, akkor változtasd meg a Matrix fiók jelszavad és újra állítsd be a Biztonsági Mentést.";
"security_settings_secure_backup_description" = "Mentsd el a titkosítási kulcsokat a fiókadatokkal arra az esetre ha elvesztenéd a hozzáférést a munkameneteidhez. A kulcsok egy egyedi Biztonsági Kulccsal lesznek védve."; "security_settings_secure_backup_description" = "Mentsd el a titkosítási kulcsokat a fiókadatokkal arra az esetre ha elvesztenéd a hozzáférést a munkameneteidhez. A kulcsok egy egyedi Biztonsági Kulccsal lesznek védve.";
// AuthenticatedSessionViewControllerFactory // AuthenticatedSessionViewControllerFactory
"authenticated_session_flow_not_supported" = "Ez az alkalmazás nem támogatja a matrix szervered azonosítási mechanizmusát."; "authenticated_session_flow_not_supported" = "Ez az alkalmazás nem támogatja a matrix szervered azonosítási mechanizmusát.";
@ -1244,7 +1244,7 @@
"room_info_list_one_member" = "1 tag"; "room_info_list_one_member" = "1 tag";
"room_info_list_several_members" = "%@ tag"; "room_info_list_several_members" = "%@ tag";
"room_info_list_section_other" = "Más"; "room_info_list_section_other" = "Más";
"secrets_reset_authentication_message" = "A fiók jelszavaddal erősítsd meg"; "secrets_reset_authentication_message" = "A Matrix fiók jelszavaddal erősítsd meg";
"secrets_reset_reset_action" = "Visszaállít"; "secrets_reset_reset_action" = "Visszaállít";
"secrets_reset_warning_message" = "Tiszta lappal indulsz, üzenetek, megbízható eszközök és felhasználók nélkül."; "secrets_reset_warning_message" = "Tiszta lappal indulsz, üzenetek, megbízható eszközök és felhasználók nélkül.";
"secrets_reset_warning_title" = "Ha mindent visszaállítasz"; "secrets_reset_warning_title" = "Ha mindent visszaállítasz";
@ -1626,3 +1626,35 @@
"poll_edit_form_update_failure_subtitle" = "Kérlek próbáld újra"; "poll_edit_form_update_failure_subtitle" = "Kérlek próbáld újra";
"poll_edit_form_update_failure_title" = "A szavazást nem sikerült frissíteni"; "poll_edit_form_update_failure_title" = "A szavazást nem sikerült frissíteni";
"poll_edit_form_poll_type" = "Szavazás típusa"; "poll_edit_form_poll_type" = "Szavazás típusa";
"location_sharing_post_failure_subtitle" = "%@ a helyadatodat nem lehet elküldeni. Próbáld újra később.";
"location_sharing_post_failure_title" = "A földrajzi helyzetét nem lehet elküldeni";
"home_context_menu_leave" = "Elhagyás";
"home_context_menu_normal_priority" = "Normál prioritás";
"home_context_menu_low_priority" = "Alacsony prioritás";
"home_context_menu_unfavourite" = "Törlés a kedvencekből";
"home_context_menu_favourite" = "Kedvencek";
"home_context_menu_unmute" = "Némítás kikapcsolása";
"home_context_menu_mute" = "Némítás";
"home_context_menu_notifications" = "Értesítések";
"home_context_menu_make_room" = "Szobák közé mozgatás";
"home_context_menu_make_dm" = "Közvetlen beszélgetések közé helyezés";
"event_formatter_message_deleted" = "Üzenet törölve";
"settings_labs_enable_threads" = "Üzenetszálas beszélgetés";
"message_from_a_thread" = "Az üzenetszálból";
"threads_empty_show_all_threads" = "Minden üzenetszál megjelenítése";
"threads_empty_tip" = "Tipp: Koppints az üzenetre és használd az „Üzenetszál”-at új indításhoz.";
"threads_empty_info_my" = "Válaszolj egy már meglévő üzenetszálba vagy koppints az üzenetre és használd az „Üzenetszál”-at új indításhoz.";
"threads_empty_info_all" = "Az üzenetszálak segítenek a különböző témájú beszélgetések figyelemmel kísérésében.";
"threads_empty_title" = "Beszélgetések üzenetszálakba rendezése";
"threads_action_my_threads" = "Üzenetszálaim";
"threads_action_all_threads" = "Minden üzenetszál";
"threads_title" = "Üzenetszálak";
"thread_copy_link_to_thread" = "Üzenetszálra mutató hivatkozás másolása";
// MARK: Threads
"room_thread_title" = "Üzenetszál";
"room_accessibility_thread_more" = "Több";
"room_accessibility_threads" = "Üzenetszálak";
"room_event_copy_link_info" = "Hivatkozás a vágólapra másolva.";
"room_event_action_reply_in_thread" = "Üzenetszál";
"room_event_action_view_in_room" = "Megjelenítés szobában";

View file

@ -3,7 +3,7 @@
"auth_invalid_login_param" = "Nama pengguna dan/atau kata sandi tidak benar"; "auth_invalid_login_param" = "Nama pengguna dan/atau kata sandi tidak benar";
"auth_identity_server_placeholder" = "URL (contoh https://vector.im)"; "auth_identity_server_placeholder" = "URL (contoh https://vector.im)";
"auth_home_server_placeholder" = "URL (contoh https://matrix.org)"; "auth_home_server_placeholder" = "URL (contoh https://matrix.org)";
"auth_repeat_new_password_placeholder" = "Konfirmasi kata sandi baru Anda"; "auth_repeat_new_password_placeholder" = "Konfirmasi kata sandi akun Matrix baru Anda";
"auth_repeat_password_placeholder" = "Ulangi kata sandi"; "auth_repeat_password_placeholder" = "Ulangi kata sandi";
"auth_phone_placeholder" = "Nomor telepon"; "auth_phone_placeholder" = "Nomor telepon";
"auth_optional_phone_placeholder" = "Nomor telepon (opsional)"; "auth_optional_phone_placeholder" = "Nomor telepon (opsional)";
@ -73,13 +73,13 @@
"auth_email_validation_message" = "Silakan periksa surel Anda untuk melanjutkan pendaftaran"; "auth_email_validation_message" = "Silakan periksa surel Anda untuk melanjutkan pendaftaran";
"auth_use_server_options" = "Gunakan opsi server khusus (lanjutan)"; "auth_use_server_options" = "Gunakan opsi server khusus (lanjutan)";
"auth_email_not_found" = "Gagal mengirim surel: Alamat email ini tidak ditemukan"; "auth_email_not_found" = "Gagal mengirim surel: Alamat email ini tidak ditemukan";
"auth_forgot_password_error_no_configured_identity_server" = "Tidak ada server identitas yang dikonfigurasikan: tambahkan satu untuk mengatur ulang kata sandi Anda."; "auth_forgot_password_error_no_configured_identity_server" = "Tidak ada server identitas yang dikonfigurasikan: tambahkan satu untuk mengatur ulang kata sandi akun Matrix Anda.";
"auth_forgot_password" = "Lupa kata sandi?"; "auth_forgot_password" = "Lupa kata sandi akun Matrix?";
"auth_username_in_use" = "Nama pengguna telah dipakai"; "auth_username_in_use" = "Nama pengguna telah dipakai";
"auth_password_dont_match" = "Kata sandi tidak cocok"; "auth_password_dont_match" = "Kata sandi tidak cocok";
"auth_untrusted_id_server" = "Server identitas tidak dipercaya"; "auth_untrusted_id_server" = "Server identitas tidak dipercaya";
"auth_phone_is_required" = "Tidak ada server identitas yang dikonfigurasi sehingga Anda tidak dapat menambahkan nomor telepon untuk mengatur ulang kata sandi Anda di masa depan."; "auth_phone_is_required" = "Tidak ada server identitas yang dikonfigurasi sehingga Anda tidak dapat menambahkan nomor telepon untuk mengatur ulang kata sandi akun Matrix Anda di masa depan.";
"auth_email_is_required" = "Tidak ada server identitas yang dikonfigurasi sehingga Anda tidak dapat menambahkan alamat email untuk mengatur ulang kata sandi Anda di masa depan."; "auth_email_is_required" = "Tidak ada server identitas yang dikonfigurasi sehingga Anda tidak dapat menambahkan alamat email untuk mengatur ulang kata sandi akun Matrix Anda di masa depan.";
"auth_phone_in_use" = "Nomor telepon ini sudah dipakai"; "auth_phone_in_use" = "Nomor telepon ini sudah dipakai";
"auth_email_in_use" = "Surel ini sudah dipakai"; "auth_email_in_use" = "Surel ini sudah dipakai";
"auth_missing_email_or_phone" = "Tidak ada surel atau nomor telepon"; "auth_missing_email_or_phone" = "Tidak ada surel atau nomor telepon";
@ -133,7 +133,7 @@
"settings_integrations_allow_button" = "Kelola integrasi"; "settings_integrations_allow_button" = "Kelola integrasi";
"settings_enable_callkit" = "Panggilan yang diintegrasi"; "settings_enable_callkit" = "Panggilan yang diintegrasi";
"settings_night_mode" = "Mode Malam"; "settings_night_mode" = "Mode Malam";
"settings_change_password" = "Ubah kata sandi"; "settings_change_password" = "Ubah kata sandi akun Matrix";
"settings_first_name" = "Nama Depan"; "settings_first_name" = "Nama Depan";
"settings_display_name" = "Nama Tampilan"; "settings_display_name" = "Nama Tampilan";
"settings_profile_picture" = "Gambar Profil"; "settings_profile_picture" = "Gambar Profil";
@ -498,7 +498,7 @@
"room_event_action_delete" = "Hapus"; "room_event_action_delete" = "Hapus";
"room_event_action_resend" = "Kirim Ulang"; "room_event_action_resend" = "Kirim Ulang";
"room_event_action_save" = "Simpan"; "room_event_action_save" = "Simpan";
"room_event_action_permalink" = "Tautan"; "room_event_action_permalink" = "Salin tautan ke pesan";
"room_event_action_share" = "Bagikan"; "room_event_action_share" = "Bagikan";
"room_event_action_more" = "Lainnya"; "room_event_action_more" = "Lainnya";
"room_event_action_redact" = "Hapus"; "room_event_action_redact" = "Hapus";
@ -522,8 +522,8 @@
"room_participants_now" = "sekarang"; "room_participants_now" = "sekarang";
"room_participants_idle" = "Idle"; "room_participants_idle" = "Idle";
"room_participants_unknown" = "Tidak diketahui"; "room_participants_unknown" = "Tidak diketahui";
"room_participants_offline" = "Offline"; "room_participants_offline" = "Luring";
"room_participants_online" = "Online"; "room_participants_online" = "Daring";
"room_participants_invited_section" = "DIUNDANG"; "room_participants_invited_section" = "DIUNDANG";
"room_participants_invite_prompt_title" = "Konfirmasi"; "room_participants_invite_prompt_title" = "Konfirmasi";
"room_participants_remove_prompt_title" = "Konfirmasi"; "room_participants_remove_prompt_title" = "Konfirmasi";
@ -595,14 +595,14 @@
"room_creation_account" = "Akun"; "room_creation_account" = "Akun";
"social_login_list_title_sign_up" = "Atau"; "social_login_list_title_sign_up" = "Atau";
"social_login_list_title_sign_in" = "Atau"; "social_login_list_title_sign_in" = "Atau";
"auth_reset_password_error_is_required" = "Tidak ada server identitas yang diatur: tambahkan di pengaturan server untuk mengatur ulang kata sandi Anda."; "auth_reset_password_error_is_required" = "Tidak ada server identitas yang diatur: tambahkan di pengaturan server untuk mengatur ulang kata sandi akun Matrix Anda.";
"auth_reset_password_error_not_found" = "Alamat email Anda terlihat tidak diasosiasikan dengan sebuah ID Matrix di homeserver ini."; "auth_reset_password_error_not_found" = "Alamat email Anda terlihat tidak diasosiasikan dengan sebuah ID Matrix di homeserver ini.";
"auth_reset_password_error_unauthorized" = "Gagal untuk memverifikasi alamat email: pastikan Anda membuka tautan yang ada di email"; "auth_reset_password_error_unauthorized" = "Gagal untuk memverifikasi alamat email: pastikan Anda membuka tautan yang ada di email";
"auth_reset_password_next_step_button" = "Saya telah memverifikasi alamat email saya"; "auth_reset_password_next_step_button" = "Saya telah memverifikasi alamat email saya";
"auth_reset_password_email_validation_message" = "Sebuah email telah dikirim ke %@. Setelah Anda membuka tautan yang ada, klik di bawah."; "auth_reset_password_email_validation_message" = "Sebuah email telah dikirim ke %@. Setelah Anda membuka tautan yang ada, klik di bawah.";
"auth_reset_password_missing_password" = "Sebuah kata sandi baru harus dimasukkan."; "auth_reset_password_missing_password" = "Sebuah kata sandi baru harus dimasukkan.";
"auth_reset_password_missing_email" = "Alamat email yang tertaut dengan akun Anda harus dimasukkan."; "auth_reset_password_missing_email" = "Alamat email yang tertaut dengan akun Anda harus dimasukkan.";
"auth_reset_password_message" = "Untuk mengatur ulang kata sandi Anda, masukkan alamat email yang tertaut ke akun Anda:"; "auth_reset_password_message" = "Untuk mengatur ulang kata sandi akun Matrix Anda, masukkan alamat email yang tertaut ke akun Anda:";
"auth_recaptcha_message" = "Homeserver ini ingin memastikan bahwa Anda bukan sebuah robot"; "auth_recaptcha_message" = "Homeserver ini ingin memastikan bahwa Anda bukan sebuah robot";
"auth_msisdn_validation_error" = "Tidak dapat memverifikasi nomor telepon."; "auth_msisdn_validation_error" = "Tidak dapat memverifikasi nomor telepon.";
"auth_msisdn_validation_message" = "Kami telah mengirim sebuah SMS dengan kode aktivasi. Silakan masukkan kodenya di bawah."; "auth_msisdn_validation_message" = "Kami telah mengirim sebuah SMS dengan kode aktivasi. Silakan masukkan kodenya di bawah.";
@ -667,7 +667,7 @@
// GDPR // GDPR
"gdpr_consent_not_given_alert_message" = "Untuk terus menggunakan homeserver %@, Anda harus menyetujui syarat dan ketentuannya."; "gdpr_consent_not_given_alert_message" = "Untuk terus menggunakan homeserver %@, Anda harus menyetujui syarat dan ketentuannya.";
"share_extension_failed_to_encrypt" = "Gagal untuk mengirim. Periksa di aplikasi utama pengaturan enkripsi untuk ruangan ini"; "share_extension_failed_to_encrypt" = "Gagal untuk mengirim. Periksa di aplikasi utama pengaturan enkripsi untuk ruangan ini";
"bug_report_logs_description" = "Untuk mendiagnosis masalah, log dari klien ini akan dikirim dengan laporan bug ini. Jika Anda lebih memilih untuk hanya mengirim teks di atas, harap hapus centang:"; "bug_report_logs_description" = "Untuk mendiagnosis masalah, catat dari klien ini akan dikirim dengan laporan kutu ini. Jika Anda lebih memilih untuk hanya mengirim teks di atas, harap hapus centang:";
"bug_report_description" = "Harap jelaskan bugnya. Apa yang Anda lakukan? Apa yang Anda harapkan terjadi? Apa yang sebenarnya terjadi?"; "bug_report_description" = "Harap jelaskan bugnya. Apa yang Anda lakukan? Apa yang Anda harapkan terjadi? Apa yang sebenarnya terjadi?";
"e2e_key_backup_wrong_version" = "Cadangan kunci pesan aman baru telah terdeteksi.\n\nJika ini bukan Anda, atur Frasa Keamanan baru di Pengaturan."; "e2e_key_backup_wrong_version" = "Cadangan kunci pesan aman baru telah terdeteksi.\n\nJika ini bukan Anda, atur Frasa Keamanan baru di Pengaturan.";
@ -680,7 +680,7 @@
"call_no_stun_server_error_message_1" = "Mohon hubungi administrator homeserver %@ Anda untuk mengatur sebuah server TURN supaya panggilan dapat bekerja dengan handal."; "call_no_stun_server_error_message_1" = "Mohon hubungi administrator homeserver %@ Anda untuk mengatur sebuah server TURN supaya panggilan dapat bekerja dengan handal.";
"rage_shake_prompt" = "Anda tampaknya menggoyangkan telepon dengan frustrasi. Apakah Anda ingin mengirimkan laporan bug?"; "rage_shake_prompt" = "Anda tampaknya menggoyangkan telepon dengan frustrasi. Apakah Anda ingin mengirimkan laporan bug?";
"bug_report_prompt" = "Aplikasi telah crash terakhir kali. Apakah Anda ingin mengirimkan laporan crash?"; "bug_report_prompt" = "Aplikasi telah crash terakhir kali. Apakah Anda ingin mengirimkan laporan crash?";
"room_notifs_settings_encrypted_room_notice" = "Harap dicatat bahwa notifikasi sebutan & keyword tidak tersedia di ruang terenkripsi di ponsel."; "room_notifs_settings_encrypted_room_notice" = "Harap dicatat bahwa notifikasi sebutan & kata kunci tidak tersedia di ruang terenkripsi di ponsel.";
"room_details_addresses_disable_main_address_prompt_msg" = "Anda tidak akan memiliki alamat utama yang ditentukan. Alamat utama default untuk ruangan ini akan dipilih secara acak"; "room_details_addresses_disable_main_address_prompt_msg" = "Anda tidak akan memiliki alamat utama yang ditentukan. Alamat utama default untuk ruangan ini akan dipilih secara acak";
"room_details_history_section_prompt_msg" = "Perubahan siapa yang dapat membaca riwayat hanya akan berlaku untuk pesan berikutnya di ruang ini. Visibilitas riwayat yang ada tidak akan berubah."; "room_details_history_section_prompt_msg" = "Perubahan siapa yang dapat membaca riwayat hanya akan berlaku untuk pesan berikutnya di ruang ini. Visibilitas riwayat yang ada tidak akan berubah.";
"identity_server_settings_alert_error_terms_not_accepted" = "Anda harus menerima syaratnya %@ untuk menyetelnya sebagai server identitas."; "identity_server_settings_alert_error_terms_not_accepted" = "Anda harus menerima syaratnya %@ untuk menyetelnya sebagai server identitas.";
@ -696,7 +696,7 @@
"security_settings_blacklist_unverified_devices_description" = "Verifikasi semua sesi pengguna untuk menandainya sebagai terpercaya dan kirim pesan ke mereka."; "security_settings_blacklist_unverified_devices_description" = "Verifikasi semua sesi pengguna untuk menandainya sebagai terpercaya dan kirim pesan ke mereka.";
"security_settings_crosssigning_info_exists" = "Akun Anda memiliki identitas penandatanganan silang, tetapi belum dipercayai oleh sesi ini. Selesaikan keamanan sesi ini."; "security_settings_crosssigning_info_exists" = "Akun Anda memiliki identitas penandatanganan silang, tetapi belum dipercayai oleh sesi ini. Selesaikan keamanan sesi ini.";
"security_settings_secure_backup_description" = "Cadangkan kunci enkripsi Anda dengan data akun Anda untuk berjaga-jaga jika Anda kehilangan akses ke sesi Anda. Kunci Anda akan diamankan dengan Kunci Keamanan yang unik."; "security_settings_secure_backup_description" = "Cadangkan kunci enkripsi Anda dengan data akun Anda untuk berjaga-jaga jika Anda kehilangan akses ke sesi Anda. Kunci Anda akan diamankan dengan Kunci Keamanan yang unik.";
"security_settings_crypto_sessions_description_2" = "Jika Anda tidak tahu sebuah login, ubah kata sandi Anda dan atur ulang Cadangan Aman."; "security_settings_crypto_sessions_description_2" = "Jika Anda tidak tahu sebuah login, ubah kata sandi akun Matrix Anda dan atur ulang Cadangan Aman.";
"settings_identity_server_no_is_description" = "Anda saat ini tidak menggunakan sebuah server identitas. Untuk menemukan dan dapat ditemukan oleh kontak yang Anda tahu, tambahkan satu di atas."; "settings_identity_server_no_is_description" = "Anda saat ini tidak menggunakan sebuah server identitas. Untuk menemukan dan dapat ditemukan oleh kontak yang Anda tahu, tambahkan satu di atas.";
"settings_identity_server_description" = "Dengan menggunakan set server identitas di atas, Anda dapat menemukan dan dapat ditemukan oleh kontak yang ada yang Anda kenal."; "settings_identity_server_description" = "Dengan menggunakan set server identitas di atas, Anda dapat menemukan dan dapat ditemukan oleh kontak yang ada yang Anda kenal.";
"settings_discovery_three_pid_details_information_phone_number" = "Kelola preferensi untuk nomor telepon ini, yang dapat digunakan pengguna lain untuk menemukan Anda dan digunakan untuk mengundang Anda ke ruangan. Tambahkan atau hapus nomor telepon di Akun."; "settings_discovery_three_pid_details_information_phone_number" = "Kelola preferensi untuk nomor telepon ini, yang dapat digunakan pengguna lain untuk menemukan Anda dan digunakan untuk mengundang Anda ke ruangan. Tambahkan atau hapus nomor telepon di Akun.";
@ -823,7 +823,7 @@
"room_details_access_section_anyone_apart_from_guest_for_dm" = "Siapa saja yang tahu linknya, selain dari tamu"; "room_details_access_section_anyone_apart_from_guest_for_dm" = "Siapa saja yang tahu linknya, selain dari tamu";
"identity_server_settings_alert_error_invalid_identity_server" = "%@ bukan server identitas yang valid."; "identity_server_settings_alert_error_invalid_identity_server" = "%@ bukan server identitas yang valid.";
"identity_server_settings_alert_no_terms_title" = "Server identitas tidak mempunyai kebijakan layanan"; "identity_server_settings_alert_no_terms_title" = "Server identitas tidak mempunyai kebijakan layanan";
"security_settings_user_password_description" = "Konfirmasi identitas Anda dengan memasukkan kata sandi akun Anda"; "security_settings_user_password_description" = "Konfirmasi identitas Anda dengan memasukkan kata sandi akun Matrix Anda";
"security_settings_secure_backup_info_valid" = "Sesi ini mencadangkan kunci Anda."; "security_settings_secure_backup_info_valid" = "Sesi ini mencadangkan kunci Anda.";
"version_check_modal_title_deprecated" = "Kami tidak mendukung iOS %@ lagi"; "version_check_modal_title_deprecated" = "Kami tidak mendukung iOS %@ lagi";
"version_check_modal_title_supported" = "Kami mengakhiri dukungan untuk iOS %@"; "version_check_modal_title_supported" = "Kami mengakhiri dukungan untuk iOS %@";
@ -838,7 +838,7 @@
"voice_message_release_to_send" = "Tahan untuk merekam, lepaskan untuk mengirim"; "voice_message_release_to_send" = "Tahan untuk merekam, lepaskan untuk mengirim";
"spaces_empty_space_title" = "Space ini belum ada ruangan"; "spaces_empty_space_title" = "Space ini belum ada ruangan";
"create_room_show_in_directory" = "Tampilkan ruangan di direktori"; "create_room_show_in_directory" = "Tampilkan ruangan di direktori";
"secrets_reset_authentication_message" = "Masukkan kata sandi akun Anda untuk mengkonfirmasi"; "secrets_reset_authentication_message" = "Masukkan kata sandi akun Matrix Anda untuk mengkonfirmasi";
"secrets_recovery_with_key_information_unlock_secure_backup_with_key" = "Masukkan Kunci Keamanan Anda untuk melanjutkan."; "secrets_recovery_with_key_information_unlock_secure_backup_with_key" = "Masukkan Kunci Keamanan Anda untuk melanjutkan.";
"secrets_recovery_with_key_information_unlock_secure_backup_with_phrase" = "Masukkan Frasa Keamanan Anda untuk melanjutkan."; "secrets_recovery_with_key_information_unlock_secure_backup_with_phrase" = "Masukkan Frasa Keamanan Anda untuk melanjutkan.";
@ -988,7 +988,7 @@
"settings_key_backup_info_progress_done" = "Semua kunci telah dicadangkan"; "settings_key_backup_info_progress_done" = "Semua kunci telah dicadangkan";
"settings_key_backup_info_progress" = "Mencadangkan %@ kunci…"; "settings_key_backup_info_progress" = "Mencadangkan %@ kunci…";
"settings_key_backup_info_version" = "Versi Cadangan Kunci: %@"; "settings_key_backup_info_version" = "Versi Cadangan Kunci: %@";
"settings_fail_to_update_password" = "Gagal untuk memperbarui kata sandi"; "settings_fail_to_update_password" = "Gagal untuk memperbarui kata sandi akun Matrix";
"settings_labs_enable_ringing_for_group_calls" = "Dering untuk panggilan grup"; "settings_labs_enable_ringing_for_group_calls" = "Dering untuk panggilan grup";
"settings_enable_push_notif" = "Notifikasi di perangkat ini"; "settings_enable_push_notif" = "Notifikasi di perangkat ini";
"settings_fail_to_update_profile" = "Gagal untuk memperbarui profil"; "settings_fail_to_update_profile" = "Gagal untuk memperbarui profil";
@ -1418,7 +1418,7 @@
// Bug report // Bug report
"bug_report_title" = "Laporan Bug"; "bug_report_title" = "Laporan Bug";
"deactivate_account_password_alert_message" = "Untuk melanjutkan, mohon masukkan kata sandi Anda"; "deactivate_account_password_alert_message" = "Untuk melanjutkan, mohon masukkan kata sandi akun Matrix Anda";
"widget_integration_must_be_in_room" = "Anda tidak berada di ruangan ini."; "widget_integration_must_be_in_room" = "Anda tidak berada di ruangan ini.";
"settings_devices_description" = "Nama publik sesi dapat dilihat oleh orang yang berkomunikasi dengan Anda"; "settings_devices_description" = "Nama publik sesi dapat dilihat oleh orang yang berkomunikasi dengan Anda";
"settings_key_backup_delete_confirmation_prompt_msg" = "Apakah Anda yakin? Anda akan kehilangan pesan terenkripsi jika kunci Anda tidak dicadangkan secara benar."; "settings_key_backup_delete_confirmation_prompt_msg" = "Apakah Anda yakin? Anda akan kehilangan pesan terenkripsi jika kunci Anda tidak dicadangkan secara benar.";
@ -1438,7 +1438,7 @@
"settings_ui_theme_picker_message_invert_colours" = "\"Otomatis\" menggunakan pengaturan \"Balikkan Warna\" perangkat Anda"; "settings_ui_theme_picker_message_invert_colours" = "\"Otomatis\" menggunakan pengaturan \"Balikkan Warna\" perangkat Anda";
"settings_ui_theme_picker_message_match_system_theme" = "\"Otomatis\" mencocokkan dengan tema sistem perangkat Anda"; "settings_ui_theme_picker_message_match_system_theme" = "\"Otomatis\" mencocokkan dengan tema sistem perangkat Anda";
"settings_calls_stun_server_fallback_description" = "Izinkan server panggilan %@ cadangan saat server homeserver Anda tidak menawarkannya (alamat IP Anda akan dibagikan selama panggilan)."; "settings_calls_stun_server_fallback_description" = "Izinkan server panggilan %@ cadangan saat server homeserver Anda tidak menawarkannya (alamat IP Anda akan dibagikan selama panggilan).";
"settings_mentions_and_keywords_encryption_notice" = "Anda tidak akan dapat notifikasi untuk sebutan & keyword di ruangan terenkripsi di ponsel."; "settings_mentions_and_keywords_encryption_notice" = "Anda tidak akan dapat notifikasi untuk sebutan & kata kunci di ruangan terenkripsi di ponsel.";
"settings_notifications_disabled_alert_message" = "Untuk mengaktifkan notifikasi, pergi ke pengaturan perangkat Anda."; "settings_notifications_disabled_alert_message" = "Untuk mengaktifkan notifikasi, pergi ke pengaturan perangkat Anda.";
"settings_global_settings_info" = "Pengaturan notifikasi global tersedia di klien web %@ Anda"; "settings_global_settings_info" = "Pengaturan notifikasi global tersedia di klien web %@ Anda";
"settings_confirm_media_size_description" = "Saat ini aktif, Anda akan diminta untuk mengkonfirmasi ukuran gambar dan video yang akan dikirim."; "settings_confirm_media_size_description" = "Saat ini aktif, Anda akan diminta untuk mengkonfirmasi ukuran gambar dan video yang akan dikirim.";
@ -1523,7 +1523,7 @@
"security_settings_crosssigning_info_not_bootstrapped" = "Penandatanganan silang belum disiapkan."; "security_settings_crosssigning_info_not_bootstrapped" = "Penandatanganan silang belum disiapkan.";
"settings_key_backup_button_connect" = "Hubungkan sesi ini ke Cadangan Kunci"; "settings_key_backup_button_connect" = "Hubungkan sesi ini ke Cadangan Kunci";
"settings_key_backup_info_trust_signature_valid_device_unverified" = "Cadangan memiliki tanda tangan dari %@"; "settings_key_backup_info_trust_signature_valid_device_unverified" = "Cadangan memiliki tanda tangan dari %@";
"settings_add_3pid_password_message" = "Untuk melanjutkan, mohon masukkan kata sandi Anda"; "settings_add_3pid_password_message" = "Untuk melanjutkan, mohon masukkan kata sandi akun Matrix Anda";
"settings_send_crash_report" = "Kirim crash & data penggunaan anonim"; "settings_send_crash_report" = "Kirim crash & data penggunaan anonim";
"secure_key_backup_setup_cancel_alert_message" = "Jika Anda membatalkan sekarang, Anda mungkin kehilangan pesan & data terenkripsi jika Anda kehilangan akses ke login Anda.\n\nAnda juga dapat mengatur Cadangan Aman & kelola kunci Anda di Pengaturan."; "secure_key_backup_setup_cancel_alert_message" = "Jika Anda membatalkan sekarang, Anda mungkin kehilangan pesan & data terenkripsi jika Anda kehilangan akses ke login Anda.\n\nAnda juga dapat mengatur Cadangan Aman & kelola kunci Anda di Pengaturan.";
"room_participants_security_information_room_encrypted" = "Pesan di ruangan ini dienkripsi secara ujung-ke-ujung.\n\nPesan Anda diamankan dengan kunci dan hanya Anda dan penerima punya kunci uniknya untuk membukanya."; "room_participants_security_information_room_encrypted" = "Pesan di ruangan ini dienkripsi secara ujung-ke-ujung.\n\nPesan Anda diamankan dengan kunci dan hanya Anda dan penerima punya kunci uniknya untuk membukanya.";
@ -1539,7 +1539,7 @@
// Success from passphrase // Success from passphrase
"key_backup_setup_success_from_passphrase_info" = "Kunci Anda sedang dicadangkan.\n\nKunci Keamanan Anda adalah jaring pengaman — Anda dapat menggunakannya untuk memulihkan akses ke pesan terenkripsi jika Anda lupa frasa sandi.\n\nSimpan Kunci Keamanan Anda di suatu tempat yang sangat aman, seperti pengelola kata sandi (atau brankas)."; "key_backup_setup_success_from_passphrase_info" = "Kunci Anda sedang dicadangkan.\n\nKunci Keamanan Anda adalah jaring pengaman — Anda dapat menggunakannya untuk memulihkan akses ke pesan terenkripsi jika Anda lupa frasa sandi.\n\nSimpan Kunci Keamanan Anda di suatu tempat yang sangat aman, seperti pengelola kata sandi (atau brankas).";
"key_backup_setup_passphrase_info" = "Kami akan menyimpan salinan terenkripsi dari kunci Anda di server kami. Lindungi cadangan Anda dengan frasa agar tetap aman.\n\nUntuk keamanan maksimum, ini harus berbeda dari kata sandi akun Anda."; "key_backup_setup_passphrase_info" = "Kami akan menyimpan salinan terenkripsi dari kunci Anda di server kami. Lindungi cadangan Anda dengan frasa agar tetap aman.\n\nUntuk keamanan maksimum, ini harus berbeda dari kata sandi akun Matrix Anda.";
"key_backup_setup_intro_info" = "Pesan di ruang terenkripsi diamankan dengan enkripsi ujung-ke-ujung. Hanya Anda dan penerima yang memiliki kunci untuk membaca pesan ini.\n\nCadangkan kunci Anda dengan aman untuk menghindari kehilangannya."; "key_backup_setup_intro_info" = "Pesan di ruang terenkripsi diamankan dengan enkripsi ujung-ke-ujung. Hanya Anda dan penerima yang memiliki kunci untuk membaca pesan ini.\n\nCadangkan kunci Anda dengan aman untuk menghindari kehilangannya.";
"deactivate_account_informations_part5" = "Jika Anda ingin kami melupakan pesan Anda, silakan centang kotak di bawah ini\n\nVisibilitas pesan di Matrix mirip dengan email. Kami melupakan pesan Anda berarti bahwa pesan yang telah Anda kirim tidak akan dibagikan dengan pengguna baru atau tidak terdaftar, tetapi pengguna terdaftar yang sudah memiliki akses ke pesan ini akan tetap memiliki akses ke salinannya."; "deactivate_account_informations_part5" = "Jika Anda ingin kami melupakan pesan Anda, silakan centang kotak di bawah ini\n\nVisibilitas pesan di Matrix mirip dengan email. Kami melupakan pesan Anda berarti bahwa pesan yang telah Anda kirim tidak akan dibagikan dengan pengguna baru atau tidak terdaftar, tetapi pengguna terdaftar yang sudah memiliki akses ke pesan ini akan tetap memiliki akses ke salinannya.";
"deactivate_account_informations_part1" = "Ini akan membuat akun Anda tidak dapat digunakan secara permanen. Anda tidak akan dapat masuk, dan tidak seorang pun dapat mendaftarkan ulang ID pengguna yang sama. Ini akan menyebabkan akun Anda meninggalkan semua ruangan yang diikutinya, dan akan menghapus detail akun Anda dari server identitas Anda. "; "deactivate_account_informations_part1" = "Ini akan membuat akun Anda tidak dapat digunakan secara permanen. Anda tidak akan dapat masuk, dan tidak seorang pun dapat mendaftarkan ulang ID pengguna yang sama. Ini akan menyebabkan akun Anda meninggalkan semua ruangan yang diikutinya, dan akan menghapus detail akun Anda dari server identitas Anda. ";
@ -1552,7 +1552,7 @@
"unknown_devices_alert" = "Ruangan ini berisi sesi tidak dikenal yang belum diverifikasi.\nIni berarti tidak ada jaminan bahwa sesi tersebut adalah milik pengguna yang mereka klaim.\nKami menyarankan Anda memverifikasinya untuk setiap sesi sebelum melanjutkan, tetapi Anda dapat mengirim ulang pesan tanpa memverifikasi jika Anda mau."; "unknown_devices_alert" = "Ruangan ini berisi sesi tidak dikenal yang belum diverifikasi.\nIni berarti tidak ada jaminan bahwa sesi tersebut adalah milik pengguna yang mereka klaim.\nKami menyarankan Anda memverifikasinya untuk setiap sesi sebelum melanjutkan, tetapi Anda dapat mengirim ulang pesan tanpa memverifikasi jika Anda mau.";
"room_warning_about_encryption" = "Enkripsi ujung-ke-ujung masih dalam beta dan mungkin tidak dapat dihandalkan.\n\nAnda seharusnya tidak mempercayainya dulu untuk mengamankan data.\n\nPerangkat masih belum dapat mendekripsi riwayat sebelum mereka bergabung ke ruangannya.\n\nPesan terenkripsi masih belum terlihat di client yang belum mengimplementasikan enkripsi."; "room_warning_about_encryption" = "Enkripsi ujung-ke-ujung masih dalam beta dan mungkin tidak dapat dihandalkan.\n\nAnda seharusnya tidak mempercayainya dulu untuk mengamankan data.\n\nPerangkat masih belum dapat mendekripsi riwayat sebelum mereka bergabung ke ruangannya.\n\nPesan terenkripsi masih belum terlihat di client yang belum mengimplementasikan enkripsi.";
"auth_add_email_and_phone_warning" = "Pendaftaran dengan email dan nomor telepon sekaligus belum didukung sampai API-nya sudah ada. Hanya nomor telepon yang akan diperhitungkan. Anda dapat menambahkan email Anda di profil Anda di pengaturan."; "auth_add_email_and_phone_warning" = "Pendaftaran dengan email dan nomor telepon sekaligus belum didukung sampai API-nya sudah ada. Hanya nomor telepon yang akan diperhitungkan. Anda dapat menambahkan email Anda di profil Anda di pengaturan.";
"auth_reset_password_success_message" = "Kata sandi Anda telah diatur ulang.\n\nAnda telah dikeluarkan dari semua sesi dan tidak akan menerima lagi notifikasi push. Untuk mengaktifkan ulang notifikasi, masuk ulang di setiap perangkat."; "auth_reset_password_success_message" = "Kata sandi akun Matrix Anda telah diatur ulang.\n\nAnda telah dikeluarkan dari semua sesi dan tidak akan menerima lagi notifikasi push. Untuk mengaktifkan ulang notifikasi, masuk ulang di setiap perangkat.";
"spaces_add_rooms_coming_soon_title" = "Penambahan ruangan akan segera datang"; "spaces_add_rooms_coming_soon_title" = "Penambahan ruangan akan segera datang";
"leave_space_and_all_rooms_action" = "Tinggalkan semua ruangan dan space"; "leave_space_and_all_rooms_action" = "Tinggalkan semua ruangan dan space";
"space_beta_announce_subtitle" = "Versi baru dari komunitas"; "space_beta_announce_subtitle" = "Versi baru dari komunitas";
@ -1562,7 +1562,7 @@
"pin_protection_confirm_pin_to_disable" = "Konfirmasi PIN untuk menonaktifkan PIN"; "pin_protection_confirm_pin_to_disable" = "Konfirmasi PIN untuk menonaktifkan PIN";
"pin_protection_choose_pin" = "Buat sebuah PIN untuk keamanan"; "pin_protection_choose_pin" = "Buat sebuah PIN untuk keamanan";
"cross_signing_setup_banner_subtitle" = "Verifikasi perangkat Anda yang lain dengan mudah"; "cross_signing_setup_banner_subtitle" = "Verifikasi perangkat Anda yang lain dengan mudah";
"secrets_setup_recovery_passphrase_additional_information" = "Jangan menggunakan kata sandi akun Anda."; "secrets_setup_recovery_passphrase_additional_information" = "Jangan menggunakan kata sandi akun Matrix Anda.";
"secrets_recovery_with_key_invalid_recovery_key_title" = "Tidak dapat mengakses penyimpanan rahasia"; "secrets_recovery_with_key_invalid_recovery_key_title" = "Tidak dapat mengakses penyimpanan rahasia";
"secrets_recovery_with_passphrase_invalid_passphrase_title" = "Tidak dapat mengakses penyimpanan rahasia"; "secrets_recovery_with_passphrase_invalid_passphrase_title" = "Tidak dapat mengakses penyimpanan rahasia";
@ -1616,7 +1616,7 @@
"security_settings_crosssigning_info_ok" = "Penandatanganan silang siap dipakai."; "security_settings_crosssigning_info_ok" = "Penandatanganan silang siap dipakai.";
"settings_discovery_error_message" = "Sebuah kesalahan terjadi. Mohon coba lagi."; "settings_discovery_error_message" = "Sebuah kesalahan terjadi. Mohon coba lagi.";
"settings_crypto_blacklist_unverified_devices" = "Enkripsi ke sesi terverifikasi saja"; "settings_crypto_blacklist_unverified_devices" = "Enkripsi ke sesi terverifikasi saja";
"settings_password_updated" = "Kata sandi Anda telah diperbarui"; "settings_password_updated" = "Kata sandi akun Matrix Anda telah diperbarui";
"settings_enable_rageshake" = "Rage shake untuk melaporkan bug"; "settings_enable_rageshake" = "Rage shake untuk melaporkan bug";
// No VoIP support // No VoIP support
@ -1653,11 +1653,11 @@
"poll_edit_form_create_options" = "Buat opsi"; "poll_edit_form_create_options" = "Buat opsi";
"poll_edit_form_input_placeholder" = "Tulis sesuatu"; "poll_edit_form_input_placeholder" = "Tulis sesuatu";
"poll_edit_form_question_or_topic" = "Pertanyaan atau topik"; "poll_edit_form_question_or_topic" = "Pertanyaan atau topik";
"poll_edit_form_poll_question_or_topic" = "Pertanyaan atau topik poll"; "poll_edit_form_poll_question_or_topic" = "Pertanyaan atau topik pemungutan suara";
// Mark: - Polls // Mark: - Polls
"poll_edit_form_create_poll" = "Buat poll"; "poll_edit_form_create_poll" = "Buat pemungutan suara";
"share_extension_send_now" = "Kirim sekarang"; "share_extension_send_now" = "Kirim sekarang";
"share_extension_low_quality_video_message" = "Kirim dalam %@ untuk kualitas yang lebih baik, atau kirim dengan kualitas rendah di bawah."; "share_extension_low_quality_video_message" = "Kirim dalam %@ untuk kualitas yang lebih baik, atau kirim dengan kualitas rendah di bawah.";
"share_extension_low_quality_video_title" = "Video akan dikirim dalam kualitas rendah"; "share_extension_low_quality_video_title" = "Video akan dikirim dalam kualitas rendah";
@ -1665,7 +1665,7 @@
"settings_about" = "TENTANG"; "settings_about" = "TENTANG";
"poll_timeline_not_closed_action" = "OK"; "poll_timeline_not_closed_action" = "OK";
"poll_timeline_not_closed_subtitle" = "Mohon coba lagi"; "poll_timeline_not_closed_subtitle" = "Mohon coba lagi";
"poll_timeline_not_closed_title" = "Gagal untuk mengakhiri poll"; "poll_timeline_not_closed_title" = "Gagal untuk mengakhiri pemungutan suara";
"poll_timeline_vote_not_registered_action" = "OK"; "poll_timeline_vote_not_registered_action" = "OK";
"poll_timeline_vote_not_registered_subtitle" = "Maaf, suara Anda tidak diberikan, mohon coba lagi"; "poll_timeline_vote_not_registered_subtitle" = "Maaf, suara Anda tidak diberikan, mohon coba lagi";
"poll_timeline_vote_not_registered_title" = "Suara tidak diberikan"; "poll_timeline_vote_not_registered_title" = "Suara tidak diberikan";
@ -1680,10 +1680,10 @@
"poll_timeline_one_vote" = "1 suara"; "poll_timeline_one_vote" = "1 suara";
"poll_edit_form_post_failure_action" = "OK"; "poll_edit_form_post_failure_action" = "OK";
"poll_edit_form_post_failure_subtitle" = "Silakan coba lagi"; "poll_edit_form_post_failure_subtitle" = "Silakan coba lagi";
"poll_edit_form_post_failure_title" = "Gagal untuk mengirim poll"; "poll_edit_form_post_failure_title" = "Gagal untuk mengirim pemungutan suara";
"settings_labs_enabled_polls" = "Poll"; "settings_labs_enabled_polls" = "Poll";
"room_event_action_end_poll" = "Akhiri poll"; "room_event_action_end_poll" = "Akhiri pemungutan suara";
"room_event_action_remove_poll" = "Hapus poll"; "room_event_action_remove_poll" = "Hapus pemungutan suara";
"analytics_prompt_stop" = "Berhenti membagikan"; "analytics_prompt_stop" = "Berhenti membagikan";
"analytics_prompt_yes" = "Iya, saya tidak keberatan"; "analytics_prompt_yes" = "Iya, saya tidak keberatan";
"analytics_prompt_not_now" = "Jangan sekarang"; "analytics_prompt_not_now" = "Jangan sekarang";
@ -1735,10 +1735,42 @@
// Onboarding // Onboarding
"onboarding_splash_register_button_title" = "Buat akun"; "onboarding_splash_register_button_title" = "Buat akun";
"poll_edit_form_poll_type_closed_description" = "Hasil akan ditampilkan ketika Anda mengakhiri poll-nya"; "poll_edit_form_poll_type_closed_description" = "Hasil akan ditampilkan ketika Anda mengakhiri pemungutan suara";
"poll_edit_form_poll_type_closed" = "Poll tertutup"; "poll_edit_form_poll_type_closed" = "Poll tertutup";
"poll_edit_form_poll_type_open_description" = "Pemberi suara akan melihat hasilnya ketika telah memberikan suara"; "poll_edit_form_poll_type_open_description" = "Pemberi suara akan melihat hasilnya ketika telah memberikan suara";
"poll_edit_form_poll_type_open" = "Buka poll"; "poll_edit_form_poll_type_open" = "Buka pemungutan suara";
"poll_edit_form_update_failure_subtitle" = "Silakan coba lagi"; "poll_edit_form_update_failure_subtitle" = "Silakan coba lagi";
"poll_edit_form_update_failure_title" = "Gagal untuk memperbarui poll"; "poll_edit_form_update_failure_title" = "Gagal untuk memperbarui pemungutan suara";
"poll_edit_form_poll_type" = "Tipe poll"; "poll_edit_form_poll_type" = "Tipe pemungutan suara";
"location_sharing_post_failure_subtitle" = "%@ tidak dapat mengirimkan lokasi Anda. Silakan coba lagi nanti.";
"location_sharing_post_failure_title" = "Kami tidak dapat mengirimkan lokasi Anda";
"home_context_menu_leave" = "Tinggalkan";
"home_context_menu_normal_priority" = "Prioritas normal";
"home_context_menu_low_priority" = "Prioritas rendah";
"home_context_menu_unfavourite" = "Hilangkan dari Favorit";
"home_context_menu_favourite" = "Favorit";
"home_context_menu_unmute" = "Hilangkan bisuan";
"home_context_menu_mute" = "Bisukan";
"home_context_menu_notifications" = "Notifikasi";
"home_context_menu_make_room" = "Pindah ke Ruangan";
"home_context_menu_make_dm" = "Pindah ke Orang";
"event_formatter_message_deleted" = "Pesan dihapus";
"settings_labs_enable_threads" = "Perpesanan utasan";
"message_from_a_thread" = "Dari sebuah utasan";
"threads_empty_show_all_threads" = "Tampilkan semua utasan";
"threads_empty_tip" = "Tip: Ketuk pada sebuah pesan dan gunakan “Utasan” untuk memulai yang baru.";
"threads_empty_info_my" = "Balas ke utasan yang sedang terjadi atau ketuk pada sebuah pesan dan gunakan “Utasan” untuk memulai yang baru.";
"threads_empty_info_all" = "Utasan membantu membuat obrolan sesuai topik dan mudah untuk dilacak.";
"threads_empty_title" = "Buat diskusi tetap teratur dengan utasan";
"threads_action_my_threads" = "Utasan saya";
"threads_action_all_threads" = "Semua utasan";
"threads_title" = "Utasan";
"thread_copy_link_to_thread" = "Salin tautan ke utasan";
// MARK: Threads
"room_thread_title" = "Utasan";
"room_accessibility_thread_more" = "Lainnya";
"room_accessibility_threads" = "Utasan";
"room_event_copy_link_info" = "Tautan disalin ke papan klip.";
"room_event_action_reply_in_thread" = "Utasan";
"room_event_action_view_in_room" = "Tampilkan di ruangan";

View file

@ -34,7 +34,7 @@
"auth_optional_phone_placeholder" = "Numero di telefono (opzionale)"; "auth_optional_phone_placeholder" = "Numero di telefono (opzionale)";
"auth_phone_placeholder" = "Numero di telefono"; "auth_phone_placeholder" = "Numero di telefono";
"auth_repeat_password_placeholder" = "Ripeti la password"; "auth_repeat_password_placeholder" = "Ripeti la password";
"auth_repeat_new_password_placeholder" = "Conferma la nuova password"; "auth_repeat_new_password_placeholder" = "Conferma la nuova password dell'account Matrix";
"auth_home_server_placeholder" = "URL (es. https://matrix.org)"; "auth_home_server_placeholder" = "URL (es. https://matrix.org)";
"auth_identity_server_placeholder" = "URL (es. https://vector.im)"; "auth_identity_server_placeholder" = "URL (es. https://vector.im)";
"auth_invalid_login_param" = "Nome utente e/o password non corretti"; "auth_invalid_login_param" = "Nome utente e/o password non corretti";
@ -52,12 +52,12 @@
"auth_missing_email_or_phone" = "Indirizzo email o numero di telefono mancante"; "auth_missing_email_or_phone" = "Indirizzo email o numero di telefono mancante";
"auth_email_in_use" = "Questo indirizzo email è già in uso"; "auth_email_in_use" = "Questo indirizzo email è già in uso";
"auth_phone_in_use" = "Questo numero di telefono è già in uso"; "auth_phone_in_use" = "Questo numero di telefono è già in uso";
"auth_forgot_password" = "Password dimenticata?"; "auth_forgot_password" = "Password dell'account Matrix dimenticata?";
"auth_email_validation_message" = "Per favore controlla la tua email per proseguire la registrazione"; "auth_email_validation_message" = "Per favore controlla la tua email per proseguire la registrazione";
"auth_msisdn_validation_title" = "In attesa di verifica"; "auth_msisdn_validation_title" = "In attesa di verifica";
"auth_msisdn_validation_message" = "Ti è stato spedito un SMS con il codice di attivazione. Per favore inserisci il codice qui sotto."; "auth_msisdn_validation_message" = "Ti è stato spedito un SMS con il codice di attivazione. Per favore inserisci il codice qui sotto.";
"auth_msisdn_validation_error" = "Impossibile verificare il numero di telefono."; "auth_msisdn_validation_error" = "Impossibile verificare il numero di telefono.";
"auth_reset_password_message" = "Per ripristinare la password inserisci l'indirizzo email associato al tuo account:"; "auth_reset_password_message" = "Per ripristinare la password dell'account Matrix inserisci l'indirizzo email associato al tuo account:";
// String for App Store // String for App Store
"store_short_description" = "Conversazioni sicure e decentralizzate"; "store_short_description" = "Conversazioni sicure e decentralizzate";
// Actions // Actions
@ -90,7 +90,7 @@
"auth_reset_password_next_step_button" = "Ho verificato il mio indirizzo email"; "auth_reset_password_next_step_button" = "Ho verificato il mio indirizzo email";
"auth_reset_password_error_unauthorized" = "Verifica indirizzo email fallita: assicurati di aver cliccato sul link contenuto nell'email"; "auth_reset_password_error_unauthorized" = "Verifica indirizzo email fallita: assicurati di aver cliccato sul link contenuto nell'email";
"auth_reset_password_error_not_found" = "Il tuo indirizzo email non sembra associato a nessun ID utente registrato su questo Home Server."; "auth_reset_password_error_not_found" = "Il tuo indirizzo email non sembra associato a nessun ID utente registrato su questo Home Server.";
"auth_reset_password_success_message" = "La tua password è stata ripristinata.\n\nSei stato disconnesso da tutte le sessioni e non riceverai più alcuna notifica. Per riabilitare le notifiche, riconnettiti su ciascun dispositivo."; "auth_reset_password_success_message" = "La password del tuo account Matrix è stata ripristinata.\n\nSei stato disconnesso da tutte le sessioni e non riceverai più alcuna notifica. Per riabilitare le notifiche, riconnettiti su ciascun dispositivo.";
"auth_add_email_and_phone_warning" = "Al momento non è ancora possibile registrarsi contemporaneamente con indirizzo email e numero di telefono e quindi verrà utilizzato solo il numero di telefono. Puoi aggiungere la tua email al tuo profilo dall menù Impostazioni."; "auth_add_email_and_phone_warning" = "Al momento non è ancora possibile registrarsi contemporaneamente con indirizzo email e numero di telefono e quindi verrà utilizzato solo il numero di telefono. Puoi aggiungere la tua email al tuo profilo dall menù Impostazioni.";
"auth_accept_policies" = "Per favore, rileggi e accetta i termini di servizio di questo Home Server:"; "auth_accept_policies" = "Per favore, rileggi e accetta i termini di servizio di questo Home Server:";
"auth_autodiscover_invalid_response" = "Risposta Home Server non valida"; "auth_autodiscover_invalid_response" = "Risposta Home Server non valida";
@ -230,7 +230,7 @@
"room_event_action_redact" = "Rimuovi"; "room_event_action_redact" = "Rimuovi";
"room_event_action_more" = "Altro"; "room_event_action_more" = "Altro";
"room_event_action_share" = "Condividi"; "room_event_action_share" = "Condividi";
"room_event_action_permalink" = "Permalink"; "room_event_action_permalink" = "Copia link nel messaggio";
"room_event_action_view_source" = "Vedi il codice sorgente"; "room_event_action_view_source" = "Vedi il codice sorgente";
"room_event_action_view_decrypted_source" = "Vedi il codice sorgente decifrato"; "room_event_action_view_decrypted_source" = "Vedi il codice sorgente decifrato";
"room_event_action_report" = "Segnala il contenuto"; "room_event_action_report" = "Segnala il contenuto";
@ -319,7 +319,7 @@
"settings_add_email_address" = "Aggiungi indirizzo email"; "settings_add_email_address" = "Aggiungi indirizzo email";
"settings_phone_number" = "Telefono"; "settings_phone_number" = "Telefono";
"settings_add_phone_number" = "Aggiungi numero di telefono"; "settings_add_phone_number" = "Aggiungi numero di telefono";
"settings_change_password" = "Cambia password"; "settings_change_password" = "Cambia password dell'account Matrix";
"settings_night_mode" = "Modalità notte"; "settings_night_mode" = "Modalità notte";
"settings_fail_to_update_profile" = "Errore nell'aggiornamento del profilo"; "settings_fail_to_update_profile" = "Errore nell'aggiornamento del profilo";
"settings_enable_push_notif" = "Notifiche per questo dispositivo"; "settings_enable_push_notif" = "Notifiche per questo dispositivo";
@ -356,8 +356,8 @@
"settings_old_password" = "vecchia password"; "settings_old_password" = "vecchia password";
"settings_new_password" = "nuova password"; "settings_new_password" = "nuova password";
"settings_confirm_password" = "conferma password"; "settings_confirm_password" = "conferma password";
"settings_fail_to_update_password" = "Aggiornamento password fallito"; "settings_fail_to_update_password" = "Aggiornamento password dell'account Matrix fallito";
"settings_password_updated" = "La tua password è stata aggiornata"; "settings_password_updated" = "La password del tuo account Matrix è stata aggiornata";
"settings_crypto_device_name" = "Nome sessione: "; "settings_crypto_device_name" = "Nome sessione: ";
"settings_crypto_device_id" = "\nID sessione: "; "settings_crypto_device_id" = "\nID sessione: ";
"settings_crypto_device_key" = "\nChiave sessione:\n"; "settings_crypto_device_key" = "\nChiave sessione:\n";
@ -580,7 +580,7 @@
"deactivate_account_forget_messages_information_part3" = ": gli utenti futuri vedranno un elenco incompleto di conversazioni)"; "deactivate_account_forget_messages_information_part3" = ": gli utenti futuri vedranno un elenco incompleto di conversazioni)";
"deactivate_account_validate_action" = "Disattiva account"; "deactivate_account_validate_action" = "Disattiva account";
"deactivate_account_password_alert_title" = "Disattiva account"; "deactivate_account_password_alert_title" = "Disattiva account";
"deactivate_account_password_alert_message" = "Per proseguire, inserisci la tua password"; "deactivate_account_password_alert_message" = "Per continuare, inserisci la password del tuo account Matrix";
// Re-request confirmation dialog // Re-request confirmation dialog
"rerequest_keys_alert_title" = "Richiesta inviata"; "rerequest_keys_alert_title" = "Richiesta inviata";
"rerequest_keys_alert_message" = "Avvia %@ su un altro dispositivo che possa decifrare il messaggio, in modo da poter inviare le chiavi a questa sessione."; "rerequest_keys_alert_message" = "Avvia %@ su un altro dispositivo che possa decifrare il messaggio, in modo da poter inviare le chiavi a questa sessione.";
@ -594,7 +594,7 @@
"key_backup_setup_intro_manual_export_info" = "(Avanzato)"; "key_backup_setup_intro_manual_export_info" = "(Avanzato)";
"key_backup_setup_intro_manual_export_action" = "Esporta manualmente le chiavi"; "key_backup_setup_intro_manual_export_action" = "Esporta manualmente le chiavi";
"key_backup_setup_passphrase_title" = "Proteggi il tuo backup con una frase di sicurezza"; "key_backup_setup_passphrase_title" = "Proteggi il tuo backup con una frase di sicurezza";
"key_backup_setup_passphrase_info" = "Sul tuo Home Server verrà effettuato un Backup cifrato delle tue chiavi crittograficher. Proteggi il Backup con una frase di sicurezza perchè sia al sicuro.\n \nPer una massima sicurezza, la password del Backup dovrebbe essere diversa dalla password del tuo account."; "key_backup_setup_passphrase_info" = "Conserveremo una copia cifrata delle tue chiavi sul nostro server. Proteggi il tuo backup con una frase di sicurezza per tenerlo sicuro.\n \nPer la massima sicurezza, dovrebbe essere diversa dalla password del tuo account Matrix.";
"key_backup_setup_passphrase_passphrase_title" = "Inserisci"; "key_backup_setup_passphrase_passphrase_title" = "Inserisci";
"key_backup_setup_passphrase_passphrase_placeholder" = "Inserisci frase"; "key_backup_setup_passphrase_passphrase_placeholder" = "Inserisci frase";
"key_backup_setup_passphrase_passphrase_valid" = "Bene!"; "key_backup_setup_passphrase_passphrase_valid" = "Bene!";
@ -651,7 +651,7 @@
"sign_out_key_backup_in_progress_alert_discard_key_backup_action" = "Non voglio i miei messaggi cifrati"; "sign_out_key_backup_in_progress_alert_discard_key_backup_action" = "Non voglio i miei messaggi cifrati";
"sign_out_key_backup_in_progress_alert_cancel_action" = "Attendo"; "sign_out_key_backup_in_progress_alert_cancel_action" = "Attendo";
"close" = "Chiudi"; "close" = "Chiudi";
"auth_forgot_password_error_no_configured_identity_server" = "Non è stato configurato alcun server d'identità: aggiungine uno per ripristinare la password."; "auth_forgot_password_error_no_configured_identity_server" = "Non è stato configurato alcun server d'identità: aggiungine uno per ripristinare la password dell'account Matrix.";
"auth_softlogout_signed_out" = "Sei uscito"; "auth_softlogout_signed_out" = "Sei uscito";
"auth_softlogout_sign_in" = "Accedi"; "auth_softlogout_sign_in" = "Accedi";
"auth_softlogout_reason" = "L'amministratore dell'Home Server (%1$@) ti ha disconnesso dal tuo account %2$@ (%3$@)."; "auth_softlogout_reason" = "L'amministratore dell'Home Server (%1$@) ti ha disconnesso dal tuo account %2$@ (%3$@).";
@ -820,9 +820,9 @@
"auth_add_email_message_2" = "Imposta un'email per il ripristino dell'account in caso di problemi e, se vuoi, anche per farti trovare da chi conosce quell'indirizzo email."; "auth_add_email_message_2" = "Imposta un'email per il ripristino dell'account in caso di problemi e, se vuoi, anche per farti trovare da chi conosce quell'indirizzo email.";
"auth_add_phone_message_2" = "Aggiungi un numero di telefono se vuoi farti trovare da chi lo conosce."; "auth_add_phone_message_2" = "Aggiungi un numero di telefono se vuoi farti trovare da chi lo conosce.";
"auth_add_email_phone_message_2" = "Imposta un'email per il ripristino dell'account in caso di problemi. Email e telefono potranno essere usati anche per farti trovare dagli altri utenti."; "auth_add_email_phone_message_2" = "Imposta un'email per il ripristino dell'account in caso di problemi. Email e telefono potranno essere usati anche per farti trovare dagli altri utenti.";
"auth_email_is_required" = "Non è stato configurato alcun server d'identità, perciò non puoi aggiungere un indirizzo email per ripristinare la tua password in futuro."; "auth_email_is_required" = "Non è stato configurato alcun server d'identità, perciò non puoi aggiungere un indirizzo email per ripristinare la tua password dell'account Matrix in futuro.";
"auth_phone_is_required" = "Non è stato configurato alcun server d'identità, perciò non puoi aggiungere un numero di telefono per ripristinare la tua password in futuro."; "auth_phone_is_required" = "Non è stato configurato alcun server d'identità, perciò non puoi aggiungere un numero di telefono per ripristinare la tua password dell'account Matrix in futuro.";
"auth_reset_password_error_is_required" = "Non è stato configurato alcun server d'identità: aggiungine uno nelle opzioni server per ripristinare la password."; "auth_reset_password_error_is_required" = "Non è stato configurato alcun server d'identità: aggiungine uno nelle opzioni server per ripristinare la password dell'account Matrix.";
"contacts_address_book_no_identity_server" = "Nessun server d'identità configurato"; "contacts_address_book_no_identity_server" = "Nessun server d'identità configurato";
"settings_discovery_settings" = "SCOPRI"; "settings_discovery_settings" = "SCOPRI";
"settings_identity_server_settings" = "SERVER D'IDENTITÀ"; "settings_identity_server_settings" = "SERVER D'IDENTITÀ";
@ -883,7 +883,7 @@
"error_invite_3pid_with_no_identity_server" = "Aggiungi un server d'identità nelle impostazioni per poter invitare utenti tramite email."; "error_invite_3pid_with_no_identity_server" = "Aggiungi un server d'identità nelle impostazioni per poter invitare utenti tramite email.";
"settings_add_3pid_password_title_email" = "Aggiungi indirizzo email"; "settings_add_3pid_password_title_email" = "Aggiungi indirizzo email";
"settings_add_3pid_password_title_msidsn" = "Aggiungi numero di telefono"; "settings_add_3pid_password_title_msidsn" = "Aggiungi numero di telefono";
"settings_add_3pid_password_message" = "Per continuare, inserisci la tua password"; "settings_add_3pid_password_message" = "Per continuare, inserisci la password del tuo account Matrix";
"settings_add_3pid_invalid_password_message" = "Credenziali non valide"; "settings_add_3pid_invalid_password_message" = "Credenziali non valide";
"error_not_supported_on_mobile" = "Non puoi farlo da %@ mobile."; "error_not_supported_on_mobile" = "Non puoi farlo da %@ mobile.";
"widget_menu_refresh" = "Ricarica"; "widget_menu_refresh" = "Ricarica";
@ -1104,7 +1104,7 @@
"secrets_setup_recovery_key_storage_alert_message" = "✓ Stampala e conservala in un posto sicuro\n✓ Salvala in una chiave USB o disco di backup\n✓ Copiala nel tuo archivio cloud pesonale"; "secrets_setup_recovery_key_storage_alert_message" = "✓ Stampala e conservala in un posto sicuro\n✓ Salvala in una chiave USB o disco di backup\n✓ Copiala nel tuo archivio cloud pesonale";
"secrets_setup_recovery_passphrase_title" = "Imposta una frase di sicurezza"; "secrets_setup_recovery_passphrase_title" = "Imposta una frase di sicurezza";
"secrets_setup_recovery_passphrase_information" = "Inserisci una frase di sicurezza che conosci solo tu, usata per proteggere i segreti nel tuo server."; "secrets_setup_recovery_passphrase_information" = "Inserisci una frase di sicurezza che conosci solo tu, usata per proteggere i segreti nel tuo server.";
"secrets_setup_recovery_passphrase_additional_information" = "Non usare la password del tuo account."; "secrets_setup_recovery_passphrase_additional_information" = "Non usare la password del tuo account Matrix.";
"secrets_setup_recovery_passphrase_validate_action" = "Fatto"; "secrets_setup_recovery_passphrase_validate_action" = "Fatto";
"secrets_setup_recovery_passphrase_confirm_information" = "Inserisci la frase di sicurezza di nuovo per confermarla."; "secrets_setup_recovery_passphrase_confirm_information" = "Inserisci la frase di sicurezza di nuovo per confermarla.";
"secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Conferma"; "secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Conferma";
@ -1113,13 +1113,13 @@
"authenticated_session_flow_not_supported" = "Questa app non supporta il metodo di autenticazione del tuo homeserver."; "authenticated_session_flow_not_supported" = "Questa app non supporta il metodo di autenticazione del tuo homeserver.";
"secure_backup_setup_banner_title" = "Backup Sicuro"; "secure_backup_setup_banner_title" = "Backup Sicuro";
"secure_backup_setup_banner_subtitle" = "Proteggiti dalla perdita dei messaggi e dati crittografati"; "secure_backup_setup_banner_subtitle" = "Proteggiti dalla perdita dei messaggi e dati crittografati";
"security_settings_crypto_sessions_description_2" = "Se non riconosci un accesso, modifica la password e reimposta il Backup Sicuro."; "security_settings_crypto_sessions_description_2" = "Se non riconosci un accesso, modifica la password dell'account Matrix e reimposta il Backup Sicuro.";
"security_settings_secure_backup" = "BACKUP SICURO"; "security_settings_secure_backup" = "BACKUP SICURO";
"security_settings_secure_backup_description" = "Fai un backup delle chiavi crittografiche con i dati del tuo account in caso tu perda l'accesso alle tue sessioni. Le chiavi saranno protette con una chiave di sicurezza univoca."; "security_settings_secure_backup_description" = "Fai un backup delle chiavi crittografiche con i dati del tuo account in caso tu perda l'accesso alle tue sessioni. Le chiavi saranno protette con una chiave di sicurezza univoca.";
"security_settings_secure_backup_setup" = "Configura"; "security_settings_secure_backup_setup" = "Configura";
"security_settings_secure_backup_synchronise" = "Sincronizza"; "security_settings_secure_backup_synchronise" = "Sincronizza";
"security_settings_secure_backup_delete" = "Elimina backup"; "security_settings_secure_backup_delete" = "Elimina backup";
"security_settings_user_password_description" = "Conferma la tua identità inserendo la password del tuo account"; "security_settings_user_password_description" = "Conferma la tua identità inserendo la password dell'account Matrix";
// Events formatter with you // Events formatter with you
"event_formatter_widget_added_by_you" = "Hai aggiunto il widget: %@"; "event_formatter_widget_added_by_you" = "Hai aggiunto il widget: %@";
"event_formatter_widget_removed_by_you" = "Hai rimosso il widget: %@"; "event_formatter_widget_removed_by_you" = "Hai rimosso il widget: %@";
@ -1215,7 +1215,7 @@
"room_details_advanced_e2e_encryption_enabled_for_dm" = "La crittografia è attiva"; "room_details_advanced_e2e_encryption_enabled_for_dm" = "La crittografia è attiva";
"room_details_advanced_e2e_encryption_disabled_for_dm" = "La crittografia non è attiva."; "room_details_advanced_e2e_encryption_disabled_for_dm" = "La crittografia non è attiva.";
"pin_protection_kick_user_alert_message" = "Troppi errori, sei stato disconnesso"; "pin_protection_kick_user_alert_message" = "Troppi errori, sei stato disconnesso";
"secrets_reset_authentication_message" = "Inserisci la password del tuo account per confermare"; "secrets_reset_authentication_message" = "Inserisci la password del tuo account Matrix per confermare";
"secrets_reset_reset_action" = "Reimposta"; "secrets_reset_reset_action" = "Reimposta";
"secrets_reset_warning_message" = "Ricomincerai senza cronologia, messaggi, dispositivi o utenti fidati."; "secrets_reset_warning_message" = "Ricomincerai senza cronologia, messaggi, dispositivi o utenti fidati.";
"secrets_reset_warning_title" = "Se reimposti tutto"; "secrets_reset_warning_title" = "Se reimposti tutto";
@ -1597,3 +1597,35 @@
"poll_edit_form_update_failure_subtitle" = "Riprova"; "poll_edit_form_update_failure_subtitle" = "Riprova";
"poll_edit_form_update_failure_title" = "Aggiornamento del sondaggio fallito"; "poll_edit_form_update_failure_title" = "Aggiornamento del sondaggio fallito";
"poll_edit_form_poll_type" = "Tipo sondaggio"; "poll_edit_form_poll_type" = "Tipo sondaggio";
"location_sharing_post_failure_subtitle" = "%@ non ha potuto rilevare la tua posizione. Riprova più tardi.";
"location_sharing_post_failure_title" = "Non siamo riusciti ad inviare la tua posizione";
"home_context_menu_leave" = "Esci";
"home_context_menu_normal_priority" = "Priorità normale";
"home_context_menu_low_priority" = "Bassa priorità";
"home_context_menu_unfavourite" = "Rimuovi dai preferiti";
"home_context_menu_favourite" = "Preferito";
"home_context_menu_unmute" = "Riattiva audio";
"home_context_menu_mute" = "Silenzioso";
"home_context_menu_notifications" = "Notifiche";
"home_context_menu_make_room" = "Sposta in Stanze";
"home_context_menu_make_dm" = "Sposta in Persone";
"event_formatter_message_deleted" = "Messaggio eliminato";
"settings_labs_enable_threads" = "Messaggi in conversazioni";
"message_from_a_thread" = "Da una conversazione";
"threads_empty_show_all_threads" = "Mostra tutte le conversazioni";
"threads_empty_tip" = "Consiglio: tocca un messaggio e usa “Conversazione” per iniziarne una.";
"threads_empty_info_my" = "Rispondi ad una conversazione in corso o tocca un messaggio e usa “Conversazione” per iniziarne una nuova.";
"threads_empty_info_all" = "Le conversazioni ti aiutano a tenere le tue discussioni in tema e rintracciabili.";
"threads_empty_title" = "Tieni le discussioni organizzate in conversazioni";
"threads_action_my_threads" = "Le mie conversazioni";
"threads_action_all_threads" = "Tutte le conversazioni";
"threads_title" = "Conversazioni";
"thread_copy_link_to_thread" = "Copia link nella conversazione";
// MARK: Threads
"room_thread_title" = "Conversazione";
"room_accessibility_thread_more" = "Altro";
"room_accessibility_threads" = "Conversazioni";
"room_event_copy_link_info" = "Link copiato negli appunti.";
"room_event_action_reply_in_thread" = "Conversazione";
"room_event_action_view_in_room" = "Vedi nella stanza";

View file

@ -1,5 +1,8 @@
// Permissions usage explanations // Permissions usage explanations
"NSCameraUsageDescription" = "ビデオ通話や写真撮影、動画撮影などを行うときにカメラを使用します。"; "NSCameraUsageDescription" = "カメラは、ビデオ通話や写真撮影、動画撮影に使用されます。";
"NSPhotoLibraryUsageDescription" = "フォトライブラリは、写真や動画の送信に使用されます。"; "NSPhotoLibraryUsageDescription" = "フォトライブラリは、写真や動画の送信に使用されます。";
"NSMicrophoneUsageDescription" = "マイクは動画撮影や通話に使用されます。"; "NSMicrophoneUsageDescription" = "Elementは通話、動画撮影、ボイスメッセージの録音にマイクへのアクセスを必要としています。";
"NSContactsUsageDescription" = "連絡先のどれがElementまたはMatrixを既に使用しているかを表示するために、あなたのアドレス帳にあるメールアドレスと電話番号をMatrix Identity Serverに送信することができます。 New Vectorはこのデータを保存したり、他の目的に使用したりしません。 詳細については、アプリケーション設定のプライバシーポリシーページを参照してください。"; "NSContactsUsageDescription" = "Elementは、あなたが連絡先をチャットに招待できるように、連絡先を表示します。";
"NSCalendarsUsageDescription" = "予定されているミーティングをアプリで確認することができます。";
"NSFaceIDUsageDescription" = "Face IDはアプリへのアクセスに使用されます。";
"NSLocationWhenInUseUsageDescription" = "位置情報を共有する際には、地図を表示するためのアクセスをElementに付与する必要があります。";

View file

@ -31,9 +31,9 @@
/* A user has invited you to a chat */ /* A user has invited you to a chat */
"USER_INVITE_TO_CHAT" = "%@ さんがあなたを対話に招待しました"; "USER_INVITE_TO_CHAT" = "%@ さんがあなたを対話に招待しました";
/* A user has invited you to an (unamed) group chat */ /* A user has invited you to an (unamed) group chat */
"USER_INVITE_TO_CHAT_GROUP_CHAT" = "%@ さんがあなたを部屋へ招待しました"; "USER_INVITE_TO_CHAT_GROUP_CHAT" = "%@ さんがあなたをルームへ招待しました";
/* A user has invited you to a named room */ /* A user has invited you to a named room */
"USER_INVITE_TO_NAMED_ROOM" = "%@ さんが部屋 %@ へ招待しました"; "USER_INVITE_TO_NAMED_ROOM" = "%@ さんがルーム %@ へ招待しました";
/* Incoming one-to-one voice call */ /* Incoming one-to-one voice call */
"VOICE_CALL_FROM_USER" = "%@ さんから通話着信"; "VOICE_CALL_FROM_USER" = "%@ さんから通話着信";
/* Incoming one-to-one video call */ /* Incoming one-to-one video call */
@ -53,7 +53,7 @@
/** Key verification **/ /** Key verification **/
"KEY_VERIFICATION_REQUEST_FROM_USER" = "%@は検証したい"; "KEY_VERIFICATION_REQUEST_FROM_USER" = "%@は検証を求めています";
/* New message indicator on a room */ /* New message indicator on a room */
"MESSAGE_IN_X" = "%@ 内のメッセージ"; "MESSAGE_IN_X" = "%@ 内のメッセージ";
@ -74,3 +74,6 @@
/* New message indicator on unknown room */ /* New message indicator on unknown room */
"MESSAGE" = "メッセージ"; "MESSAGE" = "メッセージ";
/** General **/
"NOTIFICATION" = "通知";

File diff suppressed because it is too large Load diff

View file

@ -62,7 +62,7 @@
"auth_optional_phone_placeholder" = "Telefoonnummer (optioneel)"; "auth_optional_phone_placeholder" = "Telefoonnummer (optioneel)";
"auth_phone_placeholder" = "Telefoonnummer"; "auth_phone_placeholder" = "Telefoonnummer";
"auth_repeat_password_placeholder" = "Wachtwoord herhalen"; "auth_repeat_password_placeholder" = "Wachtwoord herhalen";
"auth_repeat_new_password_placeholder" = "Bevestig uw nieuwe wachtwoord"; "auth_repeat_new_password_placeholder" = "Bevestig uw nieuwe Matrix account wachtwoord";
"auth_invalid_login_param" = "Onjuiste gebruikersnaam en/of wachtwoord"; "auth_invalid_login_param" = "Onjuiste gebruikersnaam en/of wachtwoord";
"auth_invalid_user_name" = "Inlognamen mogen alleen letters, cijfers, punten, koppeltekens en onderstrepingstekens bevatten"; "auth_invalid_user_name" = "Inlognamen mogen alleen letters, cijfers, punten, koppeltekens en onderstrepingstekens bevatten";
"auth_invalid_password" = "Het wachtwoord is te kort (min 6)"; "auth_invalid_password" = "Het wachtwoord is te kort (min 6)";
@ -78,21 +78,21 @@
"auth_missing_email_or_phone" = "E-mailadres of telefoonnummer ontbreekt"; "auth_missing_email_or_phone" = "E-mailadres of telefoonnummer ontbreekt";
"auth_password_dont_match" = "De wachtwoorden komen niet overeen"; "auth_password_dont_match" = "De wachtwoorden komen niet overeen";
"auth_username_in_use" = "Inlognaam al in gebruik"; "auth_username_in_use" = "Inlognaam al in gebruik";
"auth_forgot_password" = "Wachtwoord vergeten?"; "auth_forgot_password" = "Matrix account wachtwoord vergeten?";
"auth_use_server_options" = "Aangepaste serverinstellingen gebruiken (geavanceerd)"; "auth_use_server_options" = "Aangepaste serverinstellingen gebruiken (geavanceerd)";
"auth_email_validation_message" = "Bekijk uw e-mail om verder te gaan met de registratie"; "auth_email_validation_message" = "Bekijk uw e-mail om verder te gaan met de registratie";
"auth_msisdn_validation_title" = "Verificatie in afwachting"; "auth_msisdn_validation_title" = "Verificatie in afwachting";
"auth_msisdn_validation_message" = "We hebben een sms met een activatiecode gestuurd. Voer deze code hieronder in."; "auth_msisdn_validation_message" = "We hebben een sms met een activatiecode gestuurd. Voer deze code hieronder in.";
"auth_msisdn_validation_error" = "Kan het telefoonnummer niet verifiëren."; "auth_msisdn_validation_error" = "Kan het telefoonnummer niet verifiëren.";
"auth_recaptcha_message" = "Deze server wil er graag zeker van zijn dat u geen robot bent"; "auth_recaptcha_message" = "Deze server wil er graag zeker van zijn dat u geen robot bent";
"auth_reset_password_message" = "Voer het e-mailadres dat met uw account verbonden is in om uw wachtwoord opnieuw in te stellen:"; "auth_reset_password_message" = "Voer het e-mailadres dat met uw account verbonden is in om uw Matrix account wachtwoord opnieuw in te stellen:";
"auth_reset_password_missing_email" = "Het e-mailadres dat met uw account verbonden is moet ingevoerd worden."; "auth_reset_password_missing_email" = "Het e-mailadres dat met uw account verbonden is moet ingevoerd worden.";
"auth_reset_password_missing_password" = "Er moet een nieuw wachtwoord ingevoerd worden."; "auth_reset_password_missing_password" = "Er moet een nieuw wachtwoord ingevoerd worden.";
"auth_reset_password_email_validation_message" = "Er is een e-mail naar %@ gestuurd. Klik hieronder zodra u de koppeling erin hebt gevolgd."; "auth_reset_password_email_validation_message" = "Er is een e-mail naar %@ gestuurd. Klik hieronder zodra u de koppeling erin hebt gevolgd.";
"auth_reset_password_next_step_button" = "Ik heb mijn e-mailadres geverifieerd"; "auth_reset_password_next_step_button" = "Ik heb mijn e-mailadres geverifieerd";
"auth_reset_password_error_unauthorized" = "Verifiëren van e-mailadres is mislukt: wees er zeker van dat u op de koppeling in de e-mail hebt getikt"; "auth_reset_password_error_unauthorized" = "Verifiëren van e-mailadres is mislukt: wees er zeker van dat u op de koppeling in de e-mail hebt getikt";
"auth_reset_password_error_not_found" = "Het ziet er niet naar uit dat uw e-mailadres met een Matrix-ID is verbonden op deze server."; "auth_reset_password_error_not_found" = "Het ziet er niet naar uit dat uw e-mailadres met een Matrix-ID is verbonden op deze server.";
"auth_reset_password_success_message" = "Uw wachtwoord is opnieuw ingesteld.\n\nU bent op alle apparaten afgemeld en u zult geen pushmeldingen meer ontvangen. Om meldingen weer in te schakelen, meldt u zich op elk apparaat opnieuw aan."; "auth_reset_password_success_message" = "Uw Matrix account wachtwoord is opnieuw ingesteld.\n\nU bent op alle apparaten afgemeld en u zult geen pushmeldingen meer ontvangen. Om meldingen weer in te schakelen, meldt u zich op elk apparaat opnieuw aan.";
"auth_add_email_and_phone_warning" = "Registratie met e-mailadres en telefoonnummer tegelijkertijd wordt, totdat de API bestaat, nog niet ondersteund. Alleen het telefoonnummer zal worden gebruikt. U kunt uw e-mailadres later aan uw profiel in de instellingen toevoegen."; "auth_add_email_and_phone_warning" = "Registratie met e-mailadres en telefoonnummer tegelijkertijd wordt, totdat de API bestaat, nog niet ondersteund. Alleen het telefoonnummer zal worden gebruikt. U kunt uw e-mailadres later aan uw profiel in de instellingen toevoegen.";
// Chat creation // Chat creation
"room_creation_title" = "Nieuwe chat"; "room_creation_title" = "Nieuwe chat";
@ -215,7 +215,7 @@
"room_event_action_redact" = "Verwijderen"; "room_event_action_redact" = "Verwijderen";
"room_event_action_more" = "Meer"; "room_event_action_more" = "Meer";
"room_event_action_share" = "Delen"; "room_event_action_share" = "Delen";
"room_event_action_permalink" = "Permalink"; "room_event_action_permalink" = "Kopieer link naar bericht";
"room_event_action_view_source" = "Bron weergeven"; "room_event_action_view_source" = "Bron weergeven";
"room_event_action_report" = "Inhoud melden"; "room_event_action_report" = "Inhoud melden";
"room_event_action_report_prompt_reason" = "Reden voor het melden van deze inhoud"; "room_event_action_report_prompt_reason" = "Reden voor het melden van deze inhoud";
@ -310,12 +310,12 @@
"settings_third_party_notices" = "Derdepartijmeldingen"; "settings_third_party_notices" = "Derdepartijmeldingen";
"settings_send_crash_report" = "Anonieme crash- en gebruiksgegevens versturen"; "settings_send_crash_report" = "Anonieme crash- en gebruiksgegevens versturen";
"settings_clear_cache" = "Cache verwijderen"; "settings_clear_cache" = "Cache verwijderen";
"settings_change_password" = "Wachtwoord veranderen"; "settings_change_password" = "Matrix account wachtwoord veranderen";
"settings_old_password" = "oud wachtwoord"; "settings_old_password" = "oud wachtwoord";
"settings_new_password" = "nieuw wachtwoord"; "settings_new_password" = "nieuw wachtwoord";
"settings_confirm_password" = "wachtwoord bevestigen"; "settings_confirm_password" = "wachtwoord bevestigen";
"settings_fail_to_update_password" = "Bijwerken van wachtwoord is mislukt"; "settings_fail_to_update_password" = "Bijwerken van Matrix account wachtwoord is mislukt";
"settings_password_updated" = "Uw wachtwoord is bijgewerkt"; "settings_password_updated" = "Uw Matrix account wachtwoord is bijgewerkt";
"settings_crypto_device_name" = "Apparaatnaam: "; "settings_crypto_device_name" = "Apparaatnaam: ";
"settings_crypto_device_id" = "\nApparaats-ID: "; "settings_crypto_device_id" = "\nApparaats-ID: ";
"settings_crypto_device_key" = "\nApparaatssleutel:\n"; "settings_crypto_device_key" = "\nApparaatssleutel:\n";
@ -557,7 +557,7 @@
"deactivate_account_forget_messages_information_part3" = ": dit zal er voor zorgen dat toekomstige gebruikers een onvolledig beeld krijgen van gesprekken)"; "deactivate_account_forget_messages_information_part3" = ": dit zal er voor zorgen dat toekomstige gebruikers een onvolledig beeld krijgen van gesprekken)";
"deactivate_account_validate_action" = "Account deactiveren"; "deactivate_account_validate_action" = "Account deactiveren";
"deactivate_account_password_alert_title" = "Account deactiveren"; "deactivate_account_password_alert_title" = "Account deactiveren";
"deactivate_account_password_alert_message" = "Voer uw wachtwoord in om verder te gaan"; "deactivate_account_password_alert_message" = "Voer uw Matrix account wachtwoord in om verder te gaan";
"room_event_action_view_decrypted_source" = "Ontsleutelde bron weergeven"; "room_event_action_view_decrypted_source" = "Ontsleutelde bron weergeven";
"room_message_reply_to_placeholder" = "Stuur een antwoord (onversleuteld)…"; "room_message_reply_to_placeholder" = "Stuur een antwoord (onversleuteld)…";
"encrypted_room_message_reply_to_placeholder" = "Stuur een versleuteld antwoord…"; "encrypted_room_message_reply_to_placeholder" = "Stuur een versleuteld antwoord…";
@ -622,7 +622,7 @@
"key_backup_setup_intro_manual_export_info" = "(Geavanceerd)"; "key_backup_setup_intro_manual_export_info" = "(Geavanceerd)";
"key_backup_setup_intro_manual_export_action" = "Sleutels handmatig exporteren"; "key_backup_setup_intro_manual_export_action" = "Sleutels handmatig exporteren";
"key_backup_setup_passphrase_title" = "Beveilig uw back-up met een veiligheidswachtwoord"; "key_backup_setup_passphrase_title" = "Beveilig uw back-up met een veiligheidswachtwoord";
"key_backup_setup_passphrase_info" = "We bewaren een versleutelde kopie van uw sleutels op onze server. Bescherm uw back-up met een veiligheidswachtwoord om deze veilig te houden.\n\nVoor maximale beveiliging zou dit moeten verschillen van uw accountwachtwoord."; "key_backup_setup_passphrase_info" = "We bewaren een versleutelde kopie van uw sleutels op onze server. Bescherm uw back-up met een veiligheidswachtwoord om deze veilig te houden.\n\nVoor maximale beveiliging zou dit moeten verschillen van uw Matrix account wachtwoord.";
"key_backup_setup_passphrase_passphrase_title" = "Invoeren"; "key_backup_setup_passphrase_passphrase_title" = "Invoeren";
"key_backup_setup_passphrase_passphrase_placeholder" = "Wachtwoord invoeren"; "key_backup_setup_passphrase_passphrase_placeholder" = "Wachtwoord invoeren";
"key_backup_setup_passphrase_passphrase_valid" = "Top!"; "key_backup_setup_passphrase_passphrase_valid" = "Top!";
@ -824,7 +824,7 @@
"emoji_picker_flags_category" = "Vlaggen"; "emoji_picker_flags_category" = "Vlaggen";
// MARK: Reaction history // MARK: Reaction history
"reaction_history_title" = "Reacties"; "reaction_history_title" = "Reacties";
"auth_forgot_password_error_no_configured_identity_server" = "Er is geen identiteitsserver geconfigureerd: voeg er een toe om uw wachtwoord opnieuw in te stellen."; "auth_forgot_password_error_no_configured_identity_server" = "Er is geen identiteitsserver geconfigureerd: voeg er een toe om uw Matrix account wachtwoord opnieuw in te stellen.";
"room_creation_error_invite_user_by_email_without_identity_server" = "Er is geen identiteitsserver geconfigureerd, dus u kunt geen deelnemers toevoegen via e-mail."; "room_creation_error_invite_user_by_email_without_identity_server" = "Er is geen identiteitsserver geconfigureerd, dus u kunt geen deelnemers toevoegen via e-mail.";
"room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Er is geen identiteitsserver geconfigureerd, dus u kunt geen gesprek beginnen met een contact via e-mail."; "room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Er is geen identiteitsserver geconfigureerd, dus u kunt geen gesprek beginnen met een contact via e-mail.";
// Service terms // Service terms
@ -856,9 +856,9 @@
"auth_add_email_message_2" = "Stel een e-mailadres in voor accountherstel en om later optioneel vindbaar te zijn voor mensen die u kennen."; "auth_add_email_message_2" = "Stel een e-mailadres in voor accountherstel en om later optioneel vindbaar te zijn voor mensen die u kennen.";
"auth_add_phone_message_2" = "Stel een telefoon in om later optioneel vindbaar te zijn voor mensen die u kennen."; "auth_add_phone_message_2" = "Stel een telefoon in om later optioneel vindbaar te zijn voor mensen die u kennen.";
"auth_add_email_phone_message_2" = "Stel een e-mailadres in voor accountherstel. Gebruik later e-mail of telefoon om optioneel vindbaar te zijn voor mensen die u kennen."; "auth_add_email_phone_message_2" = "Stel een e-mailadres in voor accountherstel. Gebruik later e-mail of telefoon om optioneel vindbaar te zijn voor mensen die u kennen.";
"auth_email_is_required" = "Er is geen identiteitsserver geconfigureerd, dus u kunt geen e-mailadres toevoegen om uw wachtwoord in de toekomst opnieuw in te stellen."; "auth_email_is_required" = "Er is geen identiteitsserver geconfigureerd, dus u kunt geen e-mailadres toevoegen om uw Matrix account wachtwoord in de toekomst opnieuw in te stellen.";
"auth_phone_is_required" = "Er is geen identiteitsserver geconfigureerd, dus u kunt geen telefoonnummer toevoegen om uw wachtwoord in de toekomst opnieuw in te stellen."; "auth_phone_is_required" = "Er is geen identiteitsserver geconfigureerd, dus u kunt geen telefoonnummer toevoegen om uw Matrix account wachtwoord in de toekomst opnieuw in te stellen.";
"auth_reset_password_error_is_required" = "Geen identiteitsserver ingesteld: voeg er één toe bij server opties om uw wachtwoord te wijzigen."; "auth_reset_password_error_is_required" = "Geen identiteitsserver ingesteld: voeg er één toe bij server opties om uw Matrix account wachtwoord te wijzigen.";
// MARK: - Secrets set up // MARK: - Secrets set up
@ -1009,7 +1009,7 @@
// Banner // Banner
"cross_signing_setup_banner_title" = "Versleuteling instellen"; "cross_signing_setup_banner_title" = "Versleuteling instellen";
"secrets_reset_authentication_message" = "Geef het wachtwoord van uw account om te bevestigen"; "secrets_reset_authentication_message" = "Geef het Matrix account wachtwoord in om te bevestigen";
"secrets_reset_reset_action" = "Opnieuw instellen"; "secrets_reset_reset_action" = "Opnieuw instellen";
"secrets_reset_warning_message" = "U zult opnieuw starten zonder geschiedenis, berichten, vertrouwde apparaten en vertrouwde gebruikers."; "secrets_reset_warning_message" = "U zult opnieuw starten zonder geschiedenis, berichten, vertrouwde apparaten en vertrouwde gebruikers.";
"secrets_reset_warning_title" = "Als u alles terugzet"; "secrets_reset_warning_title" = "Als u alles terugzet";
@ -1021,7 +1021,7 @@
"secrets_setup_recovery_passphrase_confirm_passphrase_placeholder" = "Wachtwoord bevestigen"; "secrets_setup_recovery_passphrase_confirm_passphrase_placeholder" = "Wachtwoord bevestigen";
"secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Bevestigen"; "secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Bevestigen";
"secrets_setup_recovery_passphrase_validate_action" = "Klaar"; "secrets_setup_recovery_passphrase_validate_action" = "Klaar";
"secrets_setup_recovery_passphrase_additional_information" = "Gebruik niet het wachtwoord van uw account."; "secrets_setup_recovery_passphrase_additional_information" = "Gebruik niet het Matrix account wachtwoord.";
"secrets_setup_recovery_key_storage_alert_title" = "Bewaar hem op een veilige plaats"; "secrets_setup_recovery_key_storage_alert_title" = "Bewaar hem op een veilige plaats";
"secrets_setup_recovery_key_done_action" = "Klaar"; "secrets_setup_recovery_key_done_action" = "Klaar";
"secrets_setup_recovery_key_export_action" = "Opslaan"; "secrets_setup_recovery_key_export_action" = "Opslaan";
@ -1326,7 +1326,7 @@
// Manage session // Manage session
"manage_session_title" = "Beheer sessie"; "manage_session_title" = "Beheer sessie";
"security_settings_user_password_description" = "Bevestig uw identiteit door uw accountwachtwoord in te voeren"; "security_settings_user_password_description" = "Bevestig uw identiteit door uw Matrix account wachtwoord in te voeren";
"security_settings_coming_soon" = "Sorry. Deze actie is nog niet beschikbaar in %@ iOS. Gebruik een andere Matrix-app om het in te stellen. %@ iOS zal het dan wel gebruiken."; "security_settings_coming_soon" = "Sorry. Deze actie is nog niet beschikbaar in %@ iOS. Gebruik een andere Matrix-app om het in te stellen. %@ iOS zal het dan wel gebruiken.";
"security_settings_complete_security_alert_message" = "U moet de beveiliging van uw huidige sessie nog afronden."; "security_settings_complete_security_alert_message" = "U moet de beveiliging van uw huidige sessie nog afronden.";
"security_settings_complete_security_alert_title" = "Beveiliging afronden"; "security_settings_complete_security_alert_title" = "Beveiliging afronden";
@ -1349,7 +1349,7 @@
"security_settings_secure_backup_setup" = "Instellen"; "security_settings_secure_backup_setup" = "Instellen";
"security_settings_secure_backup_description" = "Maak een back-up van uw versleutelingssleutel bij uw account data voor het geval u toegang verliest tot uw sessies. Uw sleutels zullen worden beveiligd met een unieke veiligheidssleutel."; "security_settings_secure_backup_description" = "Maak een back-up van uw versleutelingssleutel bij uw account data voor het geval u toegang verliest tot uw sessies. Uw sleutels zullen worden beveiligd met een unieke veiligheidssleutel.";
"security_settings_secure_backup" = "VEILIGE BACK-UP"; "security_settings_secure_backup" = "VEILIGE BACK-UP";
"security_settings_crypto_sessions_description_2" = "Als u deze inlog niet herkent, verander uw wachtwoord en reset uw Veilige Back-up."; "security_settings_crypto_sessions_description_2" = "Als u deze inlog niet herkent, verander uw Matrix account wachtwoord en reset uw Veilige Back-up.";
"security_settings_crypto_sessions_loading" = "Sessies laden…"; "security_settings_crypto_sessions_loading" = "Sessies laden…";
"security_settings_crypto_sessions" = "MIJN SESSIES"; "security_settings_crypto_sessions" = "MIJN SESSIES";
@ -1375,7 +1375,7 @@
"settings_discovery_no_identity_server" = "U gebruikt momenteel geen identiteitsserver. Om door de u bekende contacten vindbaar te zijn, voeg er een toe."; "settings_discovery_no_identity_server" = "U gebruikt momenteel geen identiteitsserver. Om door de u bekende contacten vindbaar te zijn, voeg er een toe.";
"settings_devices_description" = "De publieke naam van een sessie is zichtbaar voor de personen waarmee u communiceert"; "settings_devices_description" = "De publieke naam van een sessie is zichtbaar voor de personen waarmee u communiceert";
"settings_add_3pid_invalid_password_message" = "Ongeldig wachtwoord"; "settings_add_3pid_invalid_password_message" = "Ongeldig wachtwoord";
"settings_add_3pid_password_message" = "Geef uw wachtwoord om verder te gaan"; "settings_add_3pid_password_message" = "Geef uw Matrix account wachtwoord om verder te gaan";
"settings_add_3pid_password_title_msidsn" = "Telefoonnummer toevoegen"; "settings_add_3pid_password_title_msidsn" = "Telefoonnummer toevoegen";
"settings_add_3pid_password_title_email" = "E-mailadres toevoegen"; "settings_add_3pid_password_title_email" = "E-mailadres toevoegen";
"settings_integrations_allow_description" = "Gebruik een integratiebeheerder om bots, bruggen, widgets en stickerpakketten te beheren.\n\nIntegratiebeheerders ontvangen configuratiedata en kunnen widgets aanpassen, kameruitnodigingen versturen en bestuursniveaus instellen namens u."; "settings_integrations_allow_description" = "Gebruik een integratiebeheerder om bots, bruggen, widgets en stickerpakketten te beheren.\n\nIntegratiebeheerders ontvangen configuratiedata en kunnen widgets aanpassen, kameruitnodigingen versturen en bestuursniveaus instellen namens u.";
@ -1726,3 +1726,35 @@
"poll_edit_form_update_failure_subtitle" = "Probeer het opnieuw"; "poll_edit_form_update_failure_subtitle" = "Probeer het opnieuw";
"poll_edit_form_update_failure_title" = "Kan poll niet bijwerken"; "poll_edit_form_update_failure_title" = "Kan poll niet bijwerken";
"poll_edit_form_poll_type" = "Poll type"; "poll_edit_form_poll_type" = "Poll type";
"location_sharing_post_failure_subtitle" = "%@ kan uw locatie niet verzenden. Probeer het later opnieuw.";
"location_sharing_post_failure_title" = "We konden uw locatie niet verzenden";
"home_context_menu_leave" = "Verlaten";
"home_context_menu_normal_priority" = "Normale prioriteit";
"home_context_menu_low_priority" = "Lage prioriteit";
"home_context_menu_unfavourite" = "Verwijder uit favorieten";
"home_context_menu_favourite" = "Favoriet";
"home_context_menu_unmute" = "Dempen opheffen";
"home_context_menu_mute" = "Dempen";
"home_context_menu_notifications" = "Meldingen";
"home_context_menu_make_room" = "Verplaatsen naar kamers";
"home_context_menu_make_dm" = "Verplaatsen naar personen";
"event_formatter_message_deleted" = "Bericht verwijderd";
"settings_labs_enable_threads" = "Berichten met discussielijnen";
"message_from_a_thread" = "Van een discussie";
"threads_empty_show_all_threads" = "Toon alle discussies";
"threads_empty_tip" = "Tip: Tik op een bericht en gebruik “Discussie” om er een te starten.";
"threads_empty_info_my" = "Reageer op een lopende discussie of tik op een bericht en gebruik “Discussie” om een nieuwe te starten.";
"threads_empty_info_all" = "Discussies helpen u gesprekken on-topic te houden en gemakkelijk bij te houden.";
"threads_empty_title" = "Houd discussies georganiseerd met discussielijnen";
"threads_action_my_threads" = "Mijn discussies";
"threads_action_all_threads" = "Alle discussies";
"threads_title" = "Discussies";
"thread_copy_link_to_thread" = "Kopieer link naar discussie";
// MARK: Threads
"room_thread_title" = "Discussies";
"room_accessibility_thread_more" = "Meer";
"room_accessibility_threads" = "Discussies";
"room_event_copy_link_info" = "Link gekopieerd naar klembord.";
"room_event_action_reply_in_thread" = "Discussie";
"room_event_action_view_in_room" = "Bekijk in kamer";

View file

@ -50,7 +50,7 @@
"auth_optional_phone_placeholder" = "Número de telefone (opcional)"; "auth_optional_phone_placeholder" = "Número de telefone (opcional)";
"auth_phone_placeholder" = "Número de telefone"; "auth_phone_placeholder" = "Número de telefone";
"auth_repeat_password_placeholder" = "Repetir senha"; "auth_repeat_password_placeholder" = "Repetir senha";
"auth_repeat_new_password_placeholder" = "Confirmar sua nova senha"; "auth_repeat_new_password_placeholder" = "Confirme a nova senha de sua conta Matrix";
"auth_home_server_placeholder" = "URL (e.g. https://matrix.org)"; "auth_home_server_placeholder" = "URL (e.g. https://matrix.org)";
"auth_identity_server_placeholder" = "URL (e.g. https://vector.im)"; "auth_identity_server_placeholder" = "URL (e.g. https://vector.im)";
"auth_invalid_login_param" = "Nome de usuária(o) e/ou senha incorretos"; "auth_invalid_login_param" = "Nome de usuária(o) e/ou senha incorretos";
@ -71,7 +71,7 @@
"auth_untrusted_id_server" = "O servidor de identidade não é confiado"; "auth_untrusted_id_server" = "O servidor de identidade não é confiado";
"auth_password_dont_match" = "Senhas não correspondem"; "auth_password_dont_match" = "Senhas não correspondem";
"auth_username_in_use" = "Nome de usuária(o) em uso"; "auth_username_in_use" = "Nome de usuária(o) em uso";
"auth_forgot_password" = "Esqueceu senha?"; "auth_forgot_password" = "Esqueceu senha de conta Matrix?";
"auth_email_not_found" = "Falha para enviar email: Este endereço de email não foi encontrado"; "auth_email_not_found" = "Falha para enviar email: Este endereço de email não foi encontrado";
"auth_use_server_options" = "Usar opções de servidor personalizadas (avançado)"; "auth_use_server_options" = "Usar opções de servidor personalizadas (avançado)";
"auth_email_validation_message" = "Por favor cheque seu email para continuar registro"; "auth_email_validation_message" = "Por favor cheque seu email para continuar registro";
@ -79,14 +79,14 @@
"auth_msisdn_validation_message" = "Nós temos enviado um SMS com um código de ativação. Por favor entre este código abaixo."; "auth_msisdn_validation_message" = "Nós temos enviado um SMS com um código de ativação. Por favor entre este código abaixo.";
"auth_msisdn_validation_error" = "Incapaz de verificar número de telefone."; "auth_msisdn_validation_error" = "Incapaz de verificar número de telefone.";
"auth_recaptcha_message" = "Este servidorcasa gostaria de assegurar que você não é um robô"; "auth_recaptcha_message" = "Este servidorcasa gostaria de assegurar que você não é um robô";
"auth_reset_password_message" = "Para resettar sua senha, entre o endereço de email linkado a sua conta:"; "auth_reset_password_message" = "Para resettar a senha de sua conta Matrix, entre o endereço de email linkado a sua conta:";
"auth_reset_password_missing_email" = "O email linkado à sua conta deve ser entrado."; "auth_reset_password_missing_email" = "O email linkado à sua conta deve ser entrado.";
"auth_reset_password_missing_password" = "Uma nova senha deve ser entrada."; "auth_reset_password_missing_password" = "Uma nova senha deve ser entrada.";
"auth_reset_password_email_validation_message" = "Um email tem sido enviado para %@. Uma vez que você tenha seguido o link que ele contém, clique abaixo."; "auth_reset_password_email_validation_message" = "Um email tem sido enviado para %@. Uma vez que você tenha seguido o link que ele contém, clique abaixo.";
"auth_reset_password_next_step_button" = "Eu tenho verificado meu endereço de email"; "auth_reset_password_next_step_button" = "Eu tenho verificado meu endereço de email";
"auth_reset_password_error_unauthorized" = "Falha para verificar endereço de email: assegure que você clicou no link no email"; "auth_reset_password_error_unauthorized" = "Falha para verificar endereço de email: assegure que você clicou no link no email";
"auth_reset_password_error_not_found" = "Seu endereço de email não parece estar associado com uma ID Matrix neste servidorcasa."; "auth_reset_password_error_not_found" = "Seu endereço de email não parece estar associado com uma ID Matrix neste servidorcasa.";
"auth_reset_password_success_message" = "Sua senha tem sido resettada.\n\nVocê tem sido feito logout de todas as sessões e não vai mais receber notificações push. Para re-habilitar notificações, refaça login em cada dispositivo."; "auth_reset_password_success_message" = "A senha de sua conta Matrix tem sido resettada.\n\nVocê tem sido feito logout de todas as sessões e não vai mais receber notificações push. Para re-habilitar notificações, refaça login em cada dispositivo.";
"auth_add_email_and_phone_warning" = "Registro com email e número de telefone ao mesmo tempo não é suportado ainda até que a api exista. Somente o número de telefone vai ser levado em conta. Você pode adicionar seu email a seu perfil em ajustes."; "auth_add_email_and_phone_warning" = "Registro com email e número de telefone ao mesmo tempo não é suportado ainda até que a api exista. Somente o número de telefone vai ser levado em conta. Você pode adicionar seu email a seu perfil em ajustes.";
"room_creation_appearance" = "Aparência"; "room_creation_appearance" = "Aparência";
"room_creation_appearance_name" = "Nome"; "room_creation_appearance_name" = "Nome";
@ -105,7 +105,7 @@
"room_recents_people_section" = "PESSOAS"; "room_recents_people_section" = "PESSOAS";
"room_recents_conversations_section" = "SALAS"; "room_recents_conversations_section" = "SALAS";
"room_recents_no_conversation" = "Nenhuma sala"; "room_recents_no_conversation" = "Nenhuma sala";
"room_recents_low_priority_section" = "BAIXA PRIORIDADE"; "room_recents_low_priority_section" = "PRIORIDADE BAIXA";
"room_recents_invites_section" = "CONVITES"; "room_recents_invites_section" = "CONVITES";
"room_recents_start_chat_with" = "Começar chat"; "room_recents_start_chat_with" = "Começar chat";
"room_recents_create_empty_room" = "Criar sala"; "room_recents_create_empty_room" = "Criar sala";
@ -224,7 +224,7 @@
"room_event_action_redact" = "Remover"; "room_event_action_redact" = "Remover";
"room_event_action_more" = "Mais"; "room_event_action_more" = "Mais";
"room_event_action_share" = "Compartilhar"; "room_event_action_share" = "Compartilhar";
"room_event_action_permalink" = "Permalink"; "room_event_action_permalink" = "Copiar link para mensagem";
"room_event_action_view_source" = "Visualizar Fonte"; "room_event_action_view_source" = "Visualizar Fonte";
"room_event_action_view_decrypted_source" = "Visualizar Fonte Decriptada"; "room_event_action_view_decrypted_source" = "Visualizar Fonte Decriptada";
"room_event_action_report" = "Reportar conteúdo"; "room_event_action_report" = "Reportar conteúdo";
@ -347,12 +347,12 @@
"settings_send_crash_report" = "Enviar dados de cash & uso anon"; "settings_send_crash_report" = "Enviar dados de cash & uso anon";
"settings_enable_rageshake" = "Agitar com raiva para reportar bug"; "settings_enable_rageshake" = "Agitar com raiva para reportar bug";
"settings_clear_cache" = "Limpar cache"; "settings_clear_cache" = "Limpar cache";
"settings_change_password" = "Mudar senha"; "settings_change_password" = "Mudar senha de conta Matrix";
"settings_old_password" = "senha antiga"; "settings_old_password" = "senha antiga";
"settings_new_password" = "senha nova"; "settings_new_password" = "senha nova";
"settings_confirm_password" = "confirmar senha"; "settings_confirm_password" = "confirmar senha";
"settings_fail_to_update_password" = "Falha para atualizar senha"; "settings_fail_to_update_password" = "Falha para atualizar senha de conta Matrix";
"settings_password_updated" = "Sua senha tem sido atualizada"; "settings_password_updated" = "A senha de sua conta Matrix tem sido atualizada";
"settings_crypto_device_name" = "Nome de sessão: "; "settings_crypto_device_name" = "Nome de sessão: ";
"settings_crypto_device_id" = "\nID de sessão: "; "settings_crypto_device_id" = "\nID de sessão: ";
"settings_crypto_device_key" = "\nChave de sessão:\n"; "settings_crypto_device_key" = "\nChave de sessão:\n";
@ -366,7 +366,7 @@
"room_details_room_name" = "Nome de Sala"; "room_details_room_name" = "Nome de Sala";
"room_details_topic" = "Tópico"; "room_details_topic" = "Tópico";
"room_details_favourite_tag" = "Favoritar"; "room_details_favourite_tag" = "Favoritar";
"room_details_low_priority_tag" = "Baixa prioridade"; "room_details_low_priority_tag" = "Prioridade baixa";
"room_details_mute_notifs" = "Mutar notificações"; "room_details_mute_notifs" = "Mutar notificações";
"room_details_direct_chat" = "Chat Direto"; "room_details_direct_chat" = "Chat Direto";
"room_details_access_section" = "Quem pode acessar esta sala?"; "room_details_access_section" = "Quem pode acessar esta sala?";
@ -550,7 +550,7 @@
"deactivate_account_forget_messages_information_part3" = ": isto vai causar usuárias/os futuras/os terem uma visualização incompleta de conversas)"; "deactivate_account_forget_messages_information_part3" = ": isto vai causar usuárias/os futuras/os terem uma visualização incompleta de conversas)";
"deactivate_account_validate_action" = "Desativar conta"; "deactivate_account_validate_action" = "Desativar conta";
"deactivate_account_password_alert_title" = "Desativar Conta"; "deactivate_account_password_alert_title" = "Desativar Conta";
"deactivate_account_password_alert_message" = "Para continuar, por favor entre sua senha"; "deactivate_account_password_alert_message" = "Para continuar, por favor entre a senha de sua conta Matrix";
// Re-request confirmation dialog // Re-request confirmation dialog
"rerequest_keys_alert_title" = "Requisição Enviada"; "rerequest_keys_alert_title" = "Requisição Enviada";
"rerequest_keys_alert_message" = "Por favor lance %@ num outro dispositivo que possa decriptar a mensagem para que ele possa enviar as chaves para esta sessão."; "rerequest_keys_alert_message" = "Por favor lance %@ num outro dispositivo que possa decriptar a mensagem para que ele possa enviar as chaves para esta sessão.";
@ -600,7 +600,7 @@
"key_backup_setup_intro_manual_export_info" = "(Avançada)"; "key_backup_setup_intro_manual_export_info" = "(Avançada)";
"key_backup_setup_intro_manual_export_action" = "Exportar chaves manualmente"; "key_backup_setup_intro_manual_export_action" = "Exportar chaves manualmente";
"key_backup_setup_passphrase_title" = "Assegure seu backup com uma Frase de Segurança"; "key_backup_setup_passphrase_title" = "Assegure seu backup com uma Frase de Segurança";
"key_backup_setup_passphrase_info" = "Nós vamos armazenar uma cópia encriptada de suas chaves em nosso servidor. Proteja seu backup com uma frase para mantê-lo seguro.\n\nPara segurança máxima, esta deveria ser diferente da senha de sua conta."; "key_backup_setup_passphrase_info" = "Nós vamos armazenar uma cópia encriptada de suas chaves em nosso servidor. Proteja seu backup com uma frase para mantê-lo seguro.\n\nPara segurança máxima, esta deveria ser diferente da senha de sua conta Matrix.";
"key_backup_setup_passphrase_passphrase_title" = "Entrar"; "key_backup_setup_passphrase_passphrase_title" = "Entrar";
"key_backup_setup_passphrase_passphrase_placeholder" = "Entrar frase"; "key_backup_setup_passphrase_passphrase_placeholder" = "Entrar frase";
"key_backup_setup_passphrase_passphrase_valid" = "Ótimo!"; "key_backup_setup_passphrase_passphrase_valid" = "Ótimo!";
@ -667,7 +667,7 @@
"settings_calls_stun_server_fallback_description" = "Permitir servidor fallback de assistência de chamadas %@ quando seu servidorcasa não oferece um (seu endereço de IP seria compartilhado durante uma chamada)."; "settings_calls_stun_server_fallback_description" = "Permitir servidor fallback de assistência de chamadas %@ quando seu servidorcasa não oferece um (seu endereço de IP seria compartilhado durante uma chamada).";
"security_settings_blacklist_unverified_devices" = "Nunca enviar mensagens para sessões não-confiadas"; "security_settings_blacklist_unverified_devices" = "Nunca enviar mensagens para sessões não-confiadas";
"security_settings_blacklist_unverified_devices_description" = "Verificar todas as sessões de um/uma usuário(a) para marcá-las como confiadas e enviar mensagens para ele/ela."; "security_settings_blacklist_unverified_devices_description" = "Verificar todas as sessões de um/uma usuário(a) para marcá-las como confiadas e enviar mensagens para ele/ela.";
"security_settings_user_password_description" = "Confirme sua identidade ao entrar a senha de sua conta"; "security_settings_user_password_description" = "Confirme sua identidade ao entrar a senha de sua conta Matrix";
// Manage session // Manage session
"manage_session_title" = "Gerenciar sessão"; "manage_session_title" = "Gerenciar sessão";
"manage_session_name" = "Nome de sessão"; "manage_session_name" = "Nome de sessão";
@ -740,7 +740,7 @@
"key_verification_scan_confirmation_scanning_device_waiting_other" = "Esperando por outro dispositivo…"; "key_verification_scan_confirmation_scanning_device_waiting_other" = "Esperando por outro dispositivo…";
"user_verification_start_waiting_partner" = "Esperando por %@…"; "user_verification_start_waiting_partner" = "Esperando por %@…";
"settings_devices_description" = "O nome público de uma sessão é visível para pessoas com quem você se comunica"; "settings_devices_description" = "O nome público de uma sessão é visível para pessoas com quem você se comunica";
"security_settings_crypto_sessions_description_2" = "Se você não reconhece um login, mude sua senha e resette Backup Seguro."; "security_settings_crypto_sessions_description_2" = "Se você não reconhece um login, mude a senha de sua conta Matrix e resette Backup Seguro.";
"security_settings_export_keys_manually" = "Exportar chaves manualmente"; "security_settings_export_keys_manually" = "Exportar chaves manualmente";
"identity_server_settings_change" = "Mudar"; "identity_server_settings_change" = "Mudar";
"identity_server_settings_alert_change_title" = "Mudar servidor de identidade"; "identity_server_settings_alert_change_title" = "Mudar servidor de identidade";
@ -771,7 +771,7 @@
"user_verification_session_details_verify_action_current_user_manually" = "Verificar Manualmente por Texto"; "user_verification_session_details_verify_action_current_user_manually" = "Verificar Manualmente por Texto";
"user_verification_session_details_verify_action_other_user" = "Verificar manualmente"; "user_verification_session_details_verify_action_other_user" = "Verificar manualmente";
"auth_add_email_phone_message_2" = "Defina um email para recuperação de conta. Use depois email ou telefone para ser opcionalmente descobertável por pessoas que conhecem você."; "auth_add_email_phone_message_2" = "Defina um email para recuperação de conta. Use depois email ou telefone para ser opcionalmente descobertável por pessoas que conhecem você.";
"auth_email_is_required" = "Nenhum servidor de identidade está configurado então você não pode adicionar um endereço de email a fim de resettar sua senha no futuro."; "auth_email_is_required" = "Nenhum servidor de identidade está configurado então você não pode adicionar um endereço de email a fim de resettar a senha de sua conta Matrix no futuro.";
"auth_softlogout_clear_data_message_1" = "Aviso: Seus dados pessoais (incluindo chaves de encriptação) ainda estão armazenados neste dispositivo."; "auth_softlogout_clear_data_message_1" = "Aviso: Seus dados pessoais (incluindo chaves de encriptação) ainda estão armazenados neste dispositivo.";
"auth_softlogout_clear_data_sign_out" = "Fazer signout"; "auth_softlogout_clear_data_sign_out" = "Fazer signout";
"room_creation_error_invite_user_by_email_without_identity_server" = "Nenhum servidor de identidade está configurado então você não pode adicionar um/uma participante com um email."; "room_creation_error_invite_user_by_email_without_identity_server" = "Nenhum servidor de identidade está configurado então você não pode adicionar um/uma participante com um email.";
@ -818,9 +818,9 @@
// Accessibility // Accessibility
"accessibility_checkbox_label" = "checkbox"; "accessibility_checkbox_label" = "checkbox";
"auth_add_phone_message_2" = "Defina um número de telefone, e depois para ser opcionalmente descobertável por pessoas que conhecem você."; "auth_add_phone_message_2" = "Defina um número de telefone, e depois para ser opcionalmente descobertável por pessoas que conhecem você.";
"auth_phone_is_required" = "Nenhum servidor de identidade está configurado então você não pode adicionar um número de telefone a fim de resettar sua senha no futuro."; "auth_phone_is_required" = "Nenhum servidor de identidade está configurado então você não pode adicionar um número de telefone a fim de resettar a senha de sua conta Matrix no futuro.";
"auth_forgot_password_error_no_configured_identity_server" = "Nenhum servidor de identidade está configurado: adicione um para resettar sua senha."; "auth_forgot_password_error_no_configured_identity_server" = "Nenhum servidor de identidade está configurado: adicione um para resettar a senha de sua conta Matrix.";
"auth_reset_password_error_is_required" = "Nenhum servidor de identidade está configurado: adicione um em opções de servidor para resettar sua senha."; "auth_reset_password_error_is_required" = "Nenhum servidor de identidade está configurado: adicione um em opções de servidor para resettar a senha de sua conta Matrix.";
"auth_softlogout_signed_out" = "Você está com signout feito"; "auth_softlogout_signed_out" = "Você está com signout feito";
"auth_softlogout_sign_in" = "Fazer Signin"; "auth_softlogout_sign_in" = "Fazer Signin";
"auth_softlogout_recover_encryption_keys" = "Faça signin para recuperar chaves de encriptação armazenadas exclusivamente neste dispositivo. Você precisa delas para ler todas suas mensagens seguras em qualquer dispositivo."; "auth_softlogout_recover_encryption_keys" = "Faça signin para recuperar chaves de encriptação armazenadas exclusivamente neste dispositivo. Você precisa delas para ler todas suas mensagens seguras em qualquer dispositivo.";
@ -853,7 +853,7 @@
"settings_three_pids_management_information_part2" = "Descoberta"; "settings_three_pids_management_information_part2" = "Descoberta";
"settings_labs_message_reaction" = "Reagir a mensagens com emoji"; "settings_labs_message_reaction" = "Reagir a mensagens com emoji";
"settings_add_3pid_password_title_msidsn" = "Adicionar número de telefone"; "settings_add_3pid_password_title_msidsn" = "Adicionar número de telefone";
"settings_add_3pid_password_message" = "Para continuar, por favor entre sua senha"; "settings_add_3pid_password_message" = "Para continuar, por favor entre a senha de sua conta Matrix";
"settings_add_3pid_invalid_password_message" = "Credenciais inválidas"; "settings_add_3pid_invalid_password_message" = "Credenciais inválidas";
"settings_key_backup_button_connect" = "Conectar esta sessão a Backup de Chave"; "settings_key_backup_button_connect" = "Conectar esta sessão a Backup de Chave";
"settings_discovery_no_identity_server" = "Você não está atualmente usando um servidor de identidade. Para ser descobertável por contatos existentes, adicione um."; "settings_discovery_no_identity_server" = "Você não está atualmente usando um servidor de identidade. Para ser descobertável por contatos existentes, adicione um.";
@ -1121,7 +1121,7 @@
"secrets_setup_recovery_key_storage_alert_message" = "✓ Imprima-a e armazene-a em algum lugar seguro\n✓ Salve-a em uma chave USB ou drive de backup \n✓ Copie-a para seu armazenamento nuvem pessoal"; "secrets_setup_recovery_key_storage_alert_message" = "✓ Imprima-a e armazene-a em algum lugar seguro\n✓ Salve-a em uma chave USB ou drive de backup \n✓ Copie-a para seu armazenamento nuvem pessoal";
"secrets_setup_recovery_passphrase_title" = "Definir uma Frase de Segurança"; "secrets_setup_recovery_passphrase_title" = "Definir uma Frase de Segurança";
"secrets_setup_recovery_passphrase_information" = "Entre uma frase de segurança que só você conheça, usada para assegurar segredos em seu servidor."; "secrets_setup_recovery_passphrase_information" = "Entre uma frase de segurança que só você conheça, usada para assegurar segredos em seu servidor.";
"secrets_setup_recovery_passphrase_additional_information" = "Não use a senha de sua conta."; "secrets_setup_recovery_passphrase_additional_information" = "Não use a senha de sua conta Matrix.";
"secrets_setup_recovery_passphrase_confirm_information" = "Entre sua Frase de Segurança de novo para confirmá-la."; "secrets_setup_recovery_passphrase_confirm_information" = "Entre sua Frase de Segurança de novo para confirmá-la.";
"secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Confirmar"; "secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Confirmar";
"secrets_setup_recovery_passphrase_confirm_passphrase_placeholder" = "Confirmar frase"; "secrets_setup_recovery_passphrase_confirm_passphrase_placeholder" = "Confirmar frase";
@ -1212,7 +1212,7 @@
"more" = "Mais"; "more" = "Mais";
"switch" = "Trocar"; "switch" = "Trocar";
"joined" = "Juntou-Se"; "joined" = "Juntou-Se";
"secrets_reset_authentication_message" = "Entre a senha de sua conta para confirmar"; "secrets_reset_authentication_message" = "Entre a senha de sua conta Matrix para confirmar";
"secrets_reset_reset_action" = "Resettar"; "secrets_reset_reset_action" = "Resettar";
"secrets_reset_warning_message" = "Você vai recomeçar com nada de histórico, mensagens, dispositivos confiados ou usuárias(os) confiadas(os)."; "secrets_reset_warning_message" = "Você vai recomeçar com nada de histórico, mensagens, dispositivos confiados ou usuárias(os) confiadas(os).";
"secrets_reset_warning_title" = "Se você resettar tudo"; "secrets_reset_warning_title" = "Se você resettar tudo";
@ -1594,3 +1594,35 @@
"poll_edit_form_update_failure_subtitle" = "Por favor tente de novo"; "poll_edit_form_update_failure_subtitle" = "Por favor tente de novo";
"poll_edit_form_update_failure_title" = "Falha para atualizar sondagem"; "poll_edit_form_update_failure_title" = "Falha para atualizar sondagem";
"poll_edit_form_poll_type" = "Tipo de sondagem"; "poll_edit_form_poll_type" = "Tipo de sondagem";
"location_sharing_post_failure_subtitle" = "%@ não conseguiu enviar sua localização. Por favor tente de novo mais tarde.";
"location_sharing_post_failure_title" = "Nós não conseguimos enviar sua localização";
"home_context_menu_leave" = "Sair";
"home_context_menu_normal_priority" = "Prioridade normal";
"home_context_menu_low_priority" = "Prioridade baixa";
"home_context_menu_unfavourite" = "Remover de Favoritos";
"home_context_menu_favourite" = "Favoritar";
"home_context_menu_unmute" = "Desmutar";
"home_context_menu_mute" = "Mutar";
"home_context_menu_notifications" = "Notificações";
"home_context_menu_make_room" = "Mover para Salas";
"home_context_menu_make_dm" = "Mover para Pessoas";
"event_formatter_message_deleted" = "Mensagem deletada";
"settings_labs_enable_threads" = "Mensageria com threads";
"message_from_a_thread" = "De uma thread";
"threads_empty_show_all_threads" = "Mostrar todas as threads";
"threads_empty_tip" = "Dica: Toque numa mensagem e use “Thread” para começar uma.";
"threads_empty_info_my" = "Responda a uma thread acontecendo ou toque numa mensagem e use “Thread” para começar uma nova.";
"threads_empty_info_all" = "Threads ajudam manter suas conversas em-tópico e fáceis de rastrear.";
"threads_empty_title" = "Mantenha discussões organizadas com threads";
"threads_action_my_threads" = "Minhas threads";
"threads_action_all_threads" = "Todas as threads";
"threads_title" = "Threads";
"thread_copy_link_to_thread" = "Copiar link para thread";
// MARK: Threads
"room_thread_title" = "Thread";
"room_accessibility_thread_more" = "Mais";
"room_accessibility_threads" = "Threads";
"room_event_copy_link_info" = "Link copiado para clipboard.";
"room_event_action_reply_in_thread" = "Thread";
"room_event_action_view_in_room" = "Visualizar em sala";

View file

@ -112,15 +112,15 @@
"auth_reset_password_email_validation_message" = "Na adresu %s bola odoslaná správa. Po kliknutí na odkaz, ktorý obsahuje, kliknite nižšie."; "auth_reset_password_email_validation_message" = "Na adresu %s bola odoslaná správa. Po kliknutí na odkaz, ktorý obsahuje, kliknite nižšie.";
"auth_reset_password_missing_password" = "Musíte zadať nové heslo."; "auth_reset_password_missing_password" = "Musíte zadať nové heslo.";
"auth_reset_password_missing_email" = "Musíte zadať emailovú adresu prepojenú s vašim účtom."; "auth_reset_password_missing_email" = "Musíte zadať emailovú adresu prepojenú s vašim účtom.";
"auth_reset_password_message" = "Ak chcete obnoviť vaše heslo, zadajte emailovú adresu prepojenú s vašim účtom:"; "auth_reset_password_message" = "Ak chcete obnoviť vaše heslo k účtu Matrix, zadajte emailovú adresu prepojenú s vašim účtom:";
"auth_recaptcha_message" = "Tento domovský server by sa rád uistil, že nie ste robot"; "auth_recaptcha_message" = "Tento domovský server by sa rád uistil, že nie ste robot";
"auth_msisdn_validation_error" = "Nie je možné overiť telefónne číslo."; "auth_msisdn_validation_error" = "Nie je možné overiť telefónne číslo.";
"auth_msisdn_validation_message" = "Odoslali sme vám SMS správu, ktorá obsahuje overovací kód. Prosím, zadajte ho nižšie."; "auth_msisdn_validation_message" = "Odoslali sme vám SMS správu, ktorá obsahuje overovací kód. Prosím, zadajte ho nižšie.";
"auth_msisdn_validation_title" = "Čaká sa na overenie"; "auth_msisdn_validation_title" = "Čaká sa na overenie";
"auth_use_server_options" = "Použiť vlastné možnosti servera (pre pokročilých)"; "auth_use_server_options" = "Použiť vlastné možnosti servera (pre pokročilých)";
"auth_email_not_found" = "Nepodarilo sa odoslať e-mail: Táto e-mailová adresa nebola nájdená"; "auth_email_not_found" = "Nepodarilo sa odoslať e-mail: Táto e-mailová adresa nebola nájdená";
"auth_forgot_password_error_no_configured_identity_server" = "Nie je nastavený žiadny server identity: pridajte ho na obnovenie hesla."; "auth_forgot_password_error_no_configured_identity_server" = "Nie je nastavený žiadny server identity: pridajte ho na obnovenie hesla k účtu Matrix.";
"auth_forgot_password" = "Zabudli ste heslo?"; "auth_forgot_password" = "Zabudli ste heslo k účtu Matrix?";
"auth_username_in_use" = "Používateľské meno sa už používa"; "auth_username_in_use" = "Používateľské meno sa už používa";
"auth_password_dont_match" = "Heslá sa nezhodujú"; "auth_password_dont_match" = "Heslá sa nezhodujú";
"auth_phone_in_use" = "Toto telefónne číslo sa už používa"; "auth_phone_in_use" = "Toto telefónne číslo sa už používa";
@ -138,7 +138,7 @@
"auth_invalid_login_param" = "Nesprávne používateľské meno a/alebo heslo"; "auth_invalid_login_param" = "Nesprávne používateľské meno a/alebo heslo";
"auth_identity_server_placeholder" = "URL (napr. https://vector.im)"; "auth_identity_server_placeholder" = "URL (napr. https://vector.im)";
"auth_home_server_placeholder" = "URL (napr. https://matrix.org)"; "auth_home_server_placeholder" = "URL (napr. https://matrix.org)";
"auth_repeat_new_password_placeholder" = "Potvrďte svoje nové heslo"; "auth_repeat_new_password_placeholder" = "Potvrďte svoje nové heslo k účtu Matrix";
"auth_repeat_password_placeholder" = "Zopakovať heslo"; "auth_repeat_password_placeholder" = "Zopakovať heslo";
"auth_phone_placeholder" = "Telefónne číslo"; "auth_phone_placeholder" = "Telefónne číslo";
"auth_optional_phone_placeholder" = "Telefónne číslo (nepovinné)"; "auth_optional_phone_placeholder" = "Telefónne číslo (nepovinné)";
@ -189,7 +189,7 @@
"settings_notifications_disabled_alert_title" = "Oznámenia vypnuté"; "settings_notifications_disabled_alert_title" = "Oznámenia vypnuté";
"settings_device_notifications" = "Oznámenia zariadenia"; "settings_device_notifications" = "Oznámenia zariadenia";
"settings_night_mode" = "Nočný režim"; "settings_night_mode" = "Nočný režim";
"settings_change_password" = "Zmeniť heslo"; "settings_change_password" = "Zmeniť heslo k účtu Matrix";
"settings_first_name" = "Krstné meno"; "settings_first_name" = "Krstné meno";
"settings_display_name" = "Zobrazované meno"; "settings_display_name" = "Zobrazované meno";
"settings_profile_picture" = "Profilový obrázok"; "settings_profile_picture" = "Profilový obrázok";
@ -506,7 +506,7 @@
"room_event_action_delete" = "Vymazať"; "room_event_action_delete" = "Vymazať";
"room_event_action_resend" = "Znovu odoslať"; "room_event_action_resend" = "Znovu odoslať";
"room_event_action_save" = "Uložiť"; "room_event_action_save" = "Uložiť";
"room_event_action_permalink" = "Trvalý odkaz"; "room_event_action_permalink" = "Kopírovať odkaz do správy";
"room_event_action_forward" = "Preposlať"; "room_event_action_forward" = "Preposlať";
"room_event_action_share" = "Zdieľať"; "room_event_action_share" = "Zdieľať";
"room_event_action_more" = "Viac"; "room_event_action_more" = "Viac";
@ -533,10 +533,10 @@
"room_member_power_level_custom_in" = "Vlastné (%@) v %@"; "room_member_power_level_custom_in" = "Vlastné (%@) v %@";
"room_member_power_level_moderator_in" = "Moderátor v %@"; "room_member_power_level_moderator_in" = "Moderátor v %@";
"room_member_power_level_admin_in" = "Správca v %@"; "room_member_power_level_admin_in" = "Správca v %@";
"room_participants_security_information_room_encrypted_for_dm" = "Správy sú tu šifrované end-to-end.\n\nVaše správy sú zabezpečené zámkami a jedinečné kľúče na ich odomknutie máte len vy a príjemca."; "room_participants_security_information_room_encrypted_for_dm" = "Správy sú tu end-to-end šifrované.\n\nVaše správy sú zabezpečené zámkami a jedinečné kľúče na ich odomknutie máte len vy a príjemca.";
"room_participants_security_information_room_encrypted" = "Správy v tejto miestnosti sú šifrované end-to-end.\n\nVaše správy sú zabezpečené zámkami a jedinečné kľúče na ich odomknutie máte len vy a príjemca."; "room_participants_security_information_room_encrypted" = "Správy v tejto miestnosti sú end-to-end šifrované.\n\nVaše správy sú zabezpečené zámkami a jedinečné kľúče na ich odomknutie máte len vy a príjemca.";
"room_participants_security_information_room_not_encrypted" = "Správy v tejto miestnosti nie sú šifrované end-to-end (od vás až k príjemcovi)."; "room_participants_security_information_room_not_encrypted" = "Správy v tejto miestnosti nie sú end-to-end šifrované (od vás až k príjemcovi).";
"room_participants_security_information_room_not_encrypted_for_dm" = "Správy tu nie sú šifrované end-to-end (od vás až k príjemcovi)."; "room_participants_security_information_room_not_encrypted_for_dm" = "Správy tu nie sú end-to-end šifrované (od vás až k príjemcovi).";
"room_participants_security_loading" = "Načítavanie…"; "room_participants_security_loading" = "Načítavanie…";
"room_participants_action_security_status_loading" = "Načítavanie…"; "room_participants_action_security_status_loading" = "Načítavanie…";
"room_participants_action_security_status_warning" = "Upozornenie"; "room_participants_action_security_status_warning" = "Upozornenie";
@ -584,7 +584,7 @@
"directory_cell_title" = "Prezrieť priečinok"; "directory_cell_title" = "Prezrieť priečinok";
"receipt_status_read" = "Prečítané: "; "receipt_status_read" = "Prečítané: ";
"room_details_files" = "Nahrané súbory"; "room_details_files" = "Nahrané súbory";
"settings_ui_theme_auto" = "Automaticky"; "settings_ui_theme_auto" = "Automatický";
// Success from passphrase // Success from passphrase
"key_backup_setup_success_from_passphrase_info" = "Vaše kľúče sa zálohujú.\n\nVáš bezpečnostný kľúč je bezpečnostná sieť - môžete ho použiť na obnovenie prístupu k zašifrovaným správam, ak zabudnete svoju prístupovú frázu.\n\nBezpečnostný kľúč uchovávajte na veľmi bezpečnom mieste, napríklad v správcovi hesiel (alebo v trezore)."; "key_backup_setup_success_from_passphrase_info" = "Vaše kľúče sa zálohujú.\n\nVáš bezpečnostný kľúč je bezpečnostná sieť - môžete ho použiť na obnovenie prístupu k zašifrovaným správam, ak zabudnete svoju prístupovú frázu.\n\nBezpečnostný kľúč uchovávajte na veľmi bezpečnom mieste, napríklad v správcovi hesiel (alebo v trezore).";
@ -619,7 +619,7 @@
"event_formatter_call_has_ended" = "Hovor ukončený"; "event_formatter_call_has_ended" = "Hovor ukončený";
// Image picker // Image picker
"image_picker_action_camera" = "Urobiť fotografiu"; "image_picker_action_camera" = "Spraviť fotku";
"group_participants_invite_malformed_id_title" = "Chyba pozvania"; "group_participants_invite_malformed_id_title" = "Chyba pozvania";
"group_participants_leave_prompt_title" = "Opustiť skupinu"; "group_participants_leave_prompt_title" = "Opustiť skupinu";
@ -729,7 +729,7 @@
// Re-request confirmation dialog // Re-request confirmation dialog
"rerequest_keys_alert_title" = "Žiadosť odoslaná"; "rerequest_keys_alert_title" = "Žiadosť odoslaná";
"deactivate_account_password_alert_message" = "Aby ste mohli pokračovať, prosím zadajte svoje heslo"; "deactivate_account_password_alert_message" = "Aby ste mohli pokračovať, prosím zadajte svoje heslo k účtu Matrix";
"deactivate_account_password_alert_title" = "Deaktivovať účet"; "deactivate_account_password_alert_title" = "Deaktivovať účet";
"deactivate_account_validate_action" = "Deaktivovať účet"; "deactivate_account_validate_action" = "Deaktivovať účet";
"deactivate_account_informations_part2_emphasize" = "Táto akcia je nezvratná."; "deactivate_account_informations_part2_emphasize" = "Táto akcia je nezvratná.";
@ -901,13 +901,13 @@
"room_creation_wait_for_creation" = "Miestnosť sa už vytvára. Počkajte, prosím."; "room_creation_wait_for_creation" = "Miestnosť sa už vytvára. Počkajte, prosím.";
"room_creation_make_public_prompt_msg" = "Ste si istí, že chcete túto konverzáciu zverejniť? Ktokoľvek si môže prečítať vaše správy a pripojiť sa ku konverzácii."; "room_creation_make_public_prompt_msg" = "Ste si istí, že chcete túto konverzáciu zverejniť? Ktokoľvek si môže prečítať vaše správy a pripojiť sa ku konverzácii.";
"social_login_button_title_sign_in" = "Prihlásiť sa s %@"; "social_login_button_title_sign_in" = "Prihlásiť sa s %@";
"auth_reset_password_error_is_required" = "Nie je nastavený žiadny server identity: pridajte ho v možnostiach servera a obnovte heslo."; "auth_reset_password_error_is_required" = "Nie je nastavený žiadny server identity: pridajte ho v možnostiach servera a obnovte heslo k účtu Matrix.";
"security_settings_crosssigning_info_trusted" = "Krížové podpisovanie je povolené. Na základe krížového podpisovania môžete dôverovať iným používateľom a ostatným reláciám, ale nemôžete krížovo podpisovať z tejto relácie, pretože nemá súkromné kľúče na krížové podpisovanie. Dokončite zabezpečenie tejto relácie."; "security_settings_crosssigning_info_trusted" = "Krížové podpisovanie je povolené. Na základe krížového podpisovania môžete dôverovať iným používateľom a ostatným reláciám, ale nemôžete krížovo podpisovať z tejto relácie, pretože nemá súkromné kľúče na krížové podpisovanie. Dokončite zabezpečenie tejto relácie.";
"manage_session_sign_out" = "Odhlásiť sa z tejto relácie"; "manage_session_sign_out" = "Odhlásiť sa z tejto relácie";
"security_settings_crosssigning_info_ok" = "Krížové podpisovanie je pripravené na použitie."; "security_settings_crosssigning_info_ok" = "Krížové podpisovanie je pripravené na použitie.";
"settings_discovery_error_message" = "Vyskytla sa chyba. Prosím, skúste to znova."; "settings_discovery_error_message" = "Vyskytla sa chyba. Prosím, skúste to znova.";
"settings_crypto_blacklist_unverified_devices" = "Šifrovať len overeným reláciám"; "settings_crypto_blacklist_unverified_devices" = "Šifrovať len overeným reláciám";
"settings_password_updated" = "Vaše heslo bolo aktualizované"; "settings_password_updated" = "Vaše heslo k účtu Matrix bolo aktualizované";
"settings_notifications_disabled_alert_message" = "Ak chcete povoliť upozornenia, prejdite do nastavení zariadenia."; "settings_notifications_disabled_alert_message" = "Ak chcete povoliť upozornenia, prejdite do nastavení zariadenia.";
"settings_enable_push_notif" = "Oznámenia na tomto zariadení"; "settings_enable_push_notif" = "Oznámenia na tomto zariadení";
"auth_autodiscover_invalid_response" = "Neplatná odpoveď pri zisťovaní domovského servera"; "auth_autodiscover_invalid_response" = "Neplatná odpoveď pri zisťovaní domovského servera";
@ -1156,7 +1156,7 @@
"identity_server_settings_alert_disconnect_still_sharing_3pid" = "Svoje osobné údaje stále zdieľate na serveri totožností %@.\n\nOdporúčame vám, aby ste pred odpojením odstránili svoje e-mailové adresy a telefónne čísla zo servera totožností."; "identity_server_settings_alert_disconnect_still_sharing_3pid" = "Svoje osobné údaje stále zdieľate na serveri totožností %@.\n\nOdporúčame vám, aby ste pred odpojením odstránili svoje e-mailové adresy a telefónne čísla zo servera totožností.";
"identity_server_settings_disconnect_info" = "Odpojenie od servera totožností bude znamenať, že vás nebudú môcť objaviť iní používatelia a že nebudete môcť pozývať ostatných prostredníctvom e-mailu alebo telefónu."; "identity_server_settings_disconnect_info" = "Odpojenie od servera totožností bude znamenať, že vás nebudú môcť objaviť iní používatelia a že nebudete môcť pozývať ostatných prostredníctvom e-mailu alebo telefónu.";
"identity_server_settings_description" = "V súčasnosti používate %@ na objavovanie existujúcich kontaktov, ktoré poznáte, a na to, aby vás mohli objaviť."; "identity_server_settings_description" = "V súčasnosti používate %@ na objavovanie existujúcich kontaktov, ktoré poznáte, a na to, aby vás mohli objaviť.";
"security_settings_crypto_sessions_description_2" = "Ak nespoznávate prihlásenie, zmeňte si heslo a vykonajte obnovenie funkcie Zabezpečené zálohovanie."; "security_settings_crypto_sessions_description_2" = "Ak nespoznávate prihlásenie, zmeňte si heslo k účtu Matrix a obnovte Zabezpečenú zálohu.";
"settings_identity_server_no_is_description" = "Momentálne nepoužívate žiadny server totožností. Ak chcete objaviť existujúce kontakty, ktoré poznáte, a byť nimi objaviteľní, pridajte jeden vyššie."; "settings_identity_server_no_is_description" = "Momentálne nepoužívate žiadny server totožností. Ak chcete objaviť existujúce kontakty, ktoré poznáte, a byť nimi objaviteľní, pridajte jeden vyššie.";
"settings_analytics_and_crash_data" = "Odoslať údaje o páde a analytické údaje"; "settings_analytics_and_crash_data" = "Odoslať údaje o páde a analytické údaje";
"settings_labs_create_conference_with_jitsi" = "Vytvárajte konferenčné hovory pomocou aplikácie jitsi"; "settings_labs_create_conference_with_jitsi" = "Vytvárajte konferenčné hovory pomocou aplikácie jitsi";
@ -1251,7 +1251,7 @@
"settings_discovery_three_pids_management_information_part1" = "Spravujte, ktoré e-mailové adresy alebo telefónne čísla môžu ostatní používatelia použiť na vaše objavenie a pozvanie do miestností. E-mailové adresy alebo telefónne čísla môžete pridávať alebo odstraňovať z tohto zoznamu v "; "settings_discovery_three_pids_management_information_part1" = "Spravujte, ktoré e-mailové adresy alebo telefónne čísla môžu ostatní používatelia použiť na vaše objavenie a pozvanie do miestností. E-mailové adresy alebo telefónne čísla môžete pridávať alebo odstraňovať z tohto zoznamu v ";
"settings_discovery_terms_not_signed" = "Musíte súhlasiť s podmienkami služby servera totožnosti (%@), aby vás mohli nájsť podľa e-mailovej adresy alebo telefónneho čísla."; "settings_discovery_terms_not_signed" = "Musíte súhlasiť s podmienkami služby servera totožnosti (%@), aby vás mohli nájsť podľa e-mailovej adresy alebo telefónneho čísla.";
"settings_key_backup_button_connect" = "Pripojiť túto reláciu k zálohovaniu kľúčov"; "settings_key_backup_button_connect" = "Pripojiť túto reláciu k zálohovaniu kľúčov";
"settings_fail_to_update_password" = "Nepodarilo sa aktualizovať heslo"; "settings_fail_to_update_password" = "Nepodarilo sa aktualizovať heslo k účtu Matrix";
"settings_labs_enable_ringing_for_group_calls" = "Zvonenie pre skupinové hovory"; "settings_labs_enable_ringing_for_group_calls" = "Zvonenie pre skupinové hovory";
"widget_integration_positive_power_level" = "Úroveň oprávnenia musí byť kladné celé číslo."; "widget_integration_positive_power_level" = "Úroveň oprávnenia musí byť kladné celé číslo.";
"settings_integrations_allow_description" = "Použite správcu integrácií (%@) na spravovanie botov, premostení, widgetov a balíčkov s nálepkami. \n\nSprávcovia integrácie dostávajú konfiguračné údaje a môžu vo vašom mene upravovať widgety, posielať pozvánky do miestnosti a nastavovať úrovne oprávnení."; "settings_integrations_allow_description" = "Použite správcu integrácií (%@) na spravovanie botov, premostení, widgetov a balíčkov s nálepkami. \n\nSprávcovia integrácie dostávajú konfiguračné údaje a môžu vo vašom mene upravovať widgety, posielať pozvánky do miestnosti a nastavovať úrovne oprávnení.";
@ -1262,7 +1262,7 @@
"settings_room_invitations" = "Pozvánky do miestnosti"; "settings_room_invitations" = "Pozvánky do miestnosti";
"settings_global_settings_info" = "Všeobecné nastavenia oznámení sú k dispozícii vo webovom klientovi %@"; "settings_global_settings_info" = "Všeobecné nastavenia oznámení sú k dispozícii vo webovom klientovi %@";
"settings_confirm_media_size_description" = "Keď je táto funkcia zapnutá, budete vyzvaní, aby ste potvrdili, v akej veľkosti sa budú obrázky a videá odosielať."; "settings_confirm_media_size_description" = "Keď je táto funkcia zapnutá, budete vyzvaní, aby ste potvrdili, v akej veľkosti sa budú obrázky a videá odosielať.";
"settings_three_pids_management_information_part1" = "Tu môžete spravovať e-mailové adresy alebo telefónne čísla, ktoré môžete použiť na prihlásenie alebo obnovenie účtu. Ovládajte, kto vás môže nájsť v "; "settings_three_pids_management_information_part1" = "Tu môžete spravovať e-mailové adresy alebo telefónne čísla, ktoré môžete použiť na prihlásenie alebo obnovenie účtu. Ovládajte, kto vás môže nájsť v sekcii ";
"settings_fail_to_update_profile" = "Nepodarilo sa aktualizovať profil"; "settings_fail_to_update_profile" = "Nepodarilo sa aktualizovať profil";
"settings_email_address_placeholder" = "Zadajte svoju e-mailovú adresu"; "settings_email_address_placeholder" = "Zadajte svoju e-mailovú adresu";
"settings_remove_phone_prompt_msg" = "Určite chcete odstrániť telefónne číslo %@?"; "settings_remove_phone_prompt_msg" = "Určite chcete odstrániť telefónne číslo %@?";
@ -1283,10 +1283,10 @@
"auth_softlogout_recover_encryption_keys" = "Prihláste sa, aby ste obnovili šifrovacie kľúče uložené výlučne v tomto zariadení. Potrebujete ich na čítanie všetkých svojich zabezpečených správ na akomkoľvek zariadení."; "auth_softlogout_recover_encryption_keys" = "Prihláste sa, aby ste obnovili šifrovacie kľúče uložené výlučne v tomto zariadení. Potrebujete ich na čítanie všetkých svojich zabezpečených správ na akomkoľvek zariadení.";
"auth_softlogout_reason" = "Váš správca domovského servera (%1$@) vás odhlásil z vášho účtu %2$@ (%3$@)."; "auth_softlogout_reason" = "Váš správca domovského servera (%1$@) vás odhlásil z vášho účtu %2$@ (%3$@).";
"auth_add_email_and_phone_warning" = "Registrácia pomocou e-mailu a telefónneho čísla naraz zatiaľ nie je podporovaná, kým nebude existovať api. Do úvahy sa bude brať iba telefónne číslo. Svoj e-mail môžete pridať do svojho profilu v nastaveniach."; "auth_add_email_and_phone_warning" = "Registrácia pomocou e-mailu a telefónneho čísla naraz zatiaľ nie je podporovaná, kým nebude existovať api. Do úvahy sa bude brať iba telefónne číslo. Svoj e-mail môžete pridať do svojho profilu v nastaveniach.";
"auth_reset_password_success_message" = "Vaše heslo bolo obnovené.\n\nBoli ste odhlásení zo všetkých relácií a už nebudete dostávať push oznámenia. Ak chcete opätovne povoliť oznámenia, znovu sa prihláste na každom zariadení."; "auth_reset_password_success_message" = "Vaše heslo k účtu Matrix bolo obnovené.\n\nBoli ste odhlásení zo všetkých relácií a už nebudete dostávať push oznámenia. Ak chcete opätovne povoliť oznámenia, znovu sa prihláste na každom zariadení.";
"auth_untrusted_id_server" = "Server totožností nie je dôveryhodný"; "auth_untrusted_id_server" = "Server totožností nie je dôveryhodný";
"auth_phone_is_required" = "Nie je nastavený žiadny server totožností, takže nemôžete pridať e-telefónne číslo, aby ste mohli v budúcnosti obnoviť svoje heslo."; "auth_phone_is_required" = "Nie je nastavený žiadny server totožností, takže nemôžete pridať e-telefónne číslo, aby ste mohli v budúcnosti obnoviť svoje heslo k účtu Matrix.";
"auth_email_is_required" = "Nie je nastavený žiadny server totožností, takže nemôžete pridať e-mailovú adresu, aby ste mohli v budúcnosti obnoviť svoje heslo."; "auth_email_is_required" = "Nie je nastavený žiadny server totožností, takže nemôžete pridať e-mailovú adresu, aby ste mohli v budúcnosti obnoviť svoje heslo k účtu Matrix.";
"auth_add_email_phone_message_2" = "Nastavte si e-mail na obnovenie účtu. Neskôr môžete voliteľne použiť e-mail alebo telefón, aby vás mohli nájsť ľudia, ktorí vás poznajú."; "auth_add_email_phone_message_2" = "Nastavte si e-mail na obnovenie účtu. Neskôr môžete voliteľne použiť e-mail alebo telefón, aby vás mohli nájsť ľudia, ktorí vás poznajú.";
"cross_signing_setup_banner_subtitle" = "Jednoduchšie overenie ostatných zariadení"; "cross_signing_setup_banner_subtitle" = "Jednoduchšie overenie ostatných zariadení";
"room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "Šifrovať len overeným reláciám"; "room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "Šifrovať len overeným reláciám";
@ -1296,9 +1296,9 @@
"room_intro_cell_information_multiple_dm_sentence2" = "V tejto konverzácii ste len vy, pokiaľ niekto z vás niekoho nepozve, aby sa pripojil."; "room_intro_cell_information_multiple_dm_sentence2" = "V tejto konverzácii ste len vy, pokiaľ niekto z vás niekoho nepozve, aby sa pripojil.";
"room_intro_cell_information_dm_sentence2" = "V tejto konverzácii ste len vy dvaja, nikto iný sa nemôže pripojiť."; "room_intro_cell_information_dm_sentence2" = "V tejto konverzácii ste len vy dvaja, nikto iný sa nemôže pripojiť.";
"room_intro_cell_information_room_without_topic_sentence2_part2" = " aby ľudia vedeli, o čom je táto miestnosť."; "room_intro_cell_information_room_without_topic_sentence2_part2" = " aby ľudia vedeli, o čom je táto miestnosť.";
"room_intro_cell_information_room_without_topic_sentence2_part1" = "Pridať tému"; "room_intro_cell_information_room_without_topic_sentence2_part1" = "Pridajte tému";
"room_avatar_view_accessibility_hint" = "Zmeniť obrázok miestnosti"; "room_avatar_view_accessibility_hint" = "Zmeniť obrázok miestnosti";
"invite_friends_share_text" = "Hej, ozvi sa mi na %@: %@"; "invite_friends_share_text" = "Ahoj, ozvi sa mi na %@: %@";
// MARK: - Invite friends // MARK: - Invite friends
@ -1338,11 +1338,11 @@
// Banner // Banner
"cross_signing_setup_banner_title" = "Nastaviť šifrovanie"; "cross_signing_setup_banner_title" = "Nastaviť šifrovanie";
"secrets_reset_authentication_message" = "Zadajte heslo svojho účtu pre potvrdenie"; "secrets_reset_authentication_message" = "Zadajte heslo svojho účtu Matrix pre potvrdenie";
"secrets_setup_recovery_passphrase_summary_information" = "Zapamätajte si bezpečnostnú frázu. Môžete ju použiť na odomknutie zašifrovaných správ a údajov."; "secrets_setup_recovery_passphrase_summary_information" = "Zapamätajte si bezpečnostnú frázu. Môžete ju použiť na odomknutie zašifrovaných správ a údajov.";
"secrets_setup_recovery_passphrase_summary_title" = "Uložte si bezpečnostnú frázu"; "secrets_setup_recovery_passphrase_summary_title" = "Uložte si bezpečnostnú frázu";
"secrets_setup_recovery_passphrase_confirm_information" = "Opätovne zadajte bezpečnostnú frázu a potvrďte ju."; "secrets_setup_recovery_passphrase_confirm_information" = "Opätovne zadajte bezpečnostnú frázu a potvrďte ju.";
"secrets_setup_recovery_passphrase_additional_information" = "Nepoužívajte heslo k svojmu účtu."; "secrets_setup_recovery_passphrase_additional_information" = "Nepoužívajte heslo k svojmu účtu Matrix.";
"secrets_setup_recovery_passphrase_information" = "Zadajte bezpečnostnú frázu, ktorú poznáte len vy a ktorá sa používa na zabezpečenie tajomstiev na vašom serveri."; "secrets_setup_recovery_passphrase_information" = "Zadajte bezpečnostnú frázu, ktorú poznáte len vy a ktorá sa používa na zabezpečenie tajomstiev na vašom serveri.";
"secrets_recovery_with_key_recovery_key_title" = "Zadajte"; "secrets_recovery_with_key_recovery_key_title" = "Zadajte";
"secrets_recovery_with_key_information_unlock_secure_backup_with_key" = "Ak chcete pokračovať, zadajte bezpečnostný kľúč."; "secrets_recovery_with_key_information_unlock_secure_backup_with_key" = "Ak chcete pokračovať, zadajte bezpečnostný kľúč.";
@ -1449,7 +1449,7 @@
// Success from recovery key // Success from recovery key
"key_backup_setup_success_from_recovery_key_info" = "Vaše kľúče sa zálohujú.\n\nVytvorte si kópiu tohto bezpečnostného kľúča a uschovajte ho na bezpečnom mieste."; "key_backup_setup_success_from_recovery_key_info" = "Vaše kľúče sa zálohujú.\n\nVytvorte si kópiu tohto bezpečnostného kľúča a uschovajte ho na bezpečnom mieste.";
"key_backup_setup_passphrase_passphrase_invalid" = "Skúste pridať slovo"; "key_backup_setup_passphrase_passphrase_invalid" = "Skúste pridať slovo";
"key_backup_setup_passphrase_info" = "Šifrovanú kópiu vašich kľúčov uložíme na našom serveri. Chráňte svoju zálohu frázou, aby bola bezpečná.\n\nV záujme maximálneho zabezpečenia by sa mala líšiť od hesla k vášmu účtu."; "key_backup_setup_passphrase_info" = "Šifrovanú kópiu vašich kľúčov uložíme na našom serveri. Chráňte svoju zálohu frázou, aby bola bezpečná.\n\nV záujme maximálneho zabezpečenia by sa mala líšiť od hesla k vášmu účtu Matrix.";
"key_backup_setup_intro_info" = "Správy v šifrovaných miestnostiach sú zabezpečené end-to-end šifrovaním. Kľúče na čítanie týchto správ máte len vy a príjemca (príjemcovia).\n\nKľúče si bezpečne zálohujte, aby ste ich nestratili."; "key_backup_setup_intro_info" = "Správy v šifrovaných miestnostiach sú zabezpečené end-to-end šifrovaním. Kľúče na čítanie týchto správ máte len vy a príjemca (príjemcovia).\n\nKľúče si bezpečne zálohujte, aby ste ich nestratili.";
"secure_key_backup_setup_existing_backup_error_delete_it" = "Vymazať"; "secure_key_backup_setup_existing_backup_error_delete_it" = "Vymazať";
"secure_key_backup_setup_existing_backup_error_unlock_it" = "Odomknúť"; "secure_key_backup_setup_existing_backup_error_unlock_it" = "Odomknúť";
@ -1572,7 +1572,7 @@
"room_details_access_section_anyone_apart_from_guest_for_dm" = "Ktokoľvek, kto pozná odkaz, okrem hostí"; "room_details_access_section_anyone_apart_from_guest_for_dm" = "Ktokoľvek, kto pozná odkaz, okrem hostí";
"room_details_access_section_anyone" = "Ktokoľvek, kto pozná odkaz na miestnosť, vrátane hostí"; "room_details_access_section_anyone" = "Ktokoľvek, kto pozná odkaz na miestnosť, vrátane hostí";
"room_details_access_section_invited_only" = "Iba ľudia, ktorí boli pozvaní"; "room_details_access_section_invited_only" = "Iba ľudia, ktorí boli pozvaní";
"room_details_access_section_for_dm" = "Kto má k tomuto prístup?"; "room_details_access_section_for_dm" = "Kto má sem prístup?";
"room_details_access_section" = "Kto má prístup do tejto miestnosti?"; "room_details_access_section" = "Kto má prístup do tejto miestnosti?";
"identity_server_settings_alert_error_invalid_identity_server" = "%@ nie je platný server totožností."; "identity_server_settings_alert_error_invalid_identity_server" = "%@ nie je platný server totožností.";
"identity_server_settings_alert_disconnect" = "Odpojiť sa od servera totožností %@?"; "identity_server_settings_alert_disconnect" = "Odpojiť sa od servera totožností %@?";
@ -1580,13 +1580,13 @@
// AuthenticatedSessionViewControllerFactory // AuthenticatedSessionViewControllerFactory
"authenticated_session_flow_not_supported" = "Táto aplikácia nepodporuje mechanizmus overovania na vašom domovskom serveri."; "authenticated_session_flow_not_supported" = "Táto aplikácia nepodporuje mechanizmus overovania na vašom domovskom serveri.";
"security_settings_user_password_description" = "Potvrďte svoju totožnosť zadaním hesla k účtu"; "security_settings_user_password_description" = "Potvrďte svoju totožnosť zadaním hesla k účtu Matrix";
"security_settings_coming_soon" = "Prepáčte. Táto akcia zatiaľ nie je dostupná v systéme %@ iOS. Na jej nastavenie použite iného klienta Matrix. Systém %@ iOS to bude používať."; "security_settings_coming_soon" = "Prepáčte. Táto akcia zatiaľ nie je dostupná v systéme %@ iOS. Na jej nastavenie použite iného klienta Matrix. Systém %@ iOS to bude používať.";
"security_settings_complete_security_alert_title" = "Dokončiť zabezpečenie"; "security_settings_complete_security_alert_title" = "Dokončiť zabezpečenie";
"security_settings_complete_security_alert_message" = "Najprv by ste mali dokončiť zabezpečenie aktuálnej relácie."; "security_settings_complete_security_alert_message" = "Najprv by ste mali dokončiť zabezpečenie aktuálnej relácie.";
"security_settings_blacklist_unverified_devices_description" = "Overte všetky relácie používateľov, aby ste ich mohli označiť za dôveryhodné a odosielať im správy."; "security_settings_blacklist_unverified_devices_description" = "Overte všetky relácie používateľov, aby ste ich mohli označiť za dôveryhodné a odosielať im správy.";
"security_settings_secure_backup_info_valid" = "Táto relácia zálohuje vaše kľúče."; "security_settings_secure_backup_info_valid" = "Táto relácia zálohuje vaše kľúče.";
"settings_show_NSFW_public_rooms" = "Zobraziť verejné miestnosti nevhodné do práce"; "settings_show_NSFW_public_rooms" = "Zobraziť aj verejné miestnosti nevhodné do práce";
"settings_identity_server_no_is" = "Nebol nastavený server totožností"; "settings_identity_server_no_is" = "Nebol nastavený server totožností";
"settings_discovery_three_pid_details_enter_sms_code_action" = "Zadajte aktivačný kód SMS"; "settings_discovery_three_pid_details_enter_sms_code_action" = "Zadajte aktivačný kód SMS";
"settings_discovery_three_pid_details_information_email" = "Spravujte predvoľby pre túto e-mailovú adresu, ktorú môžu ostatní používatelia použiť na vaše objavenie a pozvanie do miestností. Pridávajte alebo odstraňujte e-mailové adresy v časti Účty."; "settings_discovery_three_pid_details_information_email" = "Spravujte predvoľby pre túto e-mailovú adresu, ktorú môžu ostatní používatelia použiť na vaše objavenie a pozvanie do miestností. Pridávajte alebo odstraňujte e-mailové adresy v časti Účty.";
@ -1610,7 +1610,7 @@
"settings_key_backup_info_signout_warning" = "Zálohujte si šifrovacie kľúče pred odhlásením, aby ste o ne neprišli."; "settings_key_backup_info_signout_warning" = "Zálohujte si šifrovacie kľúče pred odhlásením, aby ste o ne neprišli.";
"settings_key_backup_info_none" = "Vaše kľúče sa z tejto relácie nezálohujú."; "settings_key_backup_info_none" = "Vaše kľúče sa z tejto relácie nezálohujú.";
"settings_key_backup_info" = "Šifrované správy sú zabezpečené end-to-end šifrovaním. Kľúče na čítanie týchto správ máte len vy a príjemca (príjemcovia)."; "settings_key_backup_info" = "Šifrované správy sú zabezpečené end-to-end šifrovaním. Kľúče na čítanie týchto správ máte len vy a príjemca (príjemcovia).";
"settings_add_3pid_password_message" = "Aby ste mohli pokračovať, prosím zadajte svoje heslo"; "settings_add_3pid_password_message" = "Aby ste mohli pokračovať, prosím zadajte svoje heslo k účtu Matrix";
"settings_labs_message_reaction" = "Reagujte na správy pomocou emoji"; "settings_labs_message_reaction" = "Reagujte na správy pomocou emoji";
"settings_labs_e2e_encryption_prompt_message" = "Ak chcete dokončiť nastavenie šifrovania, musíte sa znova prihlásiť."; "settings_labs_e2e_encryption_prompt_message" = "Ak chcete dokončiť nastavenie šifrovania, musíte sa znova prihlásiť.";
"settings_contacts_enable_sync_description" = "Na prepojenie s vašimi kontaktmi sa použije váš server totožností a pomôže im vás nájsť."; "settings_contacts_enable_sync_description" = "Na prepojenie s vašimi kontaktmi sa použije váš server totožností a pomôže im vás nájsť.";
@ -1627,7 +1627,7 @@
"rage_shake_prompt" = "Zdá sa, že rozčúlene trasiete telefónom. Chceli by ste odoslať hlásenie o chybe?"; "rage_shake_prompt" = "Zdá sa, že rozčúlene trasiete telefónom. Chceli by ste odoslať hlásenie o chybe?";
"room_details_addresses_disable_main_address_prompt_msg" = "Nebudete mať zadanú žiadnu hlavnú adresu. Predvolená hlavná adresa pre túto miestnosť sa vyberie náhodne"; "room_details_addresses_disable_main_address_prompt_msg" = "Nebudete mať zadanú žiadnu hlavnú adresu. Predvolená hlavná adresa pre túto miestnosť sa vyberie náhodne";
"settings_enable_rageshake" = "Zúrivo potraste pre nahlásenie chyby"; "settings_enable_rageshake" = "Zúrivo potraste pre nahlásenie chyby";
"settings_ui_theme_picker_message_match_system_theme" = "\"Auto\" zodpovedá systémovej téme vášho zariadenia"; "settings_ui_theme_picker_message_match_system_theme" = "\"Automatický\" zodpovedá systémovej téme vášho zariadenia";
"settings_pin_rooms_with_unread" = "Pripnúť miestnosti s neprečítanými správami"; "settings_pin_rooms_with_unread" = "Pripnúť miestnosti s neprečítanými správami";
"settings_pin_rooms_with_missed_notif" = "Pripnúť miestnosti so zmeškanými oznámeniami"; "settings_pin_rooms_with_missed_notif" = "Pripnúť miestnosti so zmeškanými oznámeniami";
"settings_confirm_media_size" = "Potvrdiť veľkosť pri odosielaní"; "settings_confirm_media_size" = "Potvrdiť veľkosť pri odosielaní";
@ -1688,7 +1688,7 @@
"poll_timeline_total_one_vote" = "1 odovzdaný hlas"; "poll_timeline_total_one_vote" = "1 odovzdaný hlas";
"poll_edit_form_poll_type_closed" = "Uzavretá anketa"; "poll_edit_form_poll_type_closed" = "Uzavretá anketa";
"poll_edit_form_post_failure_title" = "Nepodarilo sa odoslať anketu"; "poll_edit_form_post_failure_title" = "Nepodarilo sa odoslať anketu";
"call_transfer_error_message" = "Prenos hovoru zlyhal"; "call_transfer_error_message" = "Presmerovanie hovoru zlyhalo";
"user_verification_session_details_information_untrusted_other_user" = " sa prihlásil pomocou novej relácie:"; "user_verification_session_details_information_untrusted_other_user" = " sa prihlásil pomocou novej relácie:";
"key_verification_bootstrap_not_setup_message" = "Najprv musíte zaviesť krížové podpisovanie."; "key_verification_bootstrap_not_setup_message" = "Najprv musíte zaviesť krížové podpisovanie.";
"device_verification_emoji_pin" = "Špendlík"; "device_verification_emoji_pin" = "Špendlík";
@ -1706,6 +1706,54 @@
"room_details_addresses_disable_main_address_prompt_title" = "Upozornenie na hlavnú adresu"; "room_details_addresses_disable_main_address_prompt_title" = "Upozornenie na hlavnú adresu";
"manage_session_trusted" = "Dôveryhodný pre vás"; "manage_session_trusted" = "Dôveryhodný pre vás";
"settings_contacts_phonebook_country" = "Krajina telefónneho zoznamu"; "settings_contacts_phonebook_country" = "Krajina telefónneho zoznamu";
"settings_ui_theme_picker_message_invert_colours" = "\"Auto\" používa nastavenia \"Invertovať farby\" vášho zariadenia"; "settings_ui_theme_picker_message_invert_colours" = "\"Automatický\" používa nastavenia \"Invertovať farby\" vášho zariadenia";
"external_link_confirmation_title" = "Prekontrolujte tento odkaz"; "external_link_confirmation_title" = "Prekontrolujte tento odkaz";
"callbar_only_single_active_group" = "Ťuknutím sa pripojíte k skupinovému hovoru (%@)"; "callbar_only_single_active_group" = "Ťuknutím sa pripojíte k skupinovému hovoru (%@)";
// MARK: - Call Transfer
"call_transfer_title" = "Presmerovať";
// Events formatter
"event_formatter_member_updates" = "%tu zmeny členstva";
"location_sharing_post_failure_subtitle" = "%@ sa nepodarilo odoslať vašu polohu. Skúste to prosím neskôr.";
"location_sharing_post_failure_title" = "Nepodarilo sa nám odoslať vašu polohu";
"space_tag" = "priestor";
"home_context_menu_leave" = "Opustiť";
"home_context_menu_normal_priority" = "Normálna priorita";
"home_context_menu_low_priority" = "Nízka priorita";
"home_context_menu_unfavourite" = "Odstrániť z obľúbených";
"home_context_menu_favourite" = "Obľúbené";
"home_context_menu_unmute" = "Zrušiť stlmenie";
"home_context_menu_mute" = "Stlmiť";
"home_context_menu_notifications" = "Oznámenia";
"home_context_menu_make_dm" = "Presunúť do Ľudí";
"bug_report_progress_uploading" = "Nahrávanie záznamu";
"event_formatter_message_deleted" = "Správa vymazaná";
"room_event_copy_link_info" = "Odkaz skopírovaný do schránky.";
"room_event_action_view_in_room" = "Zobraziť v miestnosti";
"home_context_menu_make_room" = "Presunúť do miestností";
"settings_labs_enable_threads" = "Správy vo vláknach";
"message_from_a_thread" = "Z vlákna";
"threads_empty_show_all_threads" = "Zobraziť všetky vlákna";
"threads_empty_tip" = "Tip: Ťuknite na správu a použite \"Vlákno\" pre začatie nového.";
"threads_empty_info_my" = "Odpovedzte na prebiehajúce vlákno alebo ťuknite na správu a použite \"Vlákno\" pre začatie nového.";
"threads_empty_info_all" = "Vlákna pomáhajú udržiavať konverzácie v téme a ľahké sledovanie.";
"threads_empty_title" = "Udržujte diskusie organizované pomocou vlákien";
"threads_action_my_threads" = "Moje vlákna";
"threads_action_all_threads" = "Všetky vlákna";
"threads_title" = "Vlákna";
"thread_copy_link_to_thread" = "Kopírovať odkaz na vlákno";
// MARK: Threads
"room_thread_title" = "Vlákno";
"room_accessibility_thread_more" = "Viac";
"room_accessibility_threads" = "Vlákna";
"room_event_action_reply_in_thread" = "Vlákno";
"settings_calls_stun_server_fallback_button" = "Povoliť náhradnú službu hovorov asistenčného servera";
"settings_calls_stun_server_fallback_description" = "Povoľte náhradné službu hovorov asistenčného servera %@, keď ho váš domovský server neponúka (vaša IP adresa by bola počas volania zdieľaná).";
"deactivate_account_informations_part4_emphasize" = "štandardne nespôsobí, že zabudneme na správy, ktoré ste odoslali. ";
"room_details_fail_to_update_room_join_rule" = "Nepodarí sa aktualizovať pravidlo pripojenia";
"settings_enable_callkit" = "Integrované volanie";
"room_resource_usage_limit_reached_message_contact_3" = " aby ste tento limit zvýšili.";
"room_resource_limit_exceeded_message_contact_3" = " pokračovať v používaní tejto služby.";
"find_your_contacts_title" = "Začnite so zoznamom vašich kontaktov";

View file

@ -46,7 +46,7 @@
"auth_optional_phone_placeholder" = "Numër telefoni (opsionale)"; "auth_optional_phone_placeholder" = "Numër telefoni (opsionale)";
"auth_phone_placeholder" = "Numër telefoni"; "auth_phone_placeholder" = "Numër telefoni";
"auth_repeat_password_placeholder" = "Rijepeni fjalëkalimin"; "auth_repeat_password_placeholder" = "Rijepeni fjalëkalimin";
"auth_repeat_new_password_placeholder" = "Ripohoni fjalëkalimin tuaj të ri"; "auth_repeat_new_password_placeholder" = "Që ta ripohoni, jepni fjalëkalimin e llogarisë tuaj Matrix";
"auth_home_server_placeholder" = "URL (p.sh., https://matrix.org)"; "auth_home_server_placeholder" = "URL (p.sh., https://matrix.org)";
"auth_identity_server_placeholder" = "URL (p.sh., https://vector.im)"; "auth_identity_server_placeholder" = "URL (p.sh., https://vector.im)";
"auth_invalid_login_param" = "Emër përdoruesi dhe/ose fjalëkalim i pasaktë"; "auth_invalid_login_param" = "Emër përdoruesi dhe/ose fjalëkalim i pasaktë";
@ -62,12 +62,12 @@
"auth_untrusted_id_server" = "Shërbyesi i identiteteve sështë i besuar"; "auth_untrusted_id_server" = "Shërbyesi i identiteteve sështë i besuar";
"auth_password_dont_match" = "Fjalëkalimet spërputhen"; "auth_password_dont_match" = "Fjalëkalimet spërputhen";
"auth_username_in_use" = "Emër përdoruesi i përdorur"; "auth_username_in_use" = "Emër përdoruesi i përdorur";
"auth_forgot_password" = "Harruat fjalëkalimin?"; "auth_forgot_password" = "Harruat fjalëkalimin e llogarisë tuaj Matrix?";
"auth_email_not_found" = "Su arrit të dërgohej email: Kjo adresë email su gjet"; "auth_email_not_found" = "Su arrit të dërgohej email: Kjo adresë email su gjet";
"auth_email_validation_message" = "Ju lutemi, që të vazhdojë regjistrimi, kontrolloni email-in tuaj"; "auth_email_validation_message" = "Ju lutemi, që të vazhdojë regjistrimi, kontrolloni email-in tuaj";
"auth_msisdn_validation_title" = "Verifikim Në Pritje të Miratimit"; "auth_msisdn_validation_title" = "Verifikim Në Pritje të Miratimit";
"auth_msisdn_validation_error" = "Sarrihet të verifikohet numër telefoni."; "auth_msisdn_validation_error" = "Sarrihet të verifikohet numër telefoni.";
"auth_reset_password_message" = "Që të ricaktoni fjalëkalimin, jepni adresën email të lidhur me llogarinë tuaj:"; "auth_reset_password_message" = "Që të ricaktoni fjalëkalimin e llogarisë tuaj Matrix, jepni adresën email të lidhur me llogarinë tuaj:";
"auth_reset_password_missing_email" = "Duhet dhënë adresa email e lidhur me llogarinë tuaj."; "auth_reset_password_missing_email" = "Duhet dhënë adresa email e lidhur me llogarinë tuaj.";
"auth_reset_password_missing_password" = "Duhet dhënë një fjalëkalim i ri."; "auth_reset_password_missing_password" = "Duhet dhënë një fjalëkalim i ri.";
// Chat creation // Chat creation
@ -180,7 +180,7 @@
"room_event_action_copy" = "Kopjoje"; "room_event_action_copy" = "Kopjoje";
"room_event_action_quote" = "Citim"; "room_event_action_quote" = "Citim";
"room_event_action_more" = "Më tepër"; "room_event_action_more" = "Më tepër";
"room_event_action_permalink" = "Permalidhje"; "room_event_action_permalink" = "Kopjoje lidhjen te mesazh";
"room_event_action_view_source" = "Shihini Burimin"; "room_event_action_view_source" = "Shihini Burimin";
"room_event_action_report" = "Raportoni lëndë"; "room_event_action_report" = "Raportoni lëndë";
"room_event_action_report_prompt_reason" = "Arsye për raportimin e kësaj lënde"; "room_event_action_report_prompt_reason" = "Arsye për raportimin e kësaj lënde";
@ -257,11 +257,11 @@
"settings_privacy_policy" = "Rregulla Privatësie"; "settings_privacy_policy" = "Rregulla Privatësie";
"settings_third_party_notices" = "Njoftime Palësh të Treta"; "settings_third_party_notices" = "Njoftime Palësh të Treta";
"settings_clear_cache" = "Pastroje fshehtinën"; "settings_clear_cache" = "Pastroje fshehtinën";
"settings_change_password" = "Ndryshoni fjalëkalimin"; "settings_change_password" = "Ndryshoni fjalëkalim llogarie Matrix";
"settings_old_password" = "fjalëkalim i vjetër"; "settings_old_password" = "fjalëkalim i vjetër";
"settings_new_password" = "fjalëkalim i ri"; "settings_new_password" = "fjalëkalim i ri";
"settings_confirm_password" = "ripohoni fjalëkalimin"; "settings_confirm_password" = "ripohoni fjalëkalimin";
"settings_password_updated" = "Fjalëkalimi juaj u përditësua"; "settings_password_updated" = "Fjalëkalimi i llogarisë tuaj Matrix u përditësua";
"settings_crypto_device_name" = "Emër sesioni: "; "settings_crypto_device_name" = "Emër sesioni: ";
"settings_crypto_device_id" = "\nID sesioni: "; "settings_crypto_device_id" = "\nID sesioni: ";
"settings_crypto_device_key" = "\nKyç sesioni:\n"; "settings_crypto_device_key" = "\nKyç sesioni:\n";
@ -426,7 +426,7 @@
"settings_pin_rooms_with_missed_notif" = "Fikso dhomat me njoftime të humbura"; "settings_pin_rooms_with_missed_notif" = "Fikso dhomat me njoftime të humbura";
"settings_pin_rooms_with_unread" = "Fikso dhomat me mesazhe të palexuar"; "settings_pin_rooms_with_unread" = "Fikso dhomat me mesazhe të palexuar";
"settings_labs_create_conference_with_jitsi" = "Krijoni thirrje konferencë me Jitsi-n"; "settings_labs_create_conference_with_jitsi" = "Krijoni thirrje konferencë me Jitsi-n";
"settings_fail_to_update_password" = "Sarrihet të përditësohet fjalëkalimi"; "settings_fail_to_update_password" = "Su arrit të përditësohet fjalëkalimi i llogarisë Matrix";
"settings_deactivate_my_account" = "Çaktivizoje llogarinë time"; "settings_deactivate_my_account" = "Çaktivizoje llogarinë time";
"room_details_mute_notifs" = "Heshtoji njoftimet"; "room_details_mute_notifs" = "Heshtoji njoftimet";
"room_details_access_section_no_address_warning" = "Që të lidhni një dhomë, ajo duhet të ketë një adresë"; "room_details_access_section_no_address_warning" = "Që të lidhni një dhomë, ajo duhet të ketë një adresë";
@ -464,10 +464,10 @@
"deactivate_account_forget_messages_information_part2_emphasize" = "Kujdes"; "deactivate_account_forget_messages_information_part2_emphasize" = "Kujdes";
"deactivate_account_validate_action" = "Çaktivizoje llogarinë"; "deactivate_account_validate_action" = "Çaktivizoje llogarinë";
"deactivate_account_password_alert_title" = "Çaktivizoni Llogarinë"; "deactivate_account_password_alert_title" = "Çaktivizoni Llogarinë";
"deactivate_account_password_alert_message" = "Që të vazhdohet, ju lutemi, jepni fjalëkalimin tuaj"; "deactivate_account_password_alert_message" = "Që të vazhdohet, ju lutemi, jepni fjalëkalimin e llogarisë tuaj Matrix.";
// Re-request confirmation dialog // Re-request confirmation dialog
"rerequest_keys_alert_title" = "Kërkesa u Dërgua"; "rerequest_keys_alert_title" = "Kërkesa u Dërgua";
"auth_reset_password_success_message" = "Fjalëkalimi juaj u ri caktua.\n\nËshtë bërë dalja juaj nga llogaria në krejt sesionet dhe sdo të merrni më njoftime push. Për riaktivizim të njoftimeve, ribëni hyrjen në çdo pajisje."; "auth_reset_password_success_message" = "Fjalëkalimi i llogarisë tuaj Matrix u ricaktua.\n\nËshtë bërë dalja juaj nga llogaria në krejt sesionet dhe sdo të merrni më njoftime push. Për riaktivizim të njoftimeve, ribëni hyrjen në çdo pajisje.";
"room_creation_make_public_prompt_msg" = "Jeni i sigurt se doni ta bëni publike këtë fjalosje? Në një të tillë, mesazhet tuaj mund ti lexojë cilido dhe mund të hyjë në bisedë."; "room_creation_make_public_prompt_msg" = "Jeni i sigurt se doni ta bëni publike këtë fjalosje? Në një të tillë, mesazhet tuaj mund ti lexojë cilido dhe mund të hyjë në bisedë.";
"room_creation_wait_for_creation" = "Po krijohet tashmë një dhomë. Ju lutemi, prisni."; "room_creation_wait_for_creation" = "Po krijohet tashmë një dhomë. Ju lutemi, prisni.";
"contacts_address_book_permission_required" = "Lypset leje për hyrje në kontaktet vendore"; "contacts_address_book_permission_required" = "Lypset leje për hyrje në kontaktet vendore";
@ -580,7 +580,7 @@
"key_backup_setup_intro_title" = "Mos humbni kurrë mesazhe të fshehtëzuar"; "key_backup_setup_intro_title" = "Mos humbni kurrë mesazhe të fshehtëzuar";
"key_backup_setup_intro_info" = "Mesazhet në dhoma të fshehtëzuara sigurohen me fshehtëzim skaj-më-skaj. Vetëm ju dhe marrësi(t) keni kyçet për leximin e këtyre mesazheve.\n\nBëni një kopjeruajtje të sigurt të kyçeve tuaj, për të shmangur humbjen e tyre."; "key_backup_setup_intro_info" = "Mesazhet në dhoma të fshehtëzuara sigurohen me fshehtëzim skaj-më-skaj. Vetëm ju dhe marrësi(t) keni kyçet për leximin e këtyre mesazheve.\n\nBëni një kopjeruajtje të sigurt të kyçeve tuaj, për të shmangur humbjen e tyre.";
"key_backup_setup_intro_setup_action" = "Rregulloje"; "key_backup_setup_intro_setup_action" = "Rregulloje";
"key_backup_setup_passphrase_info" = "Do të depozitojmë një kopje të fshehtëzuar të kyçeve tuaj në shërbyesin tonë. Mbrojeni kopjeruajtjen tuaj me një frazë, për ta mbajtur të parrezikuar.\n\nPër maksimumin e sigurisë, ky duhet të jetë i ndryshëm nga fjalëkalimi juaj për llogarinë."; "key_backup_setup_passphrase_info" = "Do të depozitojmë një kopje të fshehtëzuar të kyçeve tuaj në shërbyesin tonë. Mbrojeni kopjeruajtjen tuaj me një frazë, për ta mbajtur të parrezikuar.\n\nPër maksimumin e sigurisë, ky duhet të jetë i ndryshëm nga fjalëkalimi juaj për llogarinë Matrix.";
"key_backup_setup_passphrase_passphrase_title" = "Jepeni"; "key_backup_setup_passphrase_passphrase_title" = "Jepeni";
"key_backup_setup_passphrase_passphrase_placeholder" = "Jepni frazë"; "key_backup_setup_passphrase_passphrase_placeholder" = "Jepni frazë";
"key_backup_setup_passphrase_passphrase_valid" = "Bukur!"; "key_backup_setup_passphrase_passphrase_valid" = "Bukur!";
@ -812,7 +812,7 @@
"emoji_picker_flags_category" = "Flamuj"; "emoji_picker_flags_category" = "Flamuj";
// MARK: Reaction history // MARK: Reaction history
"reaction_history_title" = "Reagime"; "reaction_history_title" = "Reagime";
"auth_forgot_password_error_no_configured_identity_server" = "Ska shërbyes identitetesh të formësuar: shtoni një të tillë që të ricaktoni fjalëkalimin tuaj."; "auth_forgot_password_error_no_configured_identity_server" = "Ska shërbyes identitetesh të formësuar: shtoni një të tillë që të ricaktoni fjalëkalimin e llogarisë tuaj Matrix.";
"room_creation_error_invite_user_by_email_without_identity_server" = "Ska shërbyes identitetesh të formësua, ndaj smund të shtoni një pjesëmarrës me një email."; "room_creation_error_invite_user_by_email_without_identity_server" = "Ska shërbyes identitetesh të formësua, ndaj smund të shtoni një pjesëmarrës me një email.";
"room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Ska shërbyes identitetesh të formësuar, ndaj smund të nisni një fjalosje me një kontakt duke përdorur një email."; "room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Ska shërbyes identitetesh të formësuar, ndaj smund të nisni një fjalosje me një kontakt duke përdorur një email.";
// Service terms // Service terms
@ -839,9 +839,9 @@
"auth_add_email_message_2" = "Caktoni një email për rimarrje llogarie, dhe që më vonë të jeni (opsionale) i zbulueshëm nga persona që ju njohin."; "auth_add_email_message_2" = "Caktoni një email për rimarrje llogarie, dhe që më vonë të jeni (opsionale) i zbulueshëm nga persona që ju njohin.";
"auth_add_phone_message_2" = "Caktoni një telefon, dhe jini më vonë i zbulueshëm nga persona që ju njohin."; "auth_add_phone_message_2" = "Caktoni një telefon, dhe jini më vonë i zbulueshëm nga persona që ju njohin.";
"auth_add_email_phone_message_2" = "Caktoni një email për rimarrje llogarie. Përdorni më vonë email ose telefon që të jeni (opsionale) i zbulueshëm nga persona që ju njohin."; "auth_add_email_phone_message_2" = "Caktoni një email për rimarrje llogarie. Përdorni më vonë email ose telefon që të jeni (opsionale) i zbulueshëm nga persona që ju njohin.";
"auth_email_is_required" = "Ska të formësuar shërbyes identitetesh, ndaj smund të shtoni adresë email që të mund të ricaktoni fjalëkalimin tuaj në të ardhmen."; "auth_email_is_required" = "Ska të formësuar shërbyes identitetesh, ndaj smund të shtoni adresë email që të mund të ricaktoni fjalëkalimin e llogarisë tuaj Matrix në të ardhmen.";
"auth_phone_is_required" = "Ska të formësuar shërbyes identitetesh, ndaj smund të shtoni numër telefoni që të mund të ricaktoni fjalëkalimin tuaj në të ardhmen."; "auth_phone_is_required" = "Ska të formësuar shërbyes identitetesh, ndaj smund të shtoni numër telefoni që të mund të ricaktoni fjalëkalimin e llogarisë tuaj Matrix në të ardhmen.";
"auth_reset_password_error_is_required" = "Ska të formësuar shërbyes identitetesh: shtoni një të tillë që nga mundësitë rreth shërbyesit, që të ricaktoni fjalëkalimin tuaj."; "auth_reset_password_error_is_required" = "Ska të formësuar shërbyes identitetesh: shtoni një të tillë që nga mundësitë rreth shërbyesit, që të ricaktoni fjalëkalimin e llogarisë tuaj Matrix.";
"contacts_address_book_no_identity_server" = "Ska të formësuar shërbyes identitetesh"; "contacts_address_book_no_identity_server" = "Ska të formësuar shërbyes identitetesh";
"settings_discovery_settings" = "ZBULIM"; "settings_discovery_settings" = "ZBULIM";
"settings_identity_server_settings" = "SHËRBYES IDENTITETESH"; "settings_identity_server_settings" = "SHËRBYES IDENTITETESH";
@ -850,7 +850,7 @@
"settings_three_pids_management_information_part3" = "."; "settings_three_pids_management_information_part3" = ".";
"settings_add_3pid_password_title_email" = "Shtoni adresë email"; "settings_add_3pid_password_title_email" = "Shtoni adresë email";
"settings_add_3pid_password_title_msidsn" = "Shtoni numër telefoni"; "settings_add_3pid_password_title_msidsn" = "Shtoni numër telefoni";
"settings_add_3pid_password_message" = "Që të vazhdohet, ju lutemi, jepni fjalëkalimin tuaj"; "settings_add_3pid_password_message" = "Që të vazhdohet, ju lutemi, jepni fjalëkalimin e llogarisë tuaj Matrix.";
"settings_add_3pid_invalid_password_message" = "Kredenciale të pavlefshme"; "settings_add_3pid_invalid_password_message" = "Kredenciale të pavlefshme";
"settings_devices_description" = "Emri publik i një sesioni është i dukshëm për persona me të cilët komunikoni"; "settings_devices_description" = "Emri publik i një sesioni është i dukshëm për persona me të cilët komunikoni";
"settings_discovery_no_identity_server" = "Spo përdorni ndonjë shërbyes identitetesh. Që të jeni i zbulueshëm nga kontakte ekzistuese që njihni, shtoni një të tillë."; "settings_discovery_no_identity_server" = "Spo përdorni ndonjë shërbyes identitetesh. Që të jeni i zbulueshëm nga kontakte ekzistuese që njihni, shtoni një të tillë.";
@ -1122,7 +1122,7 @@
"secrets_setup_recovery_key_storage_alert_message" = "✓ Shtypeni dhe vendoseni diku të parrezik\n✓ Ruajeni në një diskth USB ose në një pajisje kopjeruajtjesh\n✓ Kopjojeni te depoja juaj personale në re"; "secrets_setup_recovery_key_storage_alert_message" = "✓ Shtypeni dhe vendoseni diku të parrezik\n✓ Ruajeni në një diskth USB ose në një pajisje kopjeruajtjesh\n✓ Kopjojeni te depoja juaj personale në re";
"secrets_setup_recovery_passphrase_title" = "Caktoni një Frazë Sigurie"; "secrets_setup_recovery_passphrase_title" = "Caktoni një Frazë Sigurie";
"secrets_setup_recovery_passphrase_information" = "Jepni një frazë sigurie që e dini vetëm ju, për ta përdorur për sigurim të fshehtash në shërbyesin tuaj."; "secrets_setup_recovery_passphrase_information" = "Jepni një frazë sigurie që e dini vetëm ju, për ta përdorur për sigurim të fshehtash në shërbyesin tuaj.";
"secrets_setup_recovery_passphrase_additional_information" = "Mos përdorni fjalëkalimin e llogarisë tuaj."; "secrets_setup_recovery_passphrase_additional_information" = "Mos përdorni fjalëkalimin e llogarisë tuaj Matrix.";
"secrets_setup_recovery_passphrase_validate_action" = "U bë"; "secrets_setup_recovery_passphrase_validate_action" = "U bë";
"secrets_setup_recovery_passphrase_confirm_information" = "Që ta ripohoni, rijepeni Frazën e Sigurisë."; "secrets_setup_recovery_passphrase_confirm_information" = "Që ta ripohoni, rijepeni Frazën e Sigurisë.";
"secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Ripohojeni"; "secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Ripohojeni";
@ -1132,13 +1132,13 @@
"security_settings_secure_backup_setup" = "Ujdiseni"; "security_settings_secure_backup_setup" = "Ujdiseni";
"security_settings_secure_backup_synchronise" = "Njëkohësoje"; "security_settings_secure_backup_synchronise" = "Njëkohësoje";
"security_settings_secure_backup_delete" = "Fshije Kopjeruajtjen"; "security_settings_secure_backup_delete" = "Fshije Kopjeruajtjen";
"security_settings_user_password_description" = "Ripohoni identitetin tuaj duke dhënë fjalëkalimin e llogarisë tuaj"; "security_settings_user_password_description" = "Ripohoni identitetin tuaj duke dhënë fjalëkalimin e llogarisë tuaj Matrix";
"secure_key_backup_setup_existing_backup_error_title" = "Një kopjeruajtje për mesazhe që ekzistojnë tashmë"; "secure_key_backup_setup_existing_backup_error_title" = "Një kopjeruajtje për mesazhe që ekzistojnë tashmë";
"secure_key_backup_setup_existing_backup_error_info" = "Shkyçeni, që ta ripërdorni te kopjeruajtja e sigurt ose për ta fshirë që të krijoni një kopjeruajtje të re mesazhesh te kopjeruajtja e sigurt."; "secure_key_backup_setup_existing_backup_error_info" = "Shkyçeni, që ta ripërdorni te kopjeruajtja e sigurt ose për ta fshirë që të krijoni një kopjeruajtje të re mesazhesh te kopjeruajtja e sigurt.";
"secure_key_backup_setup_existing_backup_error_unlock_it" = "Shkyçe"; "secure_key_backup_setup_existing_backup_error_unlock_it" = "Shkyçe";
"secure_key_backup_setup_existing_backup_error_delete_it" = "Fshije"; "secure_key_backup_setup_existing_backup_error_delete_it" = "Fshije";
"sign_out_non_existing_key_backup_alert_setup_secure_backup_action" = "Fillo të përdorësh Kojperuajtje të Sigurt"; "sign_out_non_existing_key_backup_alert_setup_secure_backup_action" = "Fillo të përdorësh Kojperuajtje të Sigurt";
"security_settings_crypto_sessions_description_2" = "Nëse nuk njihni një palë kredenciale, ndryshoni fjalëkalimin tuaj dhe riujdisni Kopjeruajtjen e Sigurt."; "security_settings_crypto_sessions_description_2" = "Nëse nuk njihni një palë kredenciale, ndryshoni fjalëkalimin tuaj Matrix dhe riujdisni Kopjeruajtjen e Sigurt.";
"cross_signing_setup_banner_title" = "Ujdisni fshehtëzim"; "cross_signing_setup_banner_title" = "Ujdisni fshehtëzim";
"cross_signing_setup_banner_subtitle" = "Verifikoni më me lehtësi pajisje të tjera"; "cross_signing_setup_banner_subtitle" = "Verifikoni më me lehtësi pajisje të tjera";
// Events formatter with you // Events formatter with you
@ -1229,7 +1229,7 @@
"pin_protection_kick_user_alert_message" = "Shumë gabime, u bë nxjerrja juaj jashtë"; "pin_protection_kick_user_alert_message" = "Shumë gabime, u bë nxjerrja juaj jashtë";
"switch" = "Këmbe"; "switch" = "Këmbe";
"joined" = "Erdhi"; "joined" = "Erdhi";
"secrets_reset_authentication_message" = "Që ta ripohoni, jepni fjalëkalimin e llogarisë tuaj"; "secrets_reset_authentication_message" = "Që ta ripohoni, jepni fjalëkalimin e llogarisë tuaj Matrix";
"secrets_reset_reset_action" = "Riktheji"; "secrets_reset_reset_action" = "Riktheji";
"secrets_reset_warning_message" = "Do të filloni pa historik, pa mesazhe, pajisje të besuara ose përdorues të besuar."; "secrets_reset_warning_message" = "Do të filloni pa historik, pa mesazhe, pajisje të besuara ose përdorues të besuar.";
"secrets_reset_warning_title" = "Nëse ktheni gjithçka te parazgjedhjet"; "secrets_reset_warning_title" = "Nëse ktheni gjithçka te parazgjedhjet";
@ -1615,3 +1615,35 @@
"poll_edit_form_update_failure_subtitle" = "Ju lutemi, riprovoni"; "poll_edit_form_update_failure_subtitle" = "Ju lutemi, riprovoni";
"poll_edit_form_update_failure_title" = "Su arrit të përditësohet anketimi"; "poll_edit_form_update_failure_title" = "Su arrit të përditësohet anketimi";
"poll_edit_form_poll_type" = "Lloj anketimi"; "poll_edit_form_poll_type" = "Lloj anketimi";
"location_sharing_post_failure_subtitle" = "%@ sdërgoi dot vendndodhjen tuaj. Ju lutemi, riprovoni më vonë.";
"location_sharing_post_failure_title" = "Sdërguam dot vendndodhjen tuaj";
"home_context_menu_leave" = "Ikni";
"home_context_menu_normal_priority" = "Përparësi normale";
"home_context_menu_low_priority" = "Me përparësi të ulët";
"home_context_menu_unfavourite" = "Hiqe prej të Parapëlqyerish";
"home_context_menu_favourite" = "Bëje të parapëlqyer";
"home_context_menu_unmute" = "Ktheji zërin";
"home_context_menu_mute" = "Heshtoje";
"home_context_menu_notifications" = "Njoftime";
"home_context_menu_make_room" = "Shpjere te Dhoma";
"home_context_menu_make_dm" = "Shpjere te Persona";
"event_formatter_message_deleted" = "Mesazhi u fshi";
"settings_labs_enable_threads" = "Mesazhe me rrjedha";
"message_from_a_thread" = "Nga një rrjedhë";
"threads_empty_show_all_threads" = "Shfaqi krejt rrjedhat";
"threads_empty_tip" = "Ndihmëz: Prekni një mesazh dhe përdorni “Rrjedhë”, që të nisni një të re.";
"threads_empty_info_my" = "Përgjigjuni te një rrjedhë në zhvillim, ose prekni një mesazh dhe përdorni “Rrjedhë”, që të nisni një të re.";
"threads_empty_info_all" = "Rrjedhat ndihmojnë që të mbahet biseda juaj brenda temës dhe të ndiqet kollaj.";
"threads_empty_title" = "Mbajini diskutimet të sistemuara në rrjedha";
"threads_action_my_threads" = "Rrjedhat e mia";
"threads_action_all_threads" = "Krejt rrjedhat";
"threads_title" = "Rrjedha";
"thread_copy_link_to_thread" = "Kopjoje lidhjen te rrjedha";
// MARK: Threads
"room_thread_title" = "Rrjedhë";
"room_accessibility_thread_more" = "Më tepër";
"room_accessibility_threads" = "Rrjedha";
"room_event_copy_link_info" = "Lidhja u kopjua në të papastër.";
"room_event_action_reply_in_thread" = "Rrjedhë";
"room_event_action_view_in_room" = "Shiheni në dhomë";

View file

@ -47,7 +47,7 @@
"auth_optional_phone_placeholder" = "Telefonnummer (valfritt)"; "auth_optional_phone_placeholder" = "Telefonnummer (valfritt)";
"auth_phone_placeholder" = "Telefonnummer"; "auth_phone_placeholder" = "Telefonnummer";
"auth_repeat_password_placeholder" = "Upprepa lösenord"; "auth_repeat_password_placeholder" = "Upprepa lösenord";
"auth_repeat_new_password_placeholder" = "Bekräfta ditt lösenord"; "auth_repeat_new_password_placeholder" = "Bekräfta ditt nya Matrixkontolösenord";
"auth_identity_server_placeholder" = "URL (t.ex. https://vector.im)"; "auth_identity_server_placeholder" = "URL (t.ex. https://vector.im)";
"auth_invalid_login_param" = "Felaktigt användarnamn och/eller lösenord"; "auth_invalid_login_param" = "Felaktigt användarnamn och/eller lösenord";
"auth_invalid_password" = "Lösenordet är för kort (minst 6 tecken)"; "auth_invalid_password" = "Lösenordet är för kort (minst 6 tecken)";
@ -59,17 +59,17 @@
"auth_missing_email_or_phone" = "E-postadress eller telefonnummer saknas"; "auth_missing_email_or_phone" = "E-postadress eller telefonnummer saknas";
"auth_email_in_use" = "Den här e-postadressen är upptagen"; "auth_email_in_use" = "Den här e-postadressen är upptagen";
"auth_phone_in_use" = "Det här telefonnumret är upptaget"; "auth_phone_in_use" = "Det här telefonnumret är upptaget";
"auth_email_is_required" = "Ingen identitetsserver är konfigurerad, så du kan inte lägga till en e-postadress för att återställa ditt lösenord i framtiden."; "auth_email_is_required" = "Ingen identitetsserver är konfigurerad, så du kan inte lägga till en e-postadress för att återställa ditt Matrixkontolösenord i framtiden.";
"auth_phone_is_required" = "Ingen identitetsserver är konfigurerad, så du kan inte lägga till ett telefonnummer för att återställa ditt lösenord i framtiden."; "auth_phone_is_required" = "Ingen identitetsserver är konfigurerad, så du kan inte lägga till ett telefonnummer för att återställa ditt Matrixkontolösenord i framtiden.";
"auth_password_dont_match" = "Lösenorden matchar inte"; "auth_password_dont_match" = "Lösenorden matchar inte";
"auth_username_in_use" = "Användarnamn upptaget"; "auth_username_in_use" = "Användarnamn upptaget";
"auth_forgot_password" = "Glömt lösenordet?"; "auth_forgot_password" = "Glömt Matrixkontolösenordet?";
"auth_email_not_found" = "Misslyckades att skicka e-post: Den här e-postadressen hittades inte"; "auth_email_not_found" = "Misslyckades att skicka e-post: Den här e-postadressen hittades inte";
"auth_use_server_options" = "Använd anpassade serveralternativ (avancerat)"; "auth_use_server_options" = "Använd anpassade serveralternativ (avancerat)";
"auth_email_validation_message" = "Kolla din e-post för att fortsätta registreringen"; "auth_email_validation_message" = "Kolla din e-post för att fortsätta registreringen";
"auth_msisdn_validation_message" = "Vi har skickat ett SMS med en aktiveringskod. Ange den koden nedan."; "auth_msisdn_validation_message" = "Vi har skickat ett SMS med en aktiveringskod. Ange den koden nedan.";
"auth_msisdn_validation_error" = "Kunde inte verifiera telefonnummer."; "auth_msisdn_validation_error" = "Kunde inte verifiera telefonnummer.";
"auth_reset_password_message" = "För att återställa ditt lösenord, ange e-postadressen som är länkad till ditt konto:"; "auth_reset_password_message" = "För att återställa ditt Matrixkontolösenord, ange e-postadressen som är länkad till ditt konto:";
"auth_reset_password_missing_email" = "Du måste ange e-postadressen som är länkad till ditt konto."; "auth_reset_password_missing_email" = "Du måste ange e-postadressen som är länkad till ditt konto.";
"auth_reset_password_missing_password" = "Ett nytt lösenord måste anges."; "auth_reset_password_missing_password" = "Ett nytt lösenord måste anges.";
"auth_reset_password_email_validation_message" = "Ett e-brev har skickats till %@. När du har följt länken i det, tryck nedan."; "auth_reset_password_email_validation_message" = "Ett e-brev har skickats till %@. När du har följt länken i det, tryck nedan.";
@ -204,7 +204,7 @@
"room_event_action_redact" = "Ta bort"; "room_event_action_redact" = "Ta bort";
"room_event_action_more" = "Mer"; "room_event_action_more" = "Mer";
"room_event_action_share" = "Dela"; "room_event_action_share" = "Dela";
"room_event_action_permalink" = "Permalänk"; "room_event_action_permalink" = "Kopiera länk till meddelande";
"room_event_action_view_source" = "Visa källa"; "room_event_action_view_source" = "Visa källa";
"room_event_action_view_decrypted_source" = "Visa avkrypterad källa"; "room_event_action_view_decrypted_source" = "Visa avkrypterad källa";
"room_event_action_report" = "Rapportera innehåll"; "room_event_action_report" = "Rapportera innehåll";
@ -297,7 +297,7 @@
"settings_add_email_address" = "Lägg till e-postadress"; "settings_add_email_address" = "Lägg till e-postadress";
"settings_phone_number" = "Telefon"; "settings_phone_number" = "Telefon";
"settings_add_phone_number" = "Lägg till telefonnummer"; "settings_add_phone_number" = "Lägg till telefonnummer";
"settings_change_password" = "Ändra lösenord"; "settings_change_password" = "Byt Matrixkontolösenord";
"settings_night_mode" = "Nattläge"; "settings_night_mode" = "Nattläge";
"settings_fail_to_update_profile" = "Misslyckades att uppdatera profil"; "settings_fail_to_update_profile" = "Misslyckades att uppdatera profil";
"settings_three_pids_management_information_part1" = "Hantera vilka e-postadresser eller telefonnummer som du kan använda för att logga in eller återfå ditt konto här. Kontrollera vilka som kan hitta dig i "; "settings_three_pids_management_information_part1" = "Hantera vilka e-postadresser eller telefonnummer som du kan använda för att logga in eller återfå ditt konto här. Kontrollera vilka som kan hitta dig i ";
@ -331,11 +331,11 @@
"settings_old_password" = "gammalt lösenord"; "settings_old_password" = "gammalt lösenord";
"settings_new_password" = "nytt lösenord"; "settings_new_password" = "nytt lösenord";
"settings_confirm_password" = "bekräfta lösenord"; "settings_confirm_password" = "bekräfta lösenord";
"settings_fail_to_update_password" = "Misslyckades att uppdatera lösenord"; "settings_fail_to_update_password" = "Misslyckades att uppdatera Matrixkontolösenord";
"settings_password_updated" = "Ditt lösenord har uppdaterats"; "settings_password_updated" = "Ditt Matrixkontolösenord har uppdaterats";
"settings_add_3pid_password_title_email" = "Lägg till e-postadress"; "settings_add_3pid_password_title_email" = "Lägg till e-postadress";
"settings_add_3pid_password_title_msidsn" = "Lägg till telefonnummer"; "settings_add_3pid_password_title_msidsn" = "Lägg till telefonnummer";
"settings_add_3pid_password_message" = "För att fortsätta, ange ditt lösenord"; "settings_add_3pid_password_message" = "För att fortsätta, ange ditt Matrixkontolösenord";
"settings_add_3pid_invalid_password_message" = "Ogiltiga uppgifter"; "settings_add_3pid_invalid_password_message" = "Ogiltiga uppgifter";
"settings_crypto_export" = "Exportera nycklar"; "settings_crypto_export" = "Exportera nycklar";
"settings_crypto_blacklist_unverified_devices" = "Kryptera endast till verifierade sessioner"; "settings_crypto_blacklist_unverified_devices" = "Kryptera endast till verifierade sessioner";
@ -379,7 +379,7 @@
"security_settings_advanced" = "AVANCERAT"; "security_settings_advanced" = "AVANCERAT";
"security_settings_blacklist_unverified_devices" = "Skicka aldrig meddelanden till obetrodda sessioner"; "security_settings_blacklist_unverified_devices" = "Skicka aldrig meddelanden till obetrodda sessioner";
"security_settings_blacklist_unverified_devices_description" = "Verifiera en användares alla sessioner för att markera den som betrodd och skicka meddelanden till den."; "security_settings_blacklist_unverified_devices_description" = "Verifiera en användares alla sessioner för att markera den som betrodd och skicka meddelanden till den.";
"security_settings_user_password_description" = "Bekräfta din identitet genom att ange ditt kontolösenord"; "security_settings_user_password_description" = "Bekräfta din identitet genom att ange ditt Matrixkontolösenord";
// Manage session // Manage session
"manage_session_title" = "Hantera session"; "manage_session_title" = "Hantera session";
"manage_session_info" = "SESSIONSINFO"; "manage_session_info" = "SESSIONSINFO";
@ -406,11 +406,11 @@
"auth_home_server_placeholder" = "URL (t.ex. https://matrix.org)"; "auth_home_server_placeholder" = "URL (t.ex. https://matrix.org)";
"auth_invalid_user_name" = "Användarnamn får endast innehålla bokstäver, siffror, punkter, bindestreck och understreck"; "auth_invalid_user_name" = "Användarnamn får endast innehålla bokstäver, siffror, punkter, bindestreck och understreck";
"auth_add_email_message_2" = "Ställ in en e-postadress för kontoåterställning, och senare för att valfritt bli upptäckbar av personer som känner dig."; "auth_add_email_message_2" = "Ställ in en e-postadress för kontoåterställning, och senare för att valfritt bli upptäckbar av personer som känner dig.";
"auth_forgot_password_error_no_configured_identity_server" = "Ingen identitetsserver är konfigurerad: lägg till en för att återställa ditt lösenord."; "auth_forgot_password_error_no_configured_identity_server" = "Ingen identitetsserver är konfigurerad: lägg till en för att återställa ditt Matrixkontolösenord.";
"auth_msisdn_validation_title" = "Avvaktar verifiering"; "auth_msisdn_validation_title" = "Avvaktar verifiering";
"auth_recaptcha_message" = "Den här hemservern vill kontrollera att du inte är en robot"; "auth_recaptcha_message" = "Den här hemservern vill kontrollera att du inte är en robot";
"auth_reset_password_error_is_required" = "Ingen identitetsserver är konfigurerad: lägg till en i serveralternativen för att återställa ditt lösenord."; "auth_reset_password_error_is_required" = "Ingen identitetsserver är konfigurerad: lägg till en i serveralternativen för att återställa ditt Matrixkontolösenord.";
"auth_reset_password_success_message" = "Ditt lösenord har återställts.\n\nDu har loggats ut från alla sessioner och kommer inte längre att ta emot pushnotiser. För att återaktivera pushnotiser, logga in igen på varje enhet."; "auth_reset_password_success_message" = "Ditt Matrixkontolösenord har återställts.\n\nDu har loggats ut från alla sessioner och kommer inte längre att ta emot pushnotiser. För att återaktivera pushnotiser, logga in igen på varje enhet.";
"auth_accept_policies" = "Granska och acceptera villkoren för denna hemserver:"; "auth_accept_policies" = "Granska och acceptera villkoren för denna hemserver:";
"auth_softlogout_reason" = "Admin hos din hemserver (%1$@) har loggat ut dig från ditt konto %2$@ (%3$@)."; "auth_softlogout_reason" = "Admin hos din hemserver (%1$@) har loggat ut dig från ditt konto %2$@ (%3$@).";
"auth_softlogout_clear_data" = "Rensa personlig data"; "auth_softlogout_clear_data" = "Rensa personlig data";
@ -653,7 +653,7 @@
"settings_discovery_three_pids_management_information_part3" = "."; "settings_discovery_three_pids_management_information_part3" = ".";
"settings_identity_server_description" = "Med hjälp av identitetsservern som anges ovan kan du upptäcka och upptäckas av befintliga kontakter du känner."; "settings_identity_server_description" = "Med hjälp av identitetsservern som anges ovan kan du upptäcka och upptäckas av befintliga kontakter du känner.";
"settings_identity_server_no_is_description" = "Du använder för närvarande inte en identitetsserver. För att upptäcka och bli upptäckt av befintliga kontakter du känner, lägg till en ovan."; "settings_identity_server_no_is_description" = "Du använder för närvarande inte en identitetsserver. För att upptäcka och bli upptäckt av befintliga kontakter du känner, lägg till en ovan.";
"security_settings_crypto_sessions_description_2" = "Om du inte känner igen en inloggning, ändra ditt lösenord och återställ säker säkerhetskopiering."; "security_settings_crypto_sessions_description_2" = "Om du inte känner igen en inloggning, byt ditt Matrixkontolösenord och återställ säker säkerhetskopiering.";
"security_settings_secure_backup" = "SÄKER SÄKERHETSKOPIERING"; "security_settings_secure_backup" = "SÄKER SÄKERHETSKOPIERING";
"security_settings_secure_backup_description" = "Säkerhetskopiera dina nycklar med din kontodata ifall du förlorar åtkomst till dina sessioner. Dina nycklar kommer att säkras med en unik säkerhetsnyckel."; "security_settings_secure_backup_description" = "Säkerhetskopiera dina nycklar med din kontodata ifall du förlorar åtkomst till dina sessioner. Dina nycklar kommer att säkras med en unik säkerhetsnyckel.";
"security_settings_backup" = "MEDDELANDESÄKERHETSKOPIERING"; "security_settings_backup" = "MEDDELANDESÄKERHETSKOPIERING";
@ -751,7 +751,7 @@
"deactivate_account_forget_messages_information_part3" = ": detta leder till att framtida användare kommer att se en ofullständig bild av konversationer)"; "deactivate_account_forget_messages_information_part3" = ": detta leder till att framtida användare kommer att se en ofullständig bild av konversationer)";
"deactivate_account_validate_action" = "Inaktivera konto"; "deactivate_account_validate_action" = "Inaktivera konto";
"deactivate_account_password_alert_title" = "Inaktivera konto"; "deactivate_account_password_alert_title" = "Inaktivera konto";
"deactivate_account_password_alert_message" = "För att fortsätta, ange ditt lösenord"; "deactivate_account_password_alert_message" = "För att fortsätta, ange ditt Matrixkontolösenord";
"rerequest_keys_alert_message" = "Starta %@ på en annan enhet som dekryptera meddelandet så att den kan skicka nycklarna till den här sessionen."; "rerequest_keys_alert_message" = "Starta %@ på en annan enhet som dekryptera meddelandet så att den kan skicka nycklarna till den här sessionen.";
"secure_key_backup_setup_intro_use_security_key_title" = "Använd en säkerhetsnyckel"; "secure_key_backup_setup_intro_use_security_key_title" = "Använd en säkerhetsnyckel";
"secure_key_backup_setup_intro_use_security_key_info" = "Generera en säkerhetsnyckel att lagra på en säker plats, exempelvis i en lösenordshanterare eller ett kassaskåp."; "secure_key_backup_setup_intro_use_security_key_info" = "Generera en säkerhetsnyckel att lagra på en säker plats, exempelvis i en lösenordshanterare eller ett kassaskåp.";
@ -860,7 +860,7 @@
"key_backup_setup_intro_title" = "Bli aldrig av med krypterade meddelanden"; "key_backup_setup_intro_title" = "Bli aldrig av med krypterade meddelanden";
"key_backup_setup_intro_setup_action_without_existing_backup" = "Börja använda nyckelsäkerhetskopiering"; "key_backup_setup_intro_setup_action_without_existing_backup" = "Börja använda nyckelsäkerhetskopiering";
"key_backup_setup_intro_setup_connect_action_with_existing_backup" = "Anslut den här enheten till nyckelsäkerhetskopiering"; "key_backup_setup_intro_setup_connect_action_with_existing_backup" = "Anslut den här enheten till nyckelsäkerhetskopiering";
"key_backup_setup_passphrase_info" = "Vi kommer lagra en krypterad kopia av dina nycklar på vår server. Skydda din säkerhetskopia med en fras för att hålla den säker.\n\nFör maximal säkerhet bör denna skilja sig från ditt kontolösenord."; "key_backup_setup_passphrase_info" = "Vi kommer lagra en krypterad kopia av dina nycklar på vår server. Skydda din säkerhetskopia med en fras för att hålla den säker.\n\nFör maximal säkerhet bör denna skilja sig från ditt Matrixkontokontolösenord.";
"key_backup_setup_passphrase_setup_recovery_key_info" = "Eller säkra din säkerhetskopia med en säkerhetsnyckel och spara den någonstans säkert."; "key_backup_setup_passphrase_setup_recovery_key_info" = "Eller säkra din säkerhetskopia med en säkerhetsnyckel och spara den någonstans säkert.";
"key_backup_recover_invalid_passphrase" = "Säkerhetskopian kunde inte avkrypteras med den här frasen: vänligen kontrollera att du angav rätt säkerhetsfras."; "key_backup_recover_invalid_passphrase" = "Säkerhetskopian kunde inte avkrypteras med den här frasen: vänligen kontrollera att du angav rätt säkerhetsfras.";
"key_backup_recover_invalid_recovery_key_title" = "Säkerhetsnyckeln matchade inte"; "key_backup_recover_invalid_recovery_key_title" = "Säkerhetsnyckeln matchade inte";
@ -1093,7 +1093,7 @@
"secrets_setup_recovery_key_storage_alert_message" = "✓ Skriv ut den och förvara den säkert\n✓ Spara den på ett USB-minne eller säkerhetskopieringsenhet\n✓ Kopiera den till din personliga molnlagring"; "secrets_setup_recovery_key_storage_alert_message" = "✓ Skriv ut den och förvara den säkert\n✓ Spara den på ett USB-minne eller säkerhetskopieringsenhet\n✓ Kopiera den till din personliga molnlagring";
"secrets_setup_recovery_passphrase_title" = "Sätt en säkerhetsfras"; "secrets_setup_recovery_passphrase_title" = "Sätt en säkerhetsfras";
"secrets_setup_recovery_passphrase_information" = "Ange en säkerhetsfras endast du känner till vilken används för att säkra hemligheter på din server."; "secrets_setup_recovery_passphrase_information" = "Ange en säkerhetsfras endast du känner till vilken används för att säkra hemligheter på din server.";
"secrets_setup_recovery_passphrase_additional_information" = "Använd inte ditt kontolösenord."; "secrets_setup_recovery_passphrase_additional_information" = "Använd inte ditt Matrixkontolösenord.";
"secrets_setup_recovery_passphrase_validate_action" = "Klart"; "secrets_setup_recovery_passphrase_validate_action" = "Klart";
"secrets_setup_recovery_passphrase_confirm_information" = "Ange din säkerhetsfras igen för att bekräfta den."; "secrets_setup_recovery_passphrase_confirm_information" = "Ange din säkerhetsfras igen för att bekräfta den.";
"secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Bekräfta"; "secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Bekräfta";
@ -1180,7 +1180,7 @@
"room_info_list_one_member" = "1 medlem"; "room_info_list_one_member" = "1 medlem";
"room_info_list_several_members" = "%@ medlemmar"; "room_info_list_several_members" = "%@ medlemmar";
"room_info_list_section_other" = "Andra"; "room_info_list_section_other" = "Andra";
"secrets_reset_authentication_message" = "Ange ditt kontolösenord för att bekräfta"; "secrets_reset_authentication_message" = "Ange ditt Matrixkontolösenord för att bekräfta";
"secrets_reset_reset_action" = "Återställ"; "secrets_reset_reset_action" = "Återställ";
"secrets_reset_warning_message" = "så kommer du att börja om utan historik, meddelanden, betrodda enheter eller betrodda användare."; "secrets_reset_warning_message" = "så kommer du att börja om utan historik, meddelanden, betrodda enheter eller betrodda användare.";
"secrets_reset_information" = "Gör bara detta om du inte har någon annan enhet att verifiera den här enheten med."; "secrets_reset_information" = "Gör bara detta om du inte har någon annan enhet att verifiera den här enheten med.";
@ -1217,7 +1217,7 @@
"invite_friends_action" = "Bjud in vänner till %@"; "invite_friends_action" = "Bjud in vänner till %@";
"pin_protection_settings_change_pin" = "Byt PIN-kod"; "pin_protection_settings_change_pin" = "Byt PIN-kod";
"pin_protection_confirm_pin_to_change" = "Bekräfta PIN-kod för att fortsätta"; "pin_protection_confirm_pin_to_change" = "Bekräfta PIN-kod för att byta PIN-kod";
"bug_report_background_mode" = "Fortsätt i bakgrunden"; "bug_report_background_mode" = "Fortsätt i bakgrunden";
"social_login_button_title_sign_up" = "Skapa konto med %@"; "social_login_button_title_sign_up" = "Skapa konto med %@";
"social_login_button_title_sign_in" = "Logga in med %@"; "social_login_button_title_sign_in" = "Logga in med %@";
@ -1468,3 +1468,126 @@
"leave_space_only_action" = "Lämna inga rum"; "leave_space_only_action" = "Lämna inga rum";
"leave_space_message_admin_warning" = "Du är admin för det här utrymmet, försäkra att du har överfört adminrättigheter till en annan medlem innan du lämnar."; "leave_space_message_admin_warning" = "Du är admin för det här utrymmet, försäkra att du har överfört adminrättigheter till en annan medlem innan du lämnar.";
"leave_space_message" = "Är du säker på att du vill lämna %@? Vill du även lämna alla rum och utrymmen i det här utrymmet?"; "leave_space_message" = "Är du säker på att du vill lämna %@? Vill du även lämna alla rum och utrymmen i det här utrymmet?";
"location_sharing_settings_toggle_title" = "Aktivera platsdelning";
"location_sharing_settings_header" = "Platsdelning";
"location_sharing_open_google_maps" = "Öppna i Google Maps";
"location_sharing_open_apple_maps" = "Öppna i Apple Maps";
"location_sharing_invalid_authorization_settings" = "Inställningar";
"location_sharing_invalid_authorization_not_now" = "Inte nu";
"location_sharing_invalid_authorization_error_title" = "%@ är inte behörig att komma åt din plats. Du kan aktivera åtkomst i Inställningar > Plats";
"location_sharing_locating_user_error_title" = "%@ kunde inte komma åt din plats. Vänligen pröva igen senare.";
"location_sharing_loading_map_error_title" = "%@ kunde inte ladda kartan. Vänligen pröva igen senare.";
"location_sharing_post_failure_subtitle" = "%@ kunde inte skicka din plats. Vänligen pröva igen senare.";
"location_sharing_post_failure_title" = "Vi kunde inte skicka din plats";
"location_sharing_share_action" = "Dela";
"location_sharing_close_action" = "Stäng";
// MARK: - Location sharing
"location_sharing_title" = "Plats";
"poll_timeline_not_closed_subtitle" = "Vänligen pröva igen";
"poll_timeline_not_closed_title" = "Misslyckades att avsluta omröstning";
"poll_timeline_vote_not_registered_subtitle" = "Tyvärr registrerades inte din röst, vänligen pröva igen";
"poll_timeline_vote_not_registered_title" = "Röst registrerades inte";
"poll_timeline_total_final_results" = "Slutgiltigt resultat baserat på %lu röst";
"poll_timeline_total_final_results_one_vote" = "Slutgiltigt resultat baserat på 1 röst";
"poll_timeline_total_votes_not_voted" = "%lu röster avgivna. Rösta för att se resultatet";
"poll_timeline_total_one_vote_not_voted" = "1 röst avgiven. Rösta för att se resultatet";
"poll_timeline_total_votes" = "%lu röster avgivna";
"poll_timeline_total_one_vote" = "1 röst avgiven";
"poll_timeline_total_no_votes" = "Inga röster avgivna";
"poll_timeline_votes_count" = "%lu röster";
"poll_timeline_one_vote" = "1 röst";
"poll_edit_form_poll_type_closed_description" = "Resultat avslöjas när du avslutar omröstningen";
"poll_edit_form_poll_type_closed" = "Sluten omröstning";
"poll_edit_form_poll_type_open_description" = "Röstare ser resultat så fort de har röstat";
"poll_edit_form_poll_type_open" = "Öppna omröstning";
"poll_edit_form_update_failure_subtitle" = "Vänligen pröva igen";
"poll_edit_form_update_failure_title" = "Misslyckades att uppdatera omröstning";
"poll_edit_form_post_failure_subtitle" = "Vänligen pröva igen";
"poll_edit_form_post_failure_title" = "Misslyckades att lägga upp omröstning";
"poll_edit_form_add_option" = "Lägg till alternativ";
"poll_edit_form_option_number" = "Alternativ %lu";
"poll_edit_form_create_options" = "Skapa alternativ";
"poll_edit_form_input_placeholder" = "Skriv något";
"poll_edit_form_question_or_topic" = "Fråga eller ämne";
"poll_edit_form_poll_question_or_topic" = "Omröstningens fråga eller ämne";
"poll_edit_form_poll_type" = "Omröstningstyp";
// Mark: - Polls
"poll_edit_form_create_poll" = "Skapa omröstning";
"home_context_menu_leave" = "Lämna";
"home_context_menu_normal_priority" = "Normal prioritet";
"home_context_menu_low_priority" = "Låg prioritet";
"home_context_menu_unfavourite" = "Ta bort från favoriter";
"home_context_menu_favourite" = "Favoritmarkera";
"home_context_menu_unmute" = "Avtysta";
"home_context_menu_mute" = "Tysta";
"home_context_menu_notifications" = "Aviseringar";
"home_context_menu_make_room" = "Flytta till rum";
"home_context_menu_make_dm" = "Flytta till personer";
"share_extension_send_now" = "Skicka nu";
"share_extension_low_quality_video_message" = "Skicka i %@ för bättre kvalité, eller skicka i låg kvalité nedan.";
"share_extension_low_quality_video_title" = "Video kommer skickas i låg kvalité";
"analytics_prompt_stop" = "Sluta dela";
"analytics_prompt_yes" = "Ja, det är okej";
"analytics_prompt_not_now" = "Inte ny";
"analytics_prompt_point_3" = "Du kan stänga av det här när som helst i inställningarna";
/* Note: The word "don't" is formatted in bold */
"analytics_prompt_point_2" = "Vi delar <b>inte</b> någon information med tredje parter";
/* Note: The word "don't" is formatted in bold */
"analytics_prompt_point_1" = "Vi spelar <b>inte</b> in eller profilerar någon kontodata";
"analytics_prompt_terms_link_upgrade" = "här";
/* Note: The placeholder is for the contents of analytics_prompt_terms_link_upgrade */
"analytics_prompt_terms_upgrade" = "Läs alla våra villkor %@. Är det OK?";
"analytics_prompt_terms_link_new_user" = "här";
/* Note: The placeholder is for the contents of analytics_prompt_terms_link_new_user */
"analytics_prompt_terms_new_user" = "Du kan läsa alla våra villkor %@.";
"analytics_prompt_message_upgrade" = "Du har tidigare gått med på att dela anonym användningsdata med oss. Nu, för att hjälpa oss att förstå hur folk använder multipla enheter, så kommer vi att generera en slumpmässig identifierare som delas mellan dina enheter.";
"analytics_prompt_message_new_user" = "Hjälp oss att identifiera problem och förbättra %@ genom att dela anonym användningsdata. För att förstå hur personer använder multipla enheter så kommer vi att generera en slumpmässig identifierare som delas mellan dina enheter.";
// Analytics
"analytics_prompt_title" = "Hjälp till att förbättra %@";
"event_formatter_message_deleted" = "Meddelande raderat";
"settings_enable_room_message_bubbles" = "Meddelandebubblor";
"settings_discovery_accept_terms" = "Acceptera identitetsserverns villkor";
"settings_analytics_and_crash_data" = "Skicka krasch- och analysdata";
"settings_labs_enable_threads" = "Trådade meddelanden";
"settings_labs_enabled_polls" = "Omröstningar";
"settings_about" = "OM";
"message_from_a_thread" = "Från en tråd";
"threads_empty_show_all_threads" = "Visa alla trådar";
"threads_empty_tip" = "Tips: Tryck på ett meddelande och använd “Tråd” för att starta en.";
"threads_empty_info_my" = "Svara på en pågående tråd eller tryck på ett meddelande och använd “Tråd” för att starta en ny.";
"threads_empty_info_all" = "Trådar hjälper till att hålla dina konversationer till ämnet och lätta att följa.";
"threads_empty_title" = "Håll diskussioner organiserade med trådar";
"threads_action_my_threads" = "Mina trådar";
"threads_action_all_threads" = "Alla trådar";
"threads_title" = "Trådar";
"thread_copy_link_to_thread" = "Kopiera länk till tråd";
// MARK: Threads
"room_thread_title" = "Tråd";
"room_accessibility_thread_more" = "Mer";
"room_accessibility_threads" = "Trådar";
"room_event_copy_link_info" = "Länk kopierad till klippbordet.";
"room_event_action_reply_in_thread" = "Tråd";
"room_event_action_view_in_room" = "Visa i rum";
"room_event_action_end_poll" = "Avsluta omröstning";
"room_event_action_remove_poll" = "Ta bort omröstning";
"onboarding_splash_page_4_message" = "Element är också bra för arbetsplatser. Den är betrodd av världens säkraste organisationer.";
"onboarding_splash_page_4_title_no_pun" = "Meddelanden för ditt team.";
"onboarding_splash_page_3_message" = "Totalsträckskrypterad och inget telefonnummer krävs. Ingen reklam eller datainsamling.";
"onboarding_splash_page_3_title" = "Säkra meddelanden.";
"onboarding_splash_page_2_message" = "Välj vart dina konversationer lagras, vilket ger dig kontroll och självständighet. Ansluter via Matrix.";
"onboarding_splash_page_2_title" = "Du har kontrollen.";
"onboarding_splash_page_1_message" = "Säker och oberoende kommunikation som ger dig samma sekretessnivå som en personlig konversation i dit eget hem.";
"onboarding_splash_page_1_title" = "Äg dina konversationer.";
"onboarding_splash_login_button_title" = "Jag har redan ett konto";
// Onboarding
"onboarding_splash_register_button_title" = "Skapa konto";
"accessibility_button_label" = "knapp";
"ok" = "OK";
"enable" = "Aktivera";

View file

@ -50,7 +50,7 @@
"auth_optional_phone_placeholder" = "Номер телефону (необов'язково)"; "auth_optional_phone_placeholder" = "Номер телефону (необов'язково)";
"auth_phone_placeholder" = "Номер телефону"; "auth_phone_placeholder" = "Номер телефону";
"auth_repeat_password_placeholder" = "Повторіть пароль"; "auth_repeat_password_placeholder" = "Повторіть пароль";
"auth_repeat_new_password_placeholder" = "Підтвердьте новий пароль"; "auth_repeat_new_password_placeholder" = "Підтвердьте новий пароль облікового запису Matrix";
"auth_home_server_placeholder" = "URL (наприклад, https://matrix.org)"; "auth_home_server_placeholder" = "URL (наприклад, https://matrix.org)";
"auth_identity_server_placeholder" = "URL (наприклад, https://vector.im)"; "auth_identity_server_placeholder" = "URL (наприклад, https://vector.im)";
"auth_invalid_login_param" = "Неправильне ім'я користувача або пароль"; "auth_invalid_login_param" = "Неправильне ім'я користувача або пароль";
@ -71,7 +71,7 @@
"auth_untrusted_id_server" = "Сервер облікових даних не довірений"; "auth_untrusted_id_server" = "Сервер облікових даних не довірений";
"auth_password_dont_match" = "Паролі не збігаються"; "auth_password_dont_match" = "Паролі не збігаються";
"auth_username_in_use" = "Ім'я користувача зайняте"; "auth_username_in_use" = "Ім'я користувача зайняте";
"auth_forgot_password" = "Забули пароль?"; "auth_forgot_password" = "Забули пароль облікового запису Matrix?";
"auth_email_not_found" = "Не вдалося надіслати лист: Таку адресу е-пошти не знайдено"; "auth_email_not_found" = "Не вдалося надіслати лист: Таку адресу е-пошти не знайдено";
"auth_use_server_options" = "Власні налаштування сервера"; "auth_use_server_options" = "Власні налаштування сервера";
"auth_email_validation_message" = "Перевірте свою пошту для продовження реєстрації"; "auth_email_validation_message" = "Перевірте свою пошту для продовження реєстрації";
@ -79,7 +79,7 @@
"auth_msisdn_validation_message" = "Ми надіслали СМС із кодом активації. Введіть цей код унизу."; "auth_msisdn_validation_message" = "Ми надіслали СМС із кодом активації. Введіть цей код унизу.";
"auth_msisdn_validation_error" = "Не вдалося перевірити номер телефону."; "auth_msisdn_validation_error" = "Не вдалося перевірити номер телефону.";
"auth_recaptcha_message" = "Цей домашній сервер бажає переконатися, що ви не робот"; "auth_recaptcha_message" = "Цей домашній сервер бажає переконатися, що ви не робот";
"auth_reset_password_message" = "Щоб відновити пароль, введіть адресу е-пошти, пов'язану з вашим обліковим записом:"; "auth_reset_password_message" = "Щоб відновити пароль облікового запису Matrix, введіть адресу е-пошти, пов'язану з вашим обліковим записом:";
"auth_reset_password_missing_email" = "Необхідно ввести адресу е-пошти, пов'язану з вашим обліковим записом."; "auth_reset_password_missing_email" = "Необхідно ввести адресу е-пошти, пов'язану з вашим обліковим записом.";
// String for App Store // String for App Store
"store_short_description" = "Захищений, децентралізований чат/VoIP"; "store_short_description" = "Захищений, децентралізований чат/VoIP";
@ -89,16 +89,16 @@
"auth_add_email_message_2" = "Вкажіть е-пошту для відновлення облікового запису, а також для можливості знаходження вас іншими користувачами."; "auth_add_email_message_2" = "Вкажіть е-пошту для відновлення облікового запису, а також для можливості знаходження вас іншими користувачами.";
"auth_add_phone_message_2" = "Вкажіть номер телефону для можливості знаходження вас іншими користувачами."; "auth_add_phone_message_2" = "Вкажіть номер телефону для можливості знаходження вас іншими користувачами.";
"auth_add_email_phone_message_2" = "Вкажіть е-пошту для відновлення облікового запису. Використовуйте електронну пошту чи номер телефону для можливості знаходження вас іншими користувачами."; "auth_add_email_phone_message_2" = "Вкажіть е-пошту для відновлення облікового запису. Використовуйте електронну пошту чи номер телефону для можливості знаходження вас іншими користувачами.";
"auth_email_is_required" = "Ідентифікаційний сервер не налаштовано, тому ви не можете додати адресу електронної пошти, щоб мати можливість відновити пароль в майбутньому."; "auth_email_is_required" = "Сервер ідентифікації не налаштовано, тому ви не можете додати адресу електронної пошти, щоб мати можливість відновити пароль облікового запису Matrix у майбутньому.";
"auth_phone_is_required" = "Ідентифікаційний сервер не налаштовано, тому ви не можете додати номер телефону, щоб мати можливість відновити пароль в майбутньому."; "auth_phone_is_required" = "Сервер ідентифікації не налаштовано, тому ви не можете додати номер телефону, щоб мати можливість відновити пароль облікового запису Matrix у майбутньому.";
"auth_forgot_password_error_no_configured_identity_server" = "Ідентифікаційний сервер не налаштовано: додайте його, щоб мати можливість відновити пароль в майбутньому."; "auth_forgot_password_error_no_configured_identity_server" = "Сервер ідентифікації не налаштовано: додайте його, щоб мати можливість відновити пароль облікового запису Matrix у майбутньому.";
"auth_reset_password_missing_password" = "Необхідно ввести новий пароль."; "auth_reset_password_missing_password" = "Необхідно ввести новий пароль.";
"auth_reset_password_email_validation_message" = "На адресу %@ надіслано лист. Після переходу за посиланням в листі, натисніть внизу."; "auth_reset_password_email_validation_message" = "На адресу %@ надіслано лист. Після переходу за посиланням в листі, натисніть внизу.";
"auth_reset_password_next_step_button" = "Я підтверджую свою адресу е-пошти"; "auth_reset_password_next_step_button" = "Я підтверджую свою адресу е-пошти";
"auth_reset_password_error_unauthorized" = "Не вдалося перевірити е-пошту: переконайтеся, що ви перейшли за посиланням у листі"; "auth_reset_password_error_unauthorized" = "Не вдалося перевірити е-пошту: переконайтеся, що ви перейшли за посиланням у листі";
"auth_reset_password_error_not_found" = "Схоже, ваша адреса електронної пошти не пов'язана з жодним Matrix ID на цьому домашньому сервері."; "auth_reset_password_error_not_found" = "Схоже, ваша адреса електронної пошти не пов'язана з жодним Matrix ID на цьому домашньому сервері.";
"auth_reset_password_error_is_required" = "Ідентифікаційний сервер не налаштовано: додайте його в параметрах сервера, щоб мати можливість відновити пароль в майбутньому."; "auth_reset_password_error_is_required" = "Сервер ідентифікації не налаштовано: додайте його у параметрах сервера, щоб мати можливість відновити пароль облікового запису Matrix у майбутньому.";
"auth_reset_password_success_message" = "Ваш пароль було скинуто.\n\nСеанс входу завершено на всіх сесіях і припинено отримання push-сповіщень. Щоб активувати сповіщення, виконайте вхід з новим паролем на кожному пристрої."; "auth_reset_password_success_message" = "Ваш пароль облікового запису Matrix було скинуто.\n\nСеанс входу завершено у всіх сеансах і припинено отримання push-сповіщень. Щоб активувати сповіщення, увійдіть з новим паролем на кожному пристрої.";
"auth_add_email_and_phone_warning" = "Реєстрація за допомогою електронної пошти і номера телефону водночас не підтримується, доки немає API. Лише номер телефону буде додано до облікового запису. Ви можете додати електронну пошту до свого профілю в налаштуваннях."; "auth_add_email_and_phone_warning" = "Реєстрація за допомогою електронної пошти і номера телефону водночас не підтримується, доки немає API. Лише номер телефону буде додано до облікового запису. Ви можете додати електронну пошту до свого профілю в налаштуваннях.";
"auth_accept_policies" = "Ознайомтесь та прийміть правила цього домашнього сервера:"; "auth_accept_policies" = "Ознайомтесь та прийміть правила цього домашнього сервера:";
"auth_softlogout_signed_out" = "Ви вийшли"; "auth_softlogout_signed_out" = "Ви вийшли";
@ -231,7 +231,7 @@
"settings_enable_push_notif" = "Сповіщення на цьому пристрої"; "settings_enable_push_notif" = "Сповіщення на цьому пристрої";
"settings_fail_to_update_profile" = "Не вдалося оновити профіль"; "settings_fail_to_update_profile" = "Не вдалося оновити профіль";
"settings_night_mode" = "Нічний режим"; "settings_night_mode" = "Нічний режим";
"settings_change_password" = "Змінити пароль"; "settings_change_password" = "Змінити пароль облікового запису Matrix";
"settings_add_phone_number" = "Додати номер телефону"; "settings_add_phone_number" = "Додати номер телефону";
"settings_phone_number" = "Телефон"; "settings_phone_number" = "Телефон";
"settings_add_email_address" = "Додати адресу е-пошти"; "settings_add_email_address" = "Додати адресу е-пошти";
@ -832,8 +832,8 @@
"settings_add_3pid_password_title_msidsn" = "Додати номер телефону"; "settings_add_3pid_password_title_msidsn" = "Додати номер телефону";
"settings_device_notifications" = "Сповіщення пристрою"; "settings_device_notifications" = "Сповіщення пристрою";
"settings_add_3pid_password_title_email" = "Додати адресу е-пошти"; "settings_add_3pid_password_title_email" = "Додати адресу е-пошти";
"settings_password_updated" = "Пароль оновлено"; "settings_password_updated" = "Пароль облікового запису Matrix оновлено";
"settings_fail_to_update_password" = "Не вдалося оновити пароль"; "settings_fail_to_update_password" = "Не вдалося оновити пароль облікового запису Matrix";
"settings_confirm_password" = "підтвердити пароль"; "settings_confirm_password" = "підтвердити пароль";
"settings_new_password" = "новий пароль"; "settings_new_password" = "новий пароль";
"settings_old_password" = "старий пароль"; "settings_old_password" = "старий пароль";
@ -862,8 +862,8 @@
"settings_crypto_device_id" = "\nID сеансу: "; "settings_crypto_device_id" = "\nID сеансу: ";
"settings_crypto_device_name" = "Назва сеансу: "; "settings_crypto_device_name" = "Назва сеансу: ";
"settings_add_3pid_invalid_password_message" = "Хибні облікові дані"; "settings_add_3pid_invalid_password_message" = "Хибні облікові дані";
"settings_add_3pid_password_message" = "Щоб продовжити, введіть пароль"; "settings_add_3pid_password_message" = "Щоб продовжити, введіть пароль облікового запису Matrix";
"deactivate_account_password_alert_message" = "Щоб продовжити, введіть пароль"; "deactivate_account_password_alert_message" = "Щоб продовжити, введіть пароль облікового запису Matrix";
// Deactivate account // Deactivate account
@ -970,7 +970,7 @@
"room_event_action_report" = "Поскаржитися на вміст"; "room_event_action_report" = "Поскаржитися на вміст";
"room_event_action_view_decrypted_source" = "Переглянути розшифроване джерело"; "room_event_action_view_decrypted_source" = "Переглянути розшифроване джерело";
"room_event_action_view_source" = "Переглянути джерело"; "room_event_action_view_source" = "Переглянути джерело";
"room_event_action_permalink" = "Постійне посилання"; "room_event_action_permalink" = "Скопіювати посилання на повідомлення";
"room_event_action_forward" = "Переслати"; "room_event_action_forward" = "Переслати";
"room_resend_unsent_messages" = "Повторно надіслати не надіслані повідомлення"; "room_resend_unsent_messages" = "Повторно надіслати не надіслані повідомлення";
"room_prompt_cancel" = "скасувати всі"; "room_prompt_cancel" = "скасувати всі";
@ -1034,7 +1034,7 @@
// AuthenticatedSessionViewControllerFactory // AuthenticatedSessionViewControllerFactory
"authenticated_session_flow_not_supported" = "Цей застосунок не підтримує способу входу, доступного на вашому домашньому сервері."; "authenticated_session_flow_not_supported" = "Цей застосунок не підтримує способу входу, доступного на вашому домашньому сервері.";
"security_settings_user_password_description" = "Підтвердьте свою особу, ввівши пароль свого облікового запису"; "security_settings_user_password_description" = "Підтвердьте свою особу, ввівши пароль свого облікового запису Matrix";
"security_settings_coming_soon" = "Вибачте, ця дія ще не доступна в %@ iOS. Якщо налаштуєте це іншим клієнтом Matrix, %@ iOS зможе також це використати."; "security_settings_coming_soon" = "Вибачте, ця дія ще не доступна в %@ iOS. Якщо налаштуєте це іншим клієнтом Matrix, %@ iOS зможе також це використати.";
"security_settings_complete_security_alert_message" = "Спершу слід доповнити захист вашого поточного сеансу."; "security_settings_complete_security_alert_message" = "Спершу слід доповнити захист вашого поточного сеансу.";
"security_settings_blacklist_unverified_devices_description" = "Звірте всі сеанси користувача, щоб позначити його довіреним і надіслати йому повідомлення."; "security_settings_blacklist_unverified_devices_description" = "Звірте всі сеанси користувача, щоб позначити його довіреним і надіслати йому повідомлення.";
@ -1043,7 +1043,7 @@
"security_settings_crosssigning_info_trusted" = "Перехресне підписування увімкнено. Ви можете робити інших користувачів і свої інші сеанси довіреними на підставі перехресного підпису, але ви не можете перехресно підписувати цим сеансом, бо в нього ще нема закритих ключів перехресного підписування. Доповніть захист цього сеансу."; "security_settings_crosssigning_info_trusted" = "Перехресне підписування увімкнено. Ви можете робити інших користувачів і свої інші сеанси довіреними на підставі перехресного підпису, але ви не можете перехресно підписувати цим сеансом, бо в нього ще нема закритих ключів перехресного підписування. Доповніть захист цього сеансу.";
"security_settings_crosssigning_info_exists" = "Ваш обліковий запис має ідентичність перехресного підписування, але вона ще не довірена цим сеансом. Доповніть захист цього сеансу."; "security_settings_crosssigning_info_exists" = "Ваш обліковий запис має ідентичність перехресного підписування, але вона ще не довірена цим сеансом. Доповніть захист цього сеансу.";
"security_settings_secure_backup_description" = "Зробіть резервну копію своїх ключів шифрування й даних облікового запису на випадок втрати доступу до своїх сеансів. Ваші ключі будуть захищені унікальним ключем безпеки."; "security_settings_secure_backup_description" = "Зробіть резервну копію своїх ключів шифрування й даних облікового запису на випадок втрати доступу до своїх сеансів. Ваші ключі будуть захищені унікальним ключем безпеки.";
"security_settings_crypto_sessions_description_2" = "Якщо не впізнаєте вхід, скиньте пароль і налаштування безпечного резервного копіювання."; "security_settings_crypto_sessions_description_2" = "Якщо не впізнаєте сеанс, скиньте пароль облікового запису Matrix і налаштування безпечного резервного копіювання.";
"settings_identity_server_no_is_description" = "Зараз ви не використовуєте сервер ідентифікації. Щоб знаходити наявні контакти й вони знаходили вас, додайте сервер угорі."; "settings_identity_server_no_is_description" = "Зараз ви не використовуєте сервер ідентифікації. Щоб знаходити наявні контакти й вони знаходили вас, додайте сервер угорі.";
"settings_identity_server_description" = "Налаштований угорі сервер ідентифікації дає вам змогу знаходити людей за наявними контактами, а їм знаходити вас."; "settings_identity_server_description" = "Налаштований угорі сервер ідентифікації дає вам змогу знаходити людей за наявними контактами, а їм знаходити вас.";
"settings_discovery_three_pid_details_information_phone_number" = "Керуйте параметрами для цього номера телефону, за яким інші користувачі можуть вас знаходити й запрошувати до кімнат. Додавайте й видаляйте номери в Облікових записах."; "settings_discovery_three_pid_details_information_phone_number" = "Керуйте параметрами для цього номера телефону, за яким інші користувачі можуть вас знаходити й запрошувати до кімнат. Додавайте й видаляйте номери в Облікових записах.";
@ -1109,7 +1109,7 @@
// Banner // Banner
"cross_signing_setup_banner_title" = "Налаштування шифрування"; "cross_signing_setup_banner_title" = "Налаштування шифрування";
"secrets_reset_authentication_message" = "Введіть пароль свого облікового запису, щоб продовжити"; "secrets_reset_authentication_message" = "Введіть пароль свого облікового запису Matrix, щоб продовжити";
"security_settings_blacklist_unverified_devices" = "Ніколи не надсилати повідомлення не довіреним сеансам"; "security_settings_blacklist_unverified_devices" = "Ніколи не надсилати повідомлення не довіреним сеансам";
"security_settings_advanced" = "ДОДАТКОВО"; "security_settings_advanced" = "ДОДАТКОВО";
"security_settings_export_keys_manually" = "Експорт ключів вручну"; "security_settings_export_keys_manually" = "Експорт ключів вручну";
@ -1357,7 +1357,7 @@
"secrets_setup_recovery_passphrase_title" = "Встановіть фразу безпеки"; "secrets_setup_recovery_passphrase_title" = "Встановіть фразу безпеки";
"secrets_setup_recovery_passphrase_information" = "Введіть відому лише вам фразу безпеки для захисту таємниць на вашому сервері."; "secrets_setup_recovery_passphrase_information" = "Введіть відому лише вам фразу безпеки для захисту таємниць на вашому сервері.";
"secrets_setup_recovery_passphrase_additional_information" = "Не застосовуйте пароль облікового запису повторно."; "secrets_setup_recovery_passphrase_additional_information" = "Не застосовуйте пароль облікового запису Matrix повторно.";
"secrets_setup_recovery_passphrase_confirm_information" = "Для підтвердження введіть таємну фразу ще раз."; "secrets_setup_recovery_passphrase_confirm_information" = "Для підтвердження введіть таємну фразу ще раз.";
"secure_key_backup_setup_existing_backup_error_title" = "Резервна копія повідомлень уже існує"; "secure_key_backup_setup_existing_backup_error_title" = "Резервна копія повідомлень уже існує";
"secure_key_backup_setup_existing_backup_error_info" = "Розблокуйте її, щоб продовжити попереднє захищене резервне копіювання, або видаліть її, щоб почати захищене резервне копіювання повідомлень заново."; "secure_key_backup_setup_existing_backup_error_info" = "Розблокуйте її, щоб продовжити попереднє захищене резервне копіювання, або видаліть її, щоб почати захищене резервне копіювання повідомлень заново.";
@ -1590,7 +1590,7 @@
"key_backup_setup_intro_title" = "Ніколи не втрачайте зашифровані повідомлення"; "key_backup_setup_intro_title" = "Ніколи не втрачайте зашифровані повідомлення";
"key_backup_setup_intro_info" = "Повідомлення в зашифрованих кімнатах захищені наскрізним шифруванням. Тільки ви та одержувачі маєте ключі для читання цих повідомлень.\n\nСтворіть захищену резервну копію ключів, щоб їх не втратити."; "key_backup_setup_intro_info" = "Повідомлення в зашифрованих кімнатах захищені наскрізним шифруванням. Тільки ви та одержувачі маєте ключі для читання цих повідомлень.\n\nСтворіть захищену резервну копію ключів, щоб їх не втратити.";
"key_backup_setup_passphrase_info" = "Ми збережемо зашифровану копію ваших ключів на нашому сервері. Захистіть свою резервну копію парольною фразою.\n\nДля максимальної безпеки фраза повинна відрізнятися від пароля вашого облікового запису."; "key_backup_setup_passphrase_info" = "Ми збережемо зашифровану копію ваших ключів на нашому сервері. Захистіть свою резервну копію парольною фразою.\n\nДля максимальної безпеки фраза повинна відрізнятися від пароля вашого облікового запису Matrix.";
"key_backup_setup_passphrase_set_passphrase_action" = "Встановити фразу"; "key_backup_setup_passphrase_set_passphrase_action" = "Встановити фразу";
// MARK: Key backup recover // MARK: Key backup recover
@ -1738,3 +1738,35 @@
"poll_edit_form_update_failure_subtitle" = "Повторіть спробу"; "poll_edit_form_update_failure_subtitle" = "Повторіть спробу";
"poll_edit_form_update_failure_title" = "Не вдалося оновити опитування"; "poll_edit_form_update_failure_title" = "Не вдалося оновити опитування";
"poll_edit_form_poll_type" = "Тип опитування"; "poll_edit_form_poll_type" = "Тип опитування";
"location_sharing_post_failure_subtitle" = "%@ не може отримати доступ до вашого місцеперебування. Повторіть спробу пізніше.";
"location_sharing_post_failure_title" = "Ми не можемо надіслати дані про ваше місцеперебування";
"home_context_menu_leave" = "Вийти";
"home_context_menu_normal_priority" = "Звичайна пріоритетність";
"home_context_menu_low_priority" = "Неважливі";
"home_context_menu_unfavourite" = "Вилучити з улюблених";
"home_context_menu_favourite" = "Улюблені";
"home_context_menu_unmute" = "Увімкнути звук";
"home_context_menu_mute" = "Без звуку";
"home_context_menu_notifications" = "Сповіщення";
"home_context_menu_make_room" = "Перемістити на вкладку «Кімнати»";
"home_context_menu_make_dm" = "Перемістити на вкладку «Люди»";
"event_formatter_message_deleted" = "Повідомлення видалено";
"settings_labs_enable_threads" = "Треди спілкування";
"message_from_a_thread" = "З треду";
"threads_empty_show_all_threads" = "Показати всі треди";
"threads_empty_tip" = "Порада: Торкніться повідомлення та натисніть «Тред», щоб розпочати його.";
"threads_empty_info_my" = "Відповідайте у поточний тред або торкніться повідомлення та натисніть «Тред», щоб почати новий.";
"threads_empty_info_all" = "Треди допомагають підтримувати розмови за темою та за ними легко стежити.";
"threads_empty_title" = "Спілкуйтеся за темою в тредах";
"threads_action_my_threads" = "Мої треди";
"threads_action_all_threads" = "Усі треди";
"threads_title" = "Треди";
"thread_copy_link_to_thread" = "Копіювати посилання на тред";
// MARK: Threads
"room_thread_title" = "Тред";
"room_accessibility_thread_more" = "Більше";
"room_accessibility_threads" = "Треди";
"room_event_copy_link_info" = "Посилання скопійовано до буфера обміну.";
"room_event_action_reply_in_thread" = "Тред";
"room_event_action_view_in_room" = "Переглянути у кімнаті";

View file

@ -251,7 +251,7 @@
"settings_labs" = "实验室"; "settings_labs" = "实验室";
"settings_devices" = "会话"; "settings_devices" = "会话";
"settings_cryptography" = "加密"; "settings_cryptography" = "加密";
"settings_sign_out" = "离开"; "settings_sign_out" = "退出登陆";
"settings_sign_out_confirmation" = "你确定?"; "settings_sign_out_confirmation" = "你确定?";
"settings_sign_out_e2e_warn" = "您将丢失所有端对端加密密钥。这意味着在此设备上您将再也无法阅读已加密聊天室里的旧消息。"; "settings_sign_out_e2e_warn" = "您将丢失所有端对端加密密钥。这意味着在此设备上您将再也无法阅读已加密聊天室里的旧消息。";
"settings_profile_picture" = "档案图片"; "settings_profile_picture" = "档案图片";
@ -1605,3 +1605,8 @@
"settings_analytics_and_crash_data" = "发送崩溃和分析数据"; "settings_analytics_and_crash_data" = "发送崩溃和分析数据";
"accessibility_button_label" = "按钮"; "accessibility_button_label" = "按钮";
"enable" = "启用"; "enable" = "启用";
"onboarding_splash_page_1_message" = "独立安全的通信,为您提供与家中面谈相同的私密性。";
"onboarding_splash_page_1_title" = "掌控你的对话。";
// Onboarding
"onboarding_splash_register_button_title" = "注册";

View file

@ -83,6 +83,7 @@ internal class Asset: NSObject {
internal static let removeIconBlue = ImageAsset(name: "remove_icon_blue") internal static let removeIconBlue = ImageAsset(name: "remove_icon_blue")
internal static let findYourContactsFacepile = ImageAsset(name: "find_your_contacts_facepile") internal static let findYourContactsFacepile = ImageAsset(name: "find_your_contacts_facepile")
internal static let captureAvatar = ImageAsset(name: "capture_avatar") internal static let captureAvatar = ImageAsset(name: "capture_avatar")
internal static let deleteAvatar = ImageAsset(name: "delete_avatar")
internal static let e2eBlocked = ImageAsset(name: "e2e_blocked") internal static let e2eBlocked = ImageAsset(name: "e2e_blocked")
internal static let e2eUnencrypted = ImageAsset(name: "e2e_unencrypted") internal static let e2eUnencrypted = ImageAsset(name: "e2e_unencrypted")
internal static let e2eWarning = ImageAsset(name: "e2e_warning") internal static let e2eWarning = ImageAsset(name: "e2e_warning")

View file

@ -2410,6 +2410,12 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
MXLogDebug(@"[AppDelegate] handleAppState: isLaunching: %@", isLaunching ? @"YES" : @"NO"); MXLogDebug(@"[AppDelegate] handleAppState: isLaunching: %@", isLaunching ? @"YES" : @"NO");
if (self.masterTabBarController.isOnboardingInProgress)
{
MXLogDebug(@"[AppDelegate] handleAppState: Skipping LaunchLoadingView due to Onboarding.");
return;
}
if (isLaunching) if (isLaunching)
{ {
MXLogDebug(@"[AppDelegate] handleAppState: LaunchLoadingView"); MXLogDebug(@"[AppDelegate] handleAppState: LaunchLoadingView");

View file

@ -16,7 +16,6 @@
limitations under the License. limitations under the License.
*/ */
import Foundation
import UIKit import UIKit
/// A coordinator that handles authentication, verification and setting a PIN. /// A coordinator that handles authentication, verification and setting a PIN.
@ -26,17 +25,27 @@ final class AuthenticationCoordinator: NSObject, AuthenticationCoordinatorProtoc
// MARK: Private // MARK: Private
private let navigationRouter: NavigationRouterType
private let authenticationViewController: AuthenticationViewController private let authenticationViewController: AuthenticationViewController
private let crossSigningService = CrossSigningService()
/// The password entered, for use when setting up cross-signing.
private var password: String?
/// The session created when successfully authenticated.
private var session: MXSession?
// MARK: Public // MARK: Public
// Must be used only internally // Must be used only internally
var childCoordinators: [Coordinator] = [] var childCoordinators: [Coordinator] = []
var completion: ((MXKAuthenticationType) -> Void)? var completion: ((AuthenticationCoordinatorResult) -> Void)?
// MARK: - Setup // MARK: - Setup
override init() { init(parameters: AuthenticationCoordinatorParameters) {
self.navigationRouter = parameters.navigationRouter
let authenticationViewController = AuthenticationViewController() let authenticationViewController = AuthenticationViewController()
self.authenticationViewController = authenticationViewController self.authenticationViewController = authenticationViewController
@ -81,11 +90,157 @@ final class AuthenticationCoordinator: NSObject, AuthenticationCoordinatorProtoc
func continueSSOLogin(withToken loginToken: String, transactionID: String) -> Bool { func continueSSOLogin(withToken loginToken: String, transactionID: String) -> Bool {
authenticationViewController.continueSSOLogin(withToken: loginToken, txnId: transactionID) authenticationViewController.continueSSOLogin(withToken: loginToken, txnId: transactionID)
} }
// MARK: - Private
private func showLoadingAnimation() {
let loadingViewController = LaunchLoadingViewController()
loadingViewController.modalPresentationStyle = .fullScreen
// Replace the navigation stack with the loading animation
// as there is nothing to navigate back to.
navigationRouter.setRootModule(loadingViewController)
}
private func presentCompleteSecurity(with session: MXSession) {
let isNewSignIn = true
let keyVerificationCoordinator = KeyVerificationCoordinator(session: session, flow: .completeSecurity(isNewSignIn))
keyVerificationCoordinator.delegate = self
let presentable = keyVerificationCoordinator.toPresentable()
presentable.presentationController?.delegate = self
navigationRouter.present(presentable, animated: true)
keyVerificationCoordinator.start()
add(childCoordinator: keyVerificationCoordinator)
}
private func authenticationDidComplete() {
completion?(.didComplete(authenticationViewController.authType))
}
private func registerSessionStateChangeNotification(for session: MXSession) {
NotificationCenter.default.addObserver(self, selector: #selector(sessionStateDidChange), name: .mxSessionStateDidChange, object: session)
}
private func unregisterSessionStateChangeNotification() {
NotificationCenter.default.removeObserver(self, name: .mxSessionStateDidChange, object: nil)
}
@objc private func sessionStateDidChange(_ notification: Notification) {
guard let session = notification.object as? MXSession else {
MXLog.error("[AuthenticationCoordinator] sessionStateDidChange: Missing session in the notification")
return
}
if session.state == .storeDataReady {
if let crypto = session.crypto, crypto.crossSigning != nil {
// Do not make key share requests while the "Complete security" is not complete.
// If the device is self-verified, the SDK will restore the existing key backup.
// Then, it will re-enable outgoing key share requests
crypto.setOutgoingKeyRequestsEnabled(false, onComplete: nil)
}
} else if session.state == .running {
unregisterSessionStateChangeNotification()
if let crypto = session.crypto, let crossSigning = crypto.crossSigning {
crossSigning.refreshState { [weak self] stateUpdated in
guard let self = self else { return }
MXLog.debug("[AuthenticationCoordinator] sessionStateDidChange: crossSigning.state: \(crossSigning.state)")
switch crossSigning.state {
case .notBootstrapped:
// TODO: This is still not sure we want to disable the automatic cross-signing bootstrap
// if the admin disabled e2e by default.
// Do like riot-web for the moment
if session.vc_homeserverConfiguration().isE2EEByDefaultEnabled {
// Bootstrap cross-signing on user's account
// We do it for both registration and new login as long as cross-signing does not exist yet
if let password = self.password, !password.isEmpty {
MXLog.debug("[AuthenticationCoordinator] sessionStateDidChange: Bootstrap with password")
crossSigning.setup(withPassword: password) {
MXLog.debug("[AuthenticationCoordinator] sessionStateDidChange: Bootstrap succeeded")
self.authenticationDidComplete()
} failure: { error in
MXLog.error("[AuthenticationCoordinator] sessionStateDidChange: Bootstrap failed. Error: \(error)")
crypto.setOutgoingKeyRequestsEnabled(true, onComplete: nil)
self.authenticationDidComplete()
}
} else {
// Try to setup cross-signing without authentication parameters in case if a grace period is enabled
self.crossSigningService.setupCrossSigningWithoutAuthentication(for: session) {
MXLog.debug("[AuthenticationCoordinator] sessionStateDidChange: Bootstrap succeeded without credentials")
self.authenticationDidComplete()
} failure: { error in
MXLog.error("[AuthenticationCoordinator] sessionStateDidChange: Do not know how to bootstrap cross-signing. Skip it.")
crypto.setOutgoingKeyRequestsEnabled(true, onComplete: nil)
self.authenticationDidComplete()
}
}
} else {
crypto.setOutgoingKeyRequestsEnabled(true, onComplete: nil)
self.authenticationDidComplete()
}
case .crossSigningExists:
MXLog.debug("[AuthenticationCoordinator] sessionStateDidChange: Complete security")
self.presentCompleteSecurity(with: session)
default:
MXLog.debug("[AuthenticationCoordinator] sessionStateDidChange: Nothing to do")
crypto.setOutgoingKeyRequestsEnabled(true, onComplete: nil)
self.authenticationDidComplete()
}
} failure: { [weak self] error in
MXLog.error("[AuthenticationCoordinator] sessionStateDidChange: Fail to refresh crypto state with error: \(error)")
crypto.setOutgoingKeyRequestsEnabled(true, onComplete: nil)
self?.authenticationDidComplete()
}
} else {
authenticationDidComplete()
}
}
}
} }
// MARK: - AuthenticationViewControllerDelegate // MARK: - AuthenticationViewControllerDelegate
extension AuthenticationCoordinator: AuthenticationViewControllerDelegate { extension AuthenticationCoordinator: AuthenticationViewControllerDelegate {
func authenticationViewControllerDidDismiss(_ authenticationViewController: AuthenticationViewController!) { func authenticationViewController(_ authenticationViewController: AuthenticationViewController!, didLoginWith session: MXSession!, andPassword password: String!) {
completion?(authenticationViewController.authType) registerSessionStateChangeNotification(for: session)
self.session = session
self.password = password
self.showLoadingAnimation()
completion?(.didLogin(session))
}
}
// MARK: - KeyVerificationCoordinatorDelegate
extension AuthenticationCoordinator: KeyVerificationCoordinatorDelegate {
func keyVerificationCoordinatorDidComplete(_ coordinator: KeyVerificationCoordinatorType, otherUserId: String, otherDeviceId: String) {
if let crypto = session?.crypto,
!crypto.backup.hasPrivateKeyInCryptoStore || !crypto.backup.enabled {
MXLog.debug("[AuthenticationCoordinator][MXKeyVerification] requestAllPrivateKeys: Request key backup private keys")
crypto.setOutgoingKeyRequestsEnabled(true, onComplete: nil)
}
navigationRouter.dismissModule(animated: true) { [weak self] in
self?.authenticationDidComplete()
}
}
func keyVerificationCoordinatorDidCancel(_ coordinator: KeyVerificationCoordinatorType) {
navigationRouter.dismissModule(animated: true) { [weak self] in
self?.authenticationDidComplete()
}
}
}
// MARK: - UIAdaptivePresentationControllerDelegate
extension AuthenticationCoordinator: UIAdaptivePresentationControllerDelegate {
func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
// Prevent Key Verification from using swipe to dismiss
return false
} }
} }

View file

@ -18,9 +18,21 @@
import Foundation import Foundation
struct AuthenticationCoordinatorParameters {
let navigationRouter: NavigationRouterType
}
enum AuthenticationCoordinatorResult {
/// The user has authenticated but key verification is yet to happen. The session value is
/// for a fresh session that still needs to load, sync etc before being ready.
case didLogin(MXSession)
/// All of the required authentication steps including key verification is complete.
case didComplete(MXKAuthenticationType)
}
/// `AuthenticationCoordinatorProtocol` is a protocol describing a Coordinator that handle's the authentication navigation flow. /// `AuthenticationCoordinatorProtocol` is a protocol describing a Coordinator that handle's the authentication navigation flow.
protocol AuthenticationCoordinatorProtocol: Coordinator, Presentable { protocol AuthenticationCoordinatorProtocol: Coordinator, Presentable {
var completion: ((MXKAuthenticationType) -> Void)? { get set } var completion: ((AuthenticationCoordinatorResult) -> Void)? { get set }
/// Update the screen to display registration or login. /// Update the screen to display registration or login.
func update(authenticationType: MXKAuthenticationType) func update(authenticationType: MXKAuthenticationType)

View file

@ -62,6 +62,8 @@
@protocol AuthenticationViewControllerDelegate <NSObject> @protocol AuthenticationViewControllerDelegate <NSObject>
- (void)authenticationViewControllerDidDismiss:(AuthenticationViewController *)authenticationViewController; - (void)authenticationViewController:(AuthenticationViewController *)authenticationViewController
didLoginWithSession:(MXSession *)session
andPassword:(NSString *)password;
@end; @end;

View file

@ -28,7 +28,7 @@
static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
@interface AuthenticationViewController () <AuthFallBackViewControllerDelegate, KeyVerificationCoordinatorBridgePresenterDelegate, SetPinCoordinatorBridgePresenterDelegate, @interface AuthenticationViewController () <AuthFallBackViewControllerDelegate, SetPinCoordinatorBridgePresenterDelegate,
SocialLoginListViewDelegate, SocialLoginListViewDelegate,
SSOAuthenticationPresenterDelegate SSOAuthenticationPresenterDelegate
> >
@ -63,7 +63,6 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
} }
@property (nonatomic, readonly) BOOL isIdentityServerConfigured; @property (nonatomic, readonly) BOOL isIdentityServerConfigured;
@property (nonatomic, strong) KeyVerificationCoordinatorBridgePresenter *keyVerificationCoordinatorBridgePresenter;
@property (nonatomic, strong) SetPinCoordinatorBridgePresenter *setPinCoordinatorBridgePresenter; @property (nonatomic, strong) SetPinCoordinatorBridgePresenter *setPinCoordinatorBridgePresenter;
@property (nonatomic, strong) KeyboardAvoider *keyboardAvoider; @property (nonatomic, strong) KeyboardAvoider *keyboardAvoider;
@ -78,8 +77,6 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
// Current SSO transaction id used to identify and validate the SSO authentication callback // Current SSO transaction id used to identify and validate the SSO authentication callback
@property (nonatomic, strong) NSString *ssoCallbackTxnId; @property (nonatomic, strong) NSString *ssoCallbackTxnId;
@property (nonatomic, strong) CrossSigningService *crossSigningService;
@property (nonatomic, getter = isFirstViewAppearing) BOOL firstViewAppearing; @property (nonatomic, getter = isFirstViewAppearing) BOOL firstViewAppearing;
@property (nonatomic, strong) MXKErrorAlertPresentation *errorPresenter; @property (nonatomic, strong) MXKErrorAlertPresentation *errorPresenter;
@ -118,7 +115,6 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
_firstViewAppearing = YES; _firstViewAppearing = YES;
self.crossSigningService = [CrossSigningService new];
self.errorPresenter = [MXKErrorAlertPresentation new]; self.errorPresenter = [MXKErrorAlertPresentation new];
} }
@ -318,11 +314,6 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
{ {
self.firstViewAppearing = NO; self.firstViewAppearing = NO;
} }
if (self.keyVerificationCoordinatorBridgePresenter)
{
return;
}
// Verify that the app does not show the authentication screen whereas // Verify that the app does not show the authentication screen whereas
// the user has already logged in. // the user has already logged in.
@ -379,7 +370,6 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
[self.authenticationActivityIndicator removeObserver:self forKeyPath:@"hidden"]; [self.authenticationActivityIndicator removeObserver:self forKeyPath:@"hidden"];
autoDiscovery = nil; autoDiscovery = nil;
_keyVerificationCoordinatorBridgePresenter = nil;
_keyboardAvoider = nil; _keyboardAvoider = nil;
} }
@ -557,30 +547,6 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
} }
} }
- (void)presentCompleteSecurityWithSession:(MXSession*)session
{
KeyVerificationCoordinatorBridgePresenter *keyVerificationCoordinatorBridgePresenter = [[KeyVerificationCoordinatorBridgePresenter alloc] initWithSession:session];
keyVerificationCoordinatorBridgePresenter.delegate = self;
[keyVerificationCoordinatorBridgePresenter presentCompleteSecurityFrom:self isNewSignIn:YES animated:YES];
self.keyVerificationCoordinatorBridgePresenter = keyVerificationCoordinatorBridgePresenter;
}
- (void)dismiss
{
self.userInteractionEnabled = YES;
[self.authenticationActivityIndicator stopAnimating];
// Dismiss (key verification) on successful login
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
if (self.authVCDelegate)
{
[self.authVCDelegate authenticationViewControllerDidDismiss:self];
}
}
- (BOOL)continueSSOLoginWithToken:(NSString*)loginToken txnId:(NSString*)txnId - (BOOL)continueSSOLoginWithToken:(NSString*)loginToken txnId:(NSString*)txnId
{ {
// Check if transaction id is the same as expected // Check if transaction id is the same as expected
@ -1377,119 +1343,8 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
}]; }];
} }
// Wait for session change to present complete security screen if needed // Ask the coordinator to show the loading spinner whilst waiting.
[self registerSessionStateChangeNotificationForSession:session]; [self.authVCDelegate authenticationViewController:self didLoginWithSession:session andPassword:self.authInputsView.password];
}
- (void)registerSessionStateChangeNotificationForSession:(MXSession*)session
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionStateDidChangeNotification:) name:kMXSessionStateDidChangeNotification object:session];
}
- (void)unregisterSessionStateChangeNotification
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:kMXSessionStateDidChangeNotification object:nil];
}
- (void)sessionStateDidChangeNotification:(NSNotification*)notification
{
MXSession *session = (MXSession*)notification.object;
if (session.state == MXSessionStateStoreDataReady)
{
if (session.crypto.crossSigning)
{
// Do not make key share requests while the "Complete security" is not complete.
// If the device is self-verified, the SDK will restore the existing key backup.
// Then, it will re-enable outgoing key share requests
[session.crypto setOutgoingKeyRequestsEnabled:NO onComplete:nil];
}
}
else if (session.state == MXSessionStateRunning)
{
[self unregisterSessionStateChangeNotification];
if (session.crypto.crossSigning)
{
[session.crypto.crossSigning refreshStateWithSuccess:^(BOOL stateUpdated) {
MXLogDebug(@"[AuthenticationVC] sessionStateDidChange: crossSigning.state: %@", @(session.crypto.crossSigning.state));
switch (session.crypto.crossSigning.state)
{
case MXCrossSigningStateNotBootstrapped:
{
// TODO: This is still not sure we want to disable the automatic cross-signing bootstrap
// if the admin disabled e2e by default.
// Do like riot-web for the moment
if ([session vc_homeserverConfiguration].isE2EEByDefaultEnabled)
{
// Bootstrap cross-signing on user's account
// We do it for both registration and new login as long as cross-signing does not exist yet
if (self.authInputsView.password.length)
{
MXLogDebug(@"[AuthenticationVC] sessionStateDidChange: Bootstrap with password");
[session.crypto.crossSigning setupWithPassword:self.authInputsView.password success:^{
MXLogDebug(@"[AuthenticationVC] sessionStateDidChange: Bootstrap succeeded");
[self dismiss];
} failure:^(NSError * _Nonnull error) {
MXLogDebug(@"[AuthenticationVC] sessionStateDidChange: Bootstrap failed. Error: %@", error);
[session.crypto setOutgoingKeyRequestsEnabled:YES onComplete:nil];
[self dismiss];
}];
}
else
{
// Try to setup cross-signing without authentication parameters in case if a grace period is enabled
[self.crossSigningService setupCrossSigningWithoutAuthenticationFor:session success:^{
MXLogDebug(@"[AuthenticationVC] sessionStateDidChange: Bootstrap succeeded without credentials");
[self dismiss];
} failure:^(NSError * _Nonnull error) {
MXLogDebug(@"[AuthenticationVC] sessionStateDidChange: Do not know how to bootstrap cross-signing. Skip it.");
[session.crypto setOutgoingKeyRequestsEnabled:YES onComplete:nil];
[self dismiss];
}];
}
}
else
{
[session.crypto setOutgoingKeyRequestsEnabled:YES onComplete:nil];
[self dismiss];
}
break;
}
case MXCrossSigningStateCrossSigningExists:
{
MXLogDebug(@"[AuthenticationVC] sessionStateDidChange: Complete security");
// Ask the user to verify this session
self.userInteractionEnabled = YES;
[self.authenticationActivityIndicator stopAnimating];
[self presentCompleteSecurityWithSession:session];
break;
}
default:
MXLogDebug(@"[AuthenticationVC] sessionStateDidChange: Nothing to do");
[session.crypto setOutgoingKeyRequestsEnabled:YES onComplete:nil];
[self dismiss];
break;
}
} failure:^(NSError * _Nonnull error) {
MXLogDebug(@"[AuthenticationVC] sessionStateDidChange: Fail to refresh crypto state with error: %@", error);
[session.crypto setOutgoingKeyRequestsEnabled:YES onComplete:nil];
[self dismiss];
}];
}
else
{
[self dismiss];
}
}
} }
#pragma mark - MXKAuthInputsViewDelegate #pragma mark - MXKAuthInputsViewDelegate
@ -1621,24 +1476,6 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
[self setCustomServerFieldsVisible:YES]; [self setCustomServerFieldsVisible:YES];
} }
#pragma mark - KeyVerificationCoordinatorBridgePresenterDelegate
- (void)keyVerificationCoordinatorBridgePresenterDelegateDidComplete:(KeyVerificationCoordinatorBridgePresenter * _Nonnull)coordinatorBridgePresenter otherUserId:(NSString * _Nonnull)otherUserId otherDeviceId:(NSString * _Nonnull)otherDeviceId
{
MXCrypto *crypto = coordinatorBridgePresenter.session.crypto;
if (!crypto.backup.hasPrivateKeyInCryptoStore || !crypto.backup.enabled)
{
MXLogDebug(@"[AuthenticationVC][MXKeyVerification] requestAllPrivateKeys: Request key backup private keys");
[crypto setOutgoingKeyRequestsEnabled:YES onComplete:nil];
}
[self dismiss];
}
- (void)keyVerificationCoordinatorBridgePresenterDelegateDidCancel:(KeyVerificationCoordinatorBridgePresenter * _Nonnull)coordinatorBridgePresenter
{
[self dismiss];
}
#pragma mark - SetPinCoordinatorBridgePresenterDelegate #pragma mark - SetPinCoordinatorBridgePresenterDelegate
- (void)setPinCoordinatorBridgePresenterDelegateDidComplete:(SetPinCoordinatorBridgePresenter *)coordinatorBridgePresenter - (void)setPinCoordinatorBridgePresenterDelegateDidComplete:(SetPinCoordinatorBridgePresenter *)coordinatorBridgePresenter

View file

@ -19,6 +19,7 @@ import Reusable
protocol ChooseAvatarTableViewCellDelegate: AnyObject { protocol ChooseAvatarTableViewCellDelegate: AnyObject {
func chooseAvatarTableViewCellDidTapChooseAvatar(_ cell: ChooseAvatarTableViewCell, sourceView: UIView) func chooseAvatarTableViewCellDidTapChooseAvatar(_ cell: ChooseAvatarTableViewCell, sourceView: UIView)
func chooseAvatarTableViewCellDidTapRemoveAvatar(_ cell: ChooseAvatarTableViewCell)
} }
class ChooseAvatarTableViewCell: UITableViewCell { class ChooseAvatarTableViewCell: UITableViewCell {
@ -29,15 +30,30 @@ class ChooseAvatarTableViewCell: UITableViewCell {
} }
} }
@IBOutlet private weak var chooseAvatarButton: UIButton! @IBOutlet private weak var chooseAvatarButton: UIButton!
@IBOutlet private weak var removeAvatarButton: UIButton! {
didSet {
removeAvatarButton.imageView?.contentMode = .scaleAspectFit
}
}
weak var delegate: ChooseAvatarTableViewCellDelegate? weak var delegate: ChooseAvatarTableViewCellDelegate?
@IBAction private func chooseAvatarButtonTapped(_ sender: UIButton) { @IBAction private func chooseAvatarButtonTapped(_ sender: UIButton) {
delegate?.chooseAvatarTableViewCellDidTapChooseAvatar(self, sourceView: sender) delegate?.chooseAvatarTableViewCellDidTapChooseAvatar(self, sourceView: sender)
} }
@IBAction private func removeAvatarButtonTapped(_ sender: UIButton) {
delegate?.chooseAvatarTableViewCellDidTapRemoveAvatar(self)
}
func configure(withViewModel viewModel: ChooseAvatarTableViewCellVM) { func configure(withViewModel viewModel: ChooseAvatarTableViewCellVM) {
avatarImageView.image = viewModel.avatarImage if let image = viewModel.avatarImage {
avatarImageView.image = image
removeAvatarButton.isHidden = false
} else {
avatarImageView.image = Asset.Images.captureAvatar.image
removeAvatarButton.isHidden = true
}
} }
} }
@ -49,7 +65,6 @@ extension ChooseAvatarTableViewCell: Themable {
func update(theme: Theme) { func update(theme: Theme) {
backgroundView = UIView() backgroundView = UIView()
backgroundView?.backgroundColor = theme.backgroundColor backgroundView?.backgroundColor = theme.backgroundColor
avatarImageView.backgroundColor = theme.tintColor
} }
} }

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/> <device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
@ -18,39 +18,45 @@
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cxa-zY-I2z"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cxa-zY-I2z">
<rect key="frame" x="137.5" y="20" width="60" height="60"/> <rect key="frame" x="127.5" y="10" width="80" height="80"/>
<subviews> <subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="jO2-1T-e01"> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="capture_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="jO2-1T-e01">
<rect key="frame" x="0.0" y="0.0" width="60" height="60"/> <rect key="frame" x="0.0" y="0.0" width="80" height="80"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</imageView> </imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="capture_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="DmM-HO-d5u"> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qhc-S1-fNz">
<rect key="frame" x="36" y="36" width="24" height="24"/> <rect key="frame" x="0.0" y="0.0" width="80" height="80"/>
<constraints>
<constraint firstAttribute="width" constant="24" id="CfH-3G-sp2"/>
<constraint firstAttribute="height" constant="24" id="LAj-br-cZn"/>
</constraints>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qhc-S1-fNz">
<rect key="frame" x="0.0" y="0.0" width="60" height="60"/>
<connections> <connections>
<action selector="chooseAvatarButtonTapped:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="Tr5-En-JRL"/> <action selector="chooseAvatarButtonTapped:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="Tr5-En-JRL"/>
</connections> </connections>
</button> </button>
<button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iIl-kw-RZv">
<rect key="frame" x="54" y="-2" width="28" height="28"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="28" id="4Am-qG-3D9"/>
<constraint firstAttribute="height" constant="28" id="oQv-hx-8EU"/>
</constraints>
<inset key="imageEdgeInsets" minX="2" minY="2" maxX="2" maxY="2"/>
<state key="normal" image="delete_avatar"/>
<connections>
<action selector="removeAvatarButtonTapped:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="y2E-VN-UPj"/>
</connections>
</button>
</subviews> </subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints> <constraints>
<constraint firstItem="jO2-1T-e01" firstAttribute="top" secondItem="cxa-zY-I2z" secondAttribute="top" id="4vV-IL-HBT"/> <constraint firstItem="jO2-1T-e01" firstAttribute="top" secondItem="cxa-zY-I2z" secondAttribute="top" id="4vV-IL-HBT"/>
<constraint firstItem="iIl-kw-RZv" firstAttribute="top" secondItem="cxa-zY-I2z" secondAttribute="top" constant="-2" id="DvR-vg-oHr"/>
<constraint firstItem="jO2-1T-e01" firstAttribute="leading" secondItem="cxa-zY-I2z" secondAttribute="leading" id="EHU-dt-Wct"/> <constraint firstItem="jO2-1T-e01" firstAttribute="leading" secondItem="cxa-zY-I2z" secondAttribute="leading" id="EHU-dt-Wct"/>
<constraint firstItem="Qhc-S1-fNz" firstAttribute="leading" secondItem="cxa-zY-I2z" secondAttribute="leading" id="EXo-Xj-gmU"/> <constraint firstItem="Qhc-S1-fNz" firstAttribute="leading" secondItem="cxa-zY-I2z" secondAttribute="leading" id="EXo-Xj-gmU"/>
<constraint firstAttribute="trailing" secondItem="jO2-1T-e01" secondAttribute="trailing" id="Jl4-Km-Skg"/> <constraint firstAttribute="trailing" secondItem="jO2-1T-e01" secondAttribute="trailing" id="Jl4-Km-Skg"/>
<constraint firstAttribute="width" constant="60" id="UGR-4m-Wbs"/> <constraint firstAttribute="width" constant="80" id="UGR-4m-Wbs"/>
<constraint firstAttribute="trailing" secondItem="DmM-HO-d5u" secondAttribute="trailing" id="ULE-c0-OVB"/>
<constraint firstItem="Qhc-S1-fNz" firstAttribute="top" secondItem="cxa-zY-I2z" secondAttribute="top" id="Vmh-gb-pTd"/> <constraint firstItem="Qhc-S1-fNz" firstAttribute="top" secondItem="cxa-zY-I2z" secondAttribute="top" id="Vmh-gb-pTd"/>
<constraint firstAttribute="height" constant="60" id="XgW-eP-Ej1"/> <constraint firstAttribute="height" constant="80" id="XgW-eP-Ej1"/>
<constraint firstAttribute="trailing" secondItem="iIl-kw-RZv" secondAttribute="trailing" constant="-2" id="bGH-xx-660"/>
<constraint firstAttribute="bottom" secondItem="jO2-1T-e01" secondAttribute="bottom" id="k80-e4-Sir"/> <constraint firstAttribute="bottom" secondItem="jO2-1T-e01" secondAttribute="bottom" id="k80-e4-Sir"/>
<constraint firstAttribute="trailing" secondItem="Qhc-S1-fNz" secondAttribute="trailing" id="mmu-lZ-hA2"/> <constraint firstAttribute="trailing" secondItem="Qhc-S1-fNz" secondAttribute="trailing" id="mmu-lZ-hA2"/>
<constraint firstAttribute="bottom" secondItem="DmM-HO-d5u" secondAttribute="bottom" id="qH0-4k-fJI"/>
<constraint firstAttribute="bottom" secondItem="Qhc-S1-fNz" secondAttribute="bottom" id="xzy-TW-HzO"/> <constraint firstAttribute="bottom" secondItem="Qhc-S1-fNz" secondAttribute="bottom" id="xzy-TW-HzO"/>
</constraints> </constraints>
</view> </view>
@ -64,11 +70,13 @@
<connections> <connections>
<outlet property="avatarImageView" destination="jO2-1T-e01" id="LDf-AD-Ubx"/> <outlet property="avatarImageView" destination="jO2-1T-e01" id="LDf-AD-Ubx"/>
<outlet property="chooseAvatarButton" destination="Qhc-S1-fNz" id="37s-Cp-Uwf"/> <outlet property="chooseAvatarButton" destination="Qhc-S1-fNz" id="37s-Cp-Uwf"/>
<outlet property="removeAvatarButton" destination="iIl-kw-RZv" id="9F9-6A-ulx"/>
</connections> </connections>
<point key="canvasLocation" x="63.04347826086957" y="89.0625"/> <point key="canvasLocation" x="63.04347826086957" y="89.0625"/>
</tableViewCell> </tableViewCell>
</objects> </objects>
<resources> <resources>
<image name="capture_avatar" width="25" height="25"/> <image name="capture_avatar" width="80" height="80"/>
<image name="delete_avatar" width="29" height="29"/>
</resources> </resources>
</document> </document>

View file

@ -16,12 +16,13 @@
limitations under the License. limitations under the License.
*/ */
import Foundation import UIKit
/// EnterNewRoomDetailsViewController view actions exposed to view model /// EnterNewRoomDetailsViewController view actions exposed to view model
enum EnterNewRoomDetailsViewAction { enum EnterNewRoomDetailsViewAction {
case loadData case loadData
case chooseAvatar(sourceView: UIView) case chooseAvatar(sourceView: UIView)
case removeAvatar
case cancel case cancel
case create case create
} }

View file

@ -31,6 +31,8 @@ final class EnterNewRoomDetailsViewController: UIViewController {
static let roomNameMaximumNumberOfChars = 50 static let roomNameMaximumNumberOfChars = 50
static let roomAddressMaximumNumberOfChars = 50 static let roomAddressMaximumNumberOfChars = 50
static let roomTopicMaximumNumberOfChars = 250 static let roomTopicMaximumNumberOfChars = 250
static let chooseAvatarTableViewCellHeight: CGFloat = 140
static let textViewTableViewCellHeight: CGFloat = 150
} }
// MARK: - Properties // MARK: - Properties
@ -481,9 +483,9 @@ extension EnterNewRoomDetailsViewController: UITableViewDelegate {
switch row.type { switch row.type {
case .avatar: case .avatar:
return 100 return Constants.chooseAvatarTableViewCellHeight
case .textView: case .textView:
return 150 return Constants.textViewTableViewCellHeight
default: default:
return UITableView.automaticDimension return UITableView.automaticDimension
} }
@ -512,7 +514,11 @@ extension EnterNewRoomDetailsViewController: ChooseAvatarTableViewCellDelegate {
func chooseAvatarTableViewCellDidTapChooseAvatar(_ cell: ChooseAvatarTableViewCell, sourceView: UIView) { func chooseAvatarTableViewCellDidTapChooseAvatar(_ cell: ChooseAvatarTableViewCell, sourceView: UIView) {
viewModel.process(viewAction: .chooseAvatar(sourceView: sourceView)) viewModel.process(viewAction: .chooseAvatar(sourceView: sourceView))
} }
func chooseAvatarTableViewCellDidTapRemoveAvatar(_ cell: ChooseAvatarTableViewCell) {
viewModel.process(viewAction: .removeAvatar)
}
} }
// MARK: - EnterNewRoomDetailsViewModelViewDelegate // MARK: - EnterNewRoomDetailsViewModelViewDelegate
@ -532,14 +538,6 @@ extension EnterNewRoomDetailsViewController: UITextFieldDelegate {
switch textField.tag { switch textField.tag {
case Constants.roomNameTextFieldTag: case Constants.roomNameTextFieldTag:
viewModel.roomCreationParameters.name = textField.text viewModel.roomCreationParameters.name = textField.text
if viewModel.roomCreationParameters.userSelectedAvatar == nil {
// if no image selected by the user, set initials as image
let avatar = AvatarGenerator.generateAvatar(forMatrixItem: nil,
withDisplayName: textField.text,
size: 60,
andFontSize: 30)
viewModel.roomCreationParameters.initialsAvatar = avatar
}
case Constants.roomAddressTextFieldTag: case Constants.roomAddressTextFieldTag:
viewModel.roomCreationParameters.address = textField.text viewModel.roomCreationParameters.address = textField.text
default: default:

View file

@ -62,6 +62,8 @@ final class EnterNewRoomDetailsViewModel: EnterNewRoomDetailsViewModelType {
self.loadData() self.loadData()
case .chooseAvatar(let sourceView): case .chooseAvatar(let sourceView):
self.chooseAvatar(sourceView: sourceView) self.chooseAvatar(sourceView: sourceView)
case .removeAvatar:
self.removeAvatar()
case .cancel: case .cancel:
self.cancelOperations() self.cancelOperations()
self.coordinatorDelegate?.enterNewRoomDetailsViewModelDidCancel(self) self.coordinatorDelegate?.enterNewRoomDetailsViewModelDidCancel(self)
@ -79,6 +81,11 @@ final class EnterNewRoomDetailsViewModel: EnterNewRoomDetailsViewModelType {
private func chooseAvatar(sourceView: UIView) { private func chooseAvatar(sourceView: UIView) {
self.coordinatorDelegate?.enterNewRoomDetailsViewModel(self, didTapChooseAvatar: sourceView) self.coordinatorDelegate?.enterNewRoomDetailsViewModel(self, didTapChooseAvatar: sourceView)
} }
private func removeAvatar() {
self.roomCreationParameters.userSelectedAvatar = nil
self.process(viewAction: .loadData)
}
private func fixRoomAlias(alias: String?) -> String? { private func fixRoomAlias(alias: String?) -> String? {
guard var alias = alias else { return nil } guard var alias = alias else { return nil }

View file

@ -21,7 +21,7 @@ struct RoomCreationParameters {
var topic: String? var topic: String?
var address: String? var address: String?
var avatarImage: UIImage? { var avatarImage: UIImage? {
return userSelectedAvatar ?? initialsAvatar return userSelectedAvatar
} }
var isEncrypted: Bool = false var isEncrypted: Bool = false
var isPublic: Bool = false { var isPublic: Bool = false {
@ -36,5 +36,4 @@ struct RoomCreationParameters {
var showInDirectory: Bool = false var showInDirectory: Bool = false
var userSelectedAvatar: UIImage? var userSelectedAvatar: UIImage?
var initialsAvatar: UIImage?
} }

View file

@ -0,0 +1,37 @@
//
// Copyright 2021 New Vector Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import UIKit
/// A collection view that returns an accessibility element count equal to the number of
/// items in its first section. This allows voiceover user to swipe through the entire collection.
class AccessibleCollectionView: UICollectionView {
private var numberOfItemsInFirstSection = 0
override func accessibilityElementCount() -> Int {
return numberOfItemsInFirstSection
}
override func numberOfItems(inSection section: Int) -> Int {
let numberOfItems = super.numberOfItems(inSection: section)
if section == 0 {
numberOfItemsInFirstSection = numberOfItems
}
return numberOfItems
}
}

View file

@ -52,6 +52,8 @@
[path closePath]; // arrow top side [path closePath]; // arrow top side
arrowMaskLayer.path = path.CGPath; arrowMaskLayer.path = path.CGPath;
self.editionArrowView.layer.mask = arrowMaskLayer; self.editionArrowView.layer.mask = arrowMaskLayer;
self.isAccessibilityElement = YES;
} }
- (void)customizeCollectionViewCellRendering - (void)customizeCollectionViewCellRendering
@ -86,6 +88,8 @@
self.roomTitle1.hidden = YES; self.roomTitle1.hidden = YES;
self.roomTitle2.hidden = YES; self.roomTitle2.hidden = YES;
NSMutableString *accessibilityLabel = [self.roomTitle.text mutableCopy];
// Check whether the room display name is an alias to keep visible the HS. // Check whether the room display name is an alias to keep visible the HS.
if ([MXTools isMatrixRoomAlias:roomCellData.roomDisplayname]) if ([MXTools isMatrixRoomAlias:roomCellData.roomDisplayname])
{ {
@ -97,6 +101,7 @@
self.roomTitle1.text = [roomCellData.roomDisplayname substringToIndex:range.location + 1]; self.roomTitle1.text = [roomCellData.roomDisplayname substringToIndex:range.location + 1];
self.roomTitle2.hidden = NO; self.roomTitle2.hidden = NO;
self.roomTitle2.text = [roomCellData.roomDisplayname substringFromIndex:range.location + 1]; self.roomTitle2.text = [roomCellData.roomDisplayname substringFromIndex:range.location + 1];
accessibilityLabel = [[NSString stringWithFormat:@"%@, %@", self.roomTitle1.text, self.roomTitle2.text] mutableCopy];
} }
} }
@ -118,6 +123,10 @@
self.badgeLabel.hidden = NO; self.badgeLabel.hidden = NO;
self.badgeLabel.badgeColor = roomCellData.highlightCount ? ThemeService.shared.theme.noticeColor : ThemeService.shared.theme.noticeSecondaryColor; self.badgeLabel.badgeColor = roomCellData.highlightCount ? ThemeService.shared.theme.noticeColor : ThemeService.shared.theme.noticeSecondaryColor;
self.badgeLabel.text = roomCellData.notificationCountStringValue; self.badgeLabel.text = roomCellData.notificationCountStringValue;
NSUInteger count = roomCellData.notificationCount;
NSString *newMessagesLabel = count == 1 ? [VectorL10n roomNewMessageNotification:count] : [VectorL10n roomNewMessagesNotification:count];
[accessibilityLabel appendFormat:@", %@", newMessagesLabel];
} }
// Use bold font for the room title // Use bold font for the room title
@ -130,6 +139,8 @@
} }
self.accessibilityLabel = accessibilityLabel;
[self.roomAvatar vc_setRoomAvatarImageWith:roomCellData.avatarUrl [self.roomAvatar vc_setRoomAvatarImageWith:roomCellData.avatarUrl
roomId:roomCellData.roomIdentifier roomId:roomCellData.roomIdentifier
displayName:roomCellData.roomDisplayname displayName:roomCellData.roomDisplayname

View file

@ -30,6 +30,11 @@ static CGFloat const kEditionViewCornerRadius = 10.0;
self.editionViewBottomConstraint.constant = 0; self.editionViewBottomConstraint.constant = 0;
self.editionView.layer.masksToBounds = YES; self.editionView.layer.masksToBounds = YES;
// Hide both the cell and its collection view from voiceover.
// Instead we expose the individual cells as accessibility elements.
self.isAccessibilityElement = NO;
self.collectionView.isAccessibilityElement = NO;
} }
- (void)customizeTableViewCellRendering - (void)customizeTableViewCellRendering

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait" appearance="light"/> <device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@ -16,7 +16,7 @@
<rect key="frame" x="0.0" y="0.0" width="600" height="181"/> <rect key="frame" x="0.0" y="0.0" width="600" height="181"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="iXt-1Y-bEu"> <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="iXt-1Y-bEu" customClass="AccessibleCollectionView" customModule="Riot" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="600" height="116"/> <rect key="frame" x="0.0" y="0.0" width="600" height="116"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="10" minimumInteritemSpacing="10" id="zZI-Za-2q1"> <collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="10" minimumInteritemSpacing="10" id="zZI-Za-2q1">
@ -83,7 +83,7 @@
</constraints> </constraints>
</imageView> </imageView>
</subviews> </subviews>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <color key="backgroundColor" systemColor="groupTableViewBackgroundColor"/>
<constraints> <constraints>
<constraint firstItem="f0O-Nh-XqH" firstAttribute="centerX" secondItem="MbR-Oe-6k1" secondAttribute="centerX" id="0NZ-qp-2Nk"/> <constraint firstItem="f0O-Nh-XqH" firstAttribute="centerX" secondItem="MbR-Oe-6k1" secondAttribute="centerX" id="0NZ-qp-2Nk"/>
<constraint firstItem="cgb-3x-9qQ" firstAttribute="centerX" secondItem="uG0-u6-BBj" secondAttribute="centerX" id="2xF-Df-927"/> <constraint firstItem="cgb-3x-9qQ" firstAttribute="centerX" secondItem="uG0-u6-BBj" secondAttribute="centerX" id="2xF-Df-927"/>
@ -155,5 +155,8 @@
<image name="room_action_leave" width="24" height="24"/> <image name="room_action_leave" width="24" height="24"/>
<image name="room_action_notification" width="24" height="24"/> <image name="room_action_notification" width="24" height="24"/>
<image name="room_action_priority_low" width="24" height="24"/> <image name="room_action_priority_low" width="24" height="24"/>
<systemColor name="groupTableViewBackgroundColor">
<color red="0.94901960784313721" green="0.94901960784313721" blue="0.96862745098039216" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
</resources> </resources>
</document> </document>

View file

@ -0,0 +1,38 @@
//
// Copyright 2021 New Vector Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import UIKit
import Reusable
class LaunchLoadingViewController: UIViewController, Reusable {
required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") }
init() {
super.init(nibName: "LaunchLoadingViewController", bundle: nil)
let launchLoadingView = LaunchLoadingView.instantiate()
launchLoadingView.update(theme: ThemeService.shared().theme)
view.vc_addSubViewMatchingParent(launchLoadingView)
// The launch time isn't profiled for analytics as it's presentation length
// will be artificially changed based on other views in the flow.
}
override func viewWillAppear(_ animated: Bool) {
navigationController?.setNavigationBarHidden(true, animated: false)
}
}

View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="LaunchLoadingViewController" customModule="Riot" customModuleProvider="target">
<connections>
<outlet property="view" destination="25f-lP-cnO" id="Qdu-wY-5s0"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="25f-lP-cnO">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<viewLayoutGuide key="safeArea" id="FXc-bE-Yxp"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<point key="canvasLocation" x="192" y="-103"/>
</view>
</objects>
<resources>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View file

@ -478,3 +478,4 @@
"attachment_unsupported_preview_message" = "Ce type de fichier nest pas pris en charge."; "attachment_unsupported_preview_message" = "Ce type de fichier nest pas pris en charge.";
"attachment_unsupported_preview_title" = "Prévisualisation impossible"; "attachment_unsupported_preview_title" = "Prévisualisation impossible";
"room_displayname_all_other_members_left" = "%@ (Quitté)"; "room_displayname_all_other_members_left" = "%@ (Quitté)";
"message_reply_to_sender_sent_their_location" = "a partagé sa localisation.";

View file

@ -2,9 +2,9 @@
// Login Screen // Login Screen
"login_create_account" = "アカウント作成:"; "login_create_account" = "アカウント作成:";
"login_server_url_placeholder" = "URL (例 https://matrix.org)"; "login_server_url_placeholder" = "URL (例 https://matrix.org)";
"login_home_server_title" = "接続先サーバURL:"; "login_home_server_title" = "接続先サーバURL:";
"login_home_server_info" = "あなたの接続先サーバは、あなたの全ての会話とアカウント情報を保存します"; "login_home_server_info" = "あなたの接続先サーバは、あなたの全ての会話とアカウント情報を保存します";
"login_identity_server_title" = "認証サーバURL:"; "login_identity_server_title" = "認証サーバURL:";
"login_password_placeholder" = "パスワード"; "login_password_placeholder" = "パスワード";
"login_email_placeholder" = "メールアドレス"; "login_email_placeholder" = "メールアドレス";
// Action // Action
@ -12,11 +12,11 @@
"yes" = "はい"; "yes" = "はい";
"back" = "戻る"; "back" = "戻る";
"close" = "閉じる"; "close" = "閉じる";
"continue" = "続"; "continue" = "続ける";
"sign_up" = "登録"; "sign_up" = "登録";
"resend_message" = "メッセージを再送信する"; "resend_message" = "メッセージを再送信";
"select_all" = "全て選択"; "select_all" = "全て選択";
"show_details" = "詳細を表示する"; "show_details" = "詳細を表示";
"login_identity_server_info" = "Matrixは、どの電子メールなどがどのMatrix IDに属しているかを追跡するアイデンティティサーバーを提供します。 現在 https://matrix.org のみが存在します。"; "login_identity_server_info" = "Matrixは、どの電子メールなどがどのMatrix IDに属しているかを追跡するアイデンティティサーバーを提供します。 現在 https://matrix.org のみが存在します。";
"login_user_id_placeholder" = "Matrix ID例 @bob:matrix.org または bob"; "login_user_id_placeholder" = "Matrix ID例 @bob:matrix.org または bob";
"login_optional_field" = "オプション"; "login_optional_field" = "オプション";
@ -25,16 +25,16 @@
"login_prompt_email_token" = "メールの検証トークンを入力してください:"; "login_prompt_email_token" = "メールの検証トークンを入力してください:";
"login_error_title" = "ログインに失敗しました"; "login_error_title" = "ログインに失敗しました";
"login_error_no_login_flow" = "このホームサーバーから認証情報を取得できませんでした"; "login_error_no_login_flow" = "このホームサーバーから認証情報を取得できませんでした";
"login_error_do_not_support_login_flows" = "現在、このホームサーバーによって定義されたログインフローの一部またはすべてをサポートしていません"; "login_error_do_not_support_login_flows" = "現在、このホームサーバーによって定義されたログインフローの一部またはてをサポートしていません";
"login_error_registration_is_not_supported" = "登録は現在サポートされていません"; "login_error_registration_is_not_supported" = "登録は現在サポートされていません";
"login_error_forbidden" = "無効なユーザー名/パスワード"; "login_error_forbidden" = "無効なユーザー名/パスワード";
"login_error_unknown_token" = "指定されたアクセストークンが認識されませんでした"; "login_error_unknown_token" = "指定されたアクセストークンが認識されませんでした";
"login_error_bad_json" = "不正な形式のJSON"; "login_error_bad_json" = "不正な形式のJSON";
"login_error_not_json" = "有効なJSONを含んでいませんでした"; "login_error_not_json" = "有効なJSONを含んでいませんでした";
"login_error_limit_exceeded" = "あまりにも多くのリクエストが送られました"; "login_error_limit_exceeded" = "あまりにも多くのリクエストが送られました";
"login_error_user_in_use" = "このユーザー名はすでに使用されています"; "login_error_user_in_use" = "このユーザー名はに使用されています";
"login_error_login_email_not_yet" = "まだクリックされていないメールリンク"; "login_error_login_email_not_yet" = "まだクリックされていないメールリンク";
"login_use_fallback" = "フォールバックページを使用する"; "login_use_fallback" = "フォールバックページを使用";
"login_leave_fallback" = "キャンセル"; "login_leave_fallback" = "キャンセル";
"login_invalid_param" = "無効なパラメーター"; "login_invalid_param" = "無効なパラメーター";
"register_error_title" = "登録に失敗しました"; "register_error_title" = "登録に失敗しました";
@ -46,46 +46,46 @@
"login_error_resource_limit_exceeded_message_default" = "このホームサーバーは、リソース制限の1つを超えています。"; "login_error_resource_limit_exceeded_message_default" = "このホームサーバーは、リソース制限の1つを超えています。";
"login_error_resource_limit_exceeded_message_monthly_active_user" = "このホームサーバーは、月間アクティブユーザー制限を超えています。"; "login_error_resource_limit_exceeded_message_monthly_active_user" = "このホームサーバーは、月間アクティブユーザー制限を超えています。";
"login_error_resource_limit_exceeded_message_contact" = "\n\nこのサービスを続行するには、サービス管理者に連絡してください。"; "login_error_resource_limit_exceeded_message_contact" = "\n\nこのサービスを続行するには、サービス管理者に連絡してください。";
"login_error_resource_limit_exceeded_contact_button" = "管理者に連絡する"; "login_error_resource_limit_exceeded_contact_button" = "管理者に連絡";
"abort" = "中断する"; "abort" = "中断";
"discard" = "破棄"; "discard" = "破棄";
"dismiss" = "却下する"; "dismiss" = "却下";
"retry" = "再試行"; "retry" = "再試行";
"submit" = "提出"; "submit" = "提出";
"submit_code" = "コードを送信"; "submit_code" = "コードを送信";
"set_default_power_level" = "権限レベルをリセット"; "set_default_power_level" = "権限レベルをリセット";
"set_moderator" = "モデレーターを設定"; "set_moderator" = "モデレーターを設定";
"set_admin" = "管理者を設定"; "set_admin" = "管理者を設定";
"start_chat" = "チャットを始める"; "start_chat" = "チャットを始";
"start_voice_call" = "音声通話を開始"; "start_voice_call" = "音声通話を開始";
"start_video_call" = "ビデオ通話を開始"; "start_video_call" = "ビデオ通話を開始";
"mention" = "記載"; "mention" = "メンション";
"select_account" = "アカウントを選択"; "select_account" = "アカウントを選択";
"attach_media" = "ライブラリからメディアを添付"; "attach_media" = "ライブラリからメディアを添付";
"capture_media" = "写真/ビデオを撮る"; "capture_media" = "写真/ビデオを撮る";
"invite_user" = "matrixユーザーを招待"; "invite_user" = "Matrixユーザーを招待";
"reset_to_default" = "デフォルトにリセット"; "reset_to_default" = "デフォルトにリセット";
"cancel_upload" = "アップロードをキャンセル"; "cancel_upload" = "アップロードをキャンセル";
"cancel_download" = "ダウンロードをキャンセル"; "cancel_download" = "ダウンロードをキャンセル";
"answer_call" = "通話に応答する"; "answer_call" = "通話に応答";
"reject_call" = "通話を拒否する"; "reject_call" = "通話を拒否";
"end_call" = "通話終了"; "end_call" = "通話終了";
"ignore" = "無視"; "ignore" = "無視";
// Events formatter // Events formatter
"notice_avatar_changed_too" = "(アバターも変わった)"; "notice_avatar_changed_too" = "(アバターも変更されました)";
"notice_room_name_removed" = "%@は部屋名を削除しました"; "notice_room_name_removed" = "%@がルーム名を削除しました";
"notice_room_topic_removed" = "%@トピックを削除しました"; "notice_room_topic_removed" = "%@トピックを削除しました";
"notice_event_redacted" = "<編集された%@>"; "notice_event_redacted" = "<編集された%@>";
"notice_event_redacted_by" = " %@により"; "notice_event_redacted_by" = " %@により";
"notice_event_redacted_reason" = " [理由: %@]"; "notice_event_redacted_reason" = " [理由: %@]";
"notice_profile_change_redacted" = "%@彼らのプロフィール %@を更新しました"; "notice_profile_change_redacted" = "%@彼らのプロフィール %@を更新しました";
"notice_room_created" = "%@は部屋を作成しました"; "notice_room_created" = "%@がルームを作成しました";
"notice_room_join_rule" = "結合ルールは次のとおり: %@"; "notice_room_join_rule" = "結合ルールは次のとおり: %@";
"notice_room_power_level_intro" = "ルームメンバーの権限レベル:"; "notice_room_power_level_intro" = "ルームメンバーの権限レベル:";
"notice_room_power_level_acting_requirement" = "アクション前にユーザーの必要な最小権限レベル:"; "notice_room_power_level_acting_requirement" = "アクション前にユーザーの必要な最小権限レベル:";
"notice_room_power_level_event_requirement" = "イベントに関連する最小権限レベル:"; "notice_room_power_level_event_requirement" = "イベントに関連する最小権限レベル:";
"notice_room_aliases" = "ルームエイリアス: %@"; "notice_room_aliases" = "ルームエイリアス: %@";
"notice_room_related_groups" = "この部屋に関連付けられたグループ: %@"; "notice_room_related_groups" = "このルームに関連付けられたグループ: %@";
"notice_encrypted_message" = "暗号化されたメッセージ"; "notice_encrypted_message" = "暗号化されたメッセージ";
"notice_encryption_enabled" = "%@はエンドツーエンド暗号化を有効にする (アルゴリズム %@)"; "notice_encryption_enabled" = "%@はエンドツーエンド暗号化を有効にする (アルゴリズム %@)";
"notice_image_attachment" = "画像添付"; "notice_image_attachment" = "画像添付";
@ -100,16 +100,16 @@
"notice_error_unsupported_event" = "サポートされていないイベント"; "notice_error_unsupported_event" = "サポートされていないイベント";
"notice_error_unexpected_event" = "予期しないイベント"; "notice_error_unexpected_event" = "予期しないイベント";
"notice_error_unknown_event_type" = "不明なイベントタイプ"; "notice_error_unknown_event_type" = "不明なイベントタイプ";
"notice_room_history_visible_to_anyone" = "%@ 誰でも将来の部屋履歴を表示されます。"; "notice_room_history_visible_to_anyone" = "%@が今後のルーム履歴を「誰でも」閲覧可能に設定しました。";
"notice_room_history_visible_to_members" = "%@ ルームメンバー全員に将来の部屋履歴を表示されます。"; "notice_room_history_visible_to_members" = "%@が今後のルーム履歴を「メンバーのみ」閲覧可能に設定しました。";
"notice_room_history_visible_to_members_from_invited_point" = "%@ ルームメンバー全員に招待した時点からの部屋履歴を表示されます。"; "notice_room_history_visible_to_members_from_invited_point" = "%@が今後のルーム履歴を「メンバーのみ (招待された時点以降)」閲覧可能に設定しました。";
"notice_room_history_visible_to_members_from_joined_point" = "%@ ルームメンバー全員に参加した時点からの部屋履歴を表示されます。"; "notice_room_history_visible_to_members_from_joined_point" = "%@が今後のルーム履歴を「メンバーのみ (参加した時点以降)」閲覧可能に設定しました。";
"notice_crypto_unable_to_decrypt" = "** 復号化できません: %@ **"; "notice_crypto_unable_to_decrypt" = "** 復号化できません: %@ **";
"notice_crypto_error_unknown_inbound_session_id" = "送信者のセッションからこのメッセージのキーが送信されていません。"; "notice_crypto_error_unknown_inbound_session_id" = "送信者のセッションからこのメッセージ用の鍵が送信されていません。";
"notice_sticker" = "ステッカー"; "notice_sticker" = "ステッカー";
"notice_in_reply_to" = "返信"; "notice_in_reply_to" = "返信";
// room display name // room display name
"room_displayname_empty_room" = "空の部屋"; "room_displayname_empty_room" = "空のルーム";
"room_displayname_two_members" = "%@ と %@"; "room_displayname_two_members" = "%@ と %@";
"room_displayname_more_than_two_members" = "%@ と %@ 他"; "room_displayname_more_than_two_members" = "%@ と %@ 他";
// Settings // Settings
@ -117,26 +117,26 @@
"settings_enable_inapp_notifications" = "アプリ内通知を有効にする"; "settings_enable_inapp_notifications" = "アプリ内通知を有効にする";
"settings_enable_push_notifications" = "プッシュ通知を有効にする"; "settings_enable_push_notifications" = "プッシュ通知を有効にする";
"settings_enter_validation_token_for" = "%@の検証トークンを入力:"; "settings_enter_validation_token_for" = "%@の検証トークンを入力:";
"notification_settings_room_rule_title" = "部屋: '%@'"; "notification_settings_room_rule_title" = "ルーム: '%@'";
// Devices // Devices
"device_details_title" = "セッション情報\n"; "device_details_title" = "セッション情報\n";
"device_details_name" = "名前\n"; "device_details_name" = "名前\n";
"device_details_identifier" = "ID\n"; "device_details_identifier" = "ID\n";
"device_details_last_seen" = "ラストシーン\n"; "device_details_last_seen" = "最終接続日\n";
"device_details_last_seen_format" = "%@ @ %@\n"; "device_details_last_seen_format" = "%@ @ %@\n";
"device_details_rename_prompt_message" = "端末名:"; "device_details_rename_prompt_message" = "セッションの公開名は、あなたとやり取りする人々に対して表示されます";
"device_details_delete_prompt_title" = "認証"; "device_details_delete_prompt_title" = "認証";
"device_details_delete_prompt_message" = "この操作には、追加の認証が必要です。\n続行するには、パスワードを入力してください。"; "device_details_delete_prompt_message" = "この操作には、追加の認証が必要です。\n続行するには、パスワードを入力してください。";
// Encryption information // Encryption information
"room_event_encryption_info_title" = "エンドツーエンド暗号化情報\n\n"; "room_event_encryption_info_title" = "エンドツーエンド暗号化情報\n\n";
"room_event_encryption_info_event" = "イベント情報\n"; "room_event_encryption_info_event" = "イベント情報\n";
"room_event_encryption_info_event_user_id" = "ユーザーID\n"; "room_event_encryption_info_event_user_id" = "ユーザーID\n";
"room_event_encryption_info_event_identity_key" = "Curve25519 identity key\n"; "room_event_encryption_info_event_identity_key" = "Curve25519 固有鍵\n";
"room_event_encryption_info_event_fingerprint_key" = "クレームされたEd25519指紋キー\n"; "room_event_encryption_info_event_fingerprint_key" = "要求されたフィンガープリントキー Ed25519\n";
"room_event_encryption_info_event_algorithm" = "アルゴリズム\n"; "room_event_encryption_info_event_algorithm" = "アルゴリズム\n";
"room_event_encryption_info_event_session_id" = "セッションID\n"; "room_event_encryption_info_event_session_id" = "セッションID\n";
"room_event_encryption_info_event_decryption_error" = "復号化エラー\n"; "room_event_encryption_info_event_decryption_error" = "復号化エラー\n";
"room_event_encryption_info_event_unencrypted" = "暗号化されていない"; "room_event_encryption_info_event_unencrypted" = "暗号化されていません";
"room_event_encryption_info_event_none" = "なし"; "room_event_encryption_info_event_none" = "なし";
"room_event_encryption_info_device" = "\n送信者セッション情報\n"; "room_event_encryption_info_device" = "\n送信者セッション情報\n";
"room_event_encryption_info_device_unknown" = "未知のセッション\n"; "room_event_encryption_info_device_unknown" = "未知のセッション\n";
@ -144,52 +144,52 @@
"room_event_encryption_info_device_id" = "ID\n"; "room_event_encryption_info_device_id" = "ID\n";
"room_event_encryption_info_device_verification" = "検証\n"; "room_event_encryption_info_device_verification" = "検証\n";
"room_event_encryption_info_device_fingerprint" = "Ed25519 fingerprint\n"; "room_event_encryption_info_device_fingerprint" = "Ed25519 fingerprint\n";
"room_event_encryption_info_device_verified" = "検証済"; "room_event_encryption_info_device_verified" = "検証済";
"room_event_encryption_info_device_not_verified" = "検証されていない"; "room_event_encryption_info_device_not_verified" = "検証されていない";
"room_event_encryption_info_device_blocked" = "ブラックリストに載せた"; "room_event_encryption_info_device_blocked" = "ブラックリストに載せた";
"room_event_encryption_info_verify" = "検証中..."; "room_event_encryption_info_verify" = "検証しています…";
"room_event_encryption_info_unverify" = "未検証"; "room_event_encryption_info_unverify" = "未検証";
"room_event_encryption_info_block" = "ブラックリスト"; "room_event_encryption_info_block" = "ブラックリスト";
"room_event_encryption_info_unblock" = "ブラックでないリスト"; "room_event_encryption_info_unblock" = "ブラックでないリスト";
"room_event_encryption_verify_title" = "セッション検証\n\n"; "room_event_encryption_verify_title" = "セッション検証\n\n";
"room_event_encryption_verify_message" = "このセッションが信頼できることを確認するには、他の方法(個人や電話など)で所有者に連絡し、セッションのユーザー設定で表示される鍵が以下のキーと一致するかどうかを尋ねます。\n\nセッション名: %@\nセッションID: %@\nセッションkey: %@\n\n一致する場合は、下の確認ボタンを押します。 それ以外の人がこのセッションを傍受している場合は、代わりにブラックリストボタンを押してください。\n\n将来この検証プロセスはより洗練されたものになるでしょう。"; "room_event_encryption_verify_message" = "このセッションが信頼できることを確認するには、他の方法(対面や電話など)で所有者に連絡し、セッションのユーザー設定で表示される鍵が以下の鍵と一致するかどうかを訪ねてください。\n\nセッション名: %@\nセッションID: %@\nセッションキー: %@\n\n一致する場合は、下の確認ボタンを押します。 それ以外の人がこのセッションを傍受している場合は、代わりにブラックリストボタンを押してください。\n\n将来この検証プロセスはより洗練されたものになります。";
"room_event_encryption_verify_ok" = "検証"; "room_event_encryption_verify_ok" = "検証";
// Account // Account
"account_save_changes" = "変更を保存"; "account_save_changes" = "変更を保存";
"account_link_email" = "リンクメール"; "account_link_email" = "リンクメール";
"account_linked_emails" = "リンクされたメール"; "account_linked_emails" = "リンクされたメール";
"account_email_validation_title" = "検証保留中"; "account_email_validation_title" = "認証の保留中";
"account_email_validation_message" = "メールをチェックし、それに含まれているリンクをクリックしてください。 これが完了したら、[続行]をクリックします。"; "account_email_validation_message" = "電子メールを確認して、本文中のURLをクリックしてください。完了したら「続行する」をクリックしてください。";
"account_email_validation_error" = "メールアドレスを確認できません。 あなたのメールをチェックし、それに含まれているリンクをクリックしてください。 これが完了したら、[続行]をクリックします"; "account_email_validation_error" = "メールアドレスを認証できません。メールを確認して、記載されているリンクをクリックしてください。その後、「続行する」をクリックしてください";
"account_msisdn_validation_title" = "検証保留中"; "account_msisdn_validation_title" = "認証の保留中";
"account_msisdn_validation_message" = "アクティベーションコード付きのSMSを送信しました。 以下にこのコードを入力してください。"; "account_msisdn_validation_message" = "SMSで認証番号を送りました。以下にその番号を入力してください。";
"account_msisdn_validation_error" = "電話番号を確認できません。"; "account_msisdn_validation_error" = "電話番号を確認できません。";
"account_error_display_name_change_failed" = "表示名の変更に失敗しました"; "account_error_display_name_change_failed" = "表示名の変更に失敗しました";
"account_error_picture_change_failed" = "画像の変更に失敗しました"; "account_error_picture_change_failed" = "画像の変更に失敗しました";
"account_error_matrix_session_is_not_opened" = "Matrixセッションが開かれていません"; "account_error_matrix_session_is_not_opened" = "Matrixセッションが開かれていません";
"account_error_email_wrong_title" = "無効な電子メールアドレス"; "account_error_email_wrong_title" = "無効な電子メールアドレス";
"account_error_email_wrong_description" = "これは有効なメールアドレスではないようです"; "account_error_email_wrong_description" = "メールアドレスの形式が正しくありません";
"account_error_msisdn_wrong_title" = "無効な電話番号"; "account_error_msisdn_wrong_title" = "無効な電話番号";
"account_error_msisdn_wrong_description" = "これは有効な電話番号ではないようです"; "account_error_msisdn_wrong_description" = "電話番号の形式が正しくありません";
// Room creation // Room creation
"room_creation_name_title" = "部屋名:"; "room_creation_name_title" = "ルーム名:";
"room_creation_name_placeholder" = "(例 ランチグループ)"; "room_creation_name_placeholder" = "(例 ランチグループ)";
"room_creation_alias_title" = "部屋の別名:"; "room_creation_alias_title" = "ルームの別名:";
"room_creation_alias_placeholder" = "(例 #foo:example.org)"; "room_creation_alias_placeholder" = "(例 #foo:example.org)";
"room_creation_alias_placeholder_with_homeserver" = "(例 #foo%@)"; "room_creation_alias_placeholder_with_homeserver" = "(例 #foo%@)";
"room_creation_participants_title" = "参加者:"; "room_creation_participants_title" = "参加者:";
"room_creation_participants_placeholder" = "(例 @bob:homeserver1; @john:homeserver2...)"; "room_creation_participants_placeholder" = "(例 @bob:homeserver1; @john:homeserver2)";
// Room // Room
"room_please_select" = "部屋を選択してください"; "room_please_select" = "ルームを選択してください";
"room_error_join_failed_title" = "部屋に参加できませんでした"; "room_error_join_failed_title" = "ルームに参加できませんでした";
"room_error_join_failed_empty_room" = "現在空の部屋に再参加することはできません。"; "room_error_join_failed_empty_room" = "現在空のルームに再参加することはできません。";
"room_error_name_edition_not_authorized" = "この部屋の名前を編集する権限がありません"; "room_error_name_edition_not_authorized" = "このルームの名前を編集する権限がありません";
"room_error_topic_edition_not_authorized" = "この部屋のトピックを編集する権限がありません"; "room_error_topic_edition_not_authorized" = "このルームのトピックを編集する権限がありません";
"room_error_cannot_load_timeline" = "タイムラインの読み込みに失敗しました"; "room_error_cannot_load_timeline" = "タイムラインの読み込みに失敗しました";
"room_error_timeline_event_not_found_title" = "タイムラインの位置を読み込めませんでした"; "room_error_timeline_event_not_found_title" = "タイムラインの位置を読み込めませんでした";
"room_error_timeline_event_not_found" = "アプリケーションがこのルームのタイムラインに特定のポイントをロードしようとしましたが、それを見つけることができませんでした"; "room_error_timeline_event_not_found" = "アプリケーションがこのルームのタイムラインに特定のポイントをロードしようとしましたが、それを見つけることができませんでした";
"room_left" = "あなたは部屋を出ました"; "room_left" = "あなたはルームを出ました";
"room_no_power_to_create_conference_call" = "この部屋で会議を開始するために招待する権限が必要です"; "room_no_power_to_create_conference_call" = "このルームで会議を開始するために招待する権限が必要です";
"room_no_conference_call_in_encrypted_rooms" = "暗号化された会議室では会議通話はサポートされません"; "room_no_conference_call_in_encrypted_rooms" = "暗号化された会議室では会議通話はサポートされません";
// Reply to message // Reply to message
"message_reply_to_sender_sent_an_image" = "画像を送信しました。"; "message_reply_to_sender_sent_an_image" = "画像を送信しました。";
@ -198,7 +198,7 @@
"message_reply_to_sender_sent_a_file" = "ファイルを送信しました。"; "message_reply_to_sender_sent_a_file" = "ファイルを送信しました。";
"message_reply_to_message_to_reply_to_prefix" = "に返信"; "message_reply_to_message_to_reply_to_prefix" = "に返信";
// Room members // Room members
"room_member_ignore_prompt" = "このユーザーからのすべてのメッセージを非表示にしますか?"; "room_member_ignore_prompt" = "このユーザーからのてのメッセージを非表示にしますか?";
"room_member_power_level_prompt" = "この変更を元に戻すことはできません。ユーザーが自分と同じレベルの権限を持つように促しますが、よろしいですか?"; "room_member_power_level_prompt" = "この変更を元に戻すことはできません。ユーザーが自分と同じレベルの権限を持つように促しますが、よろしいですか?";
// Attachment // Attachment
"attachment_size_prompt" = "次のように送信しますか:"; "attachment_size_prompt" = "次のように送信しますか:";
@ -210,8 +210,8 @@
"attachment_cancel_upload" = "アップロードをキャンセルしますか?"; "attachment_cancel_upload" = "アップロードをキャンセルしますか?";
"attachment_multiselection_size_prompt" = "画像を次のように送信しますか:"; "attachment_multiselection_size_prompt" = "画像を次のように送信しますか:";
"attachment_multiselection_original" = "実際のサイズ"; "attachment_multiselection_original" = "実際のサイズ";
"attachment_e2e_keys_file_prompt" = "このファイルには、Matrixクライアントからエクスポートされた暗号化キーが含まれています。\nファイルの内容を表示するか、ファイルの内容をインポートしますか?"; "attachment_e2e_keys_file_prompt" = "このファイルには、Matrixクライアントからエクスポートされた暗号鍵が含まれています。\nファイルの内容を表示するか、ファイル内の鍵をインポートしますか?";
"attachment_e2e_keys_import" = "インポート..."; "attachment_e2e_keys_import" = "インポート";
// Contacts // Contacts
"contact_mx_users" = "Matrixユーザー"; "contact_mx_users" = "Matrixユーザー";
"contact_local_contacts" = "ローカルの連絡先"; "contact_local_contacts" = "ローカルの連絡先";
@ -220,20 +220,20 @@
"group_section" = "グループ"; "group_section" = "グループ";
// Search // Search
"search_no_results" = "結果がありません"; "search_no_results" = "結果がありません";
"search_searching" = "検索中..."; "search_searching" = "検索しています…";
// Time // Time
"format_time_s" = "秒"; "format_time_s" = "秒";
"format_time_m" = "分"; "format_time_m" = "分";
"format_time_h" = "時"; "format_time_h" = "時";
"format_time_d" = "日"; "format_time_d" = "日";
// E2E import // E2E import
"e2e_import_room_keys" = "ルームキーをインポート"; "e2e_import_room_keys" = "ルームの暗号鍵をインポート";
"e2e_import_prompt" = "このプロセスでは、以前に別のMatrixクライアントからエクスポートした暗号化キーをインポートできます。 これにより、他のクライアントが解読できるすべてのメッセージを解読することができます。\nエクスポートファイルはパスフレーズで保護されています。 ファイルを解読するには、パスフレーズをここに入力する必要があります。"; "e2e_import_prompt" = "このプロセスでは、以前に別のMatrixクライアントからエクスポートした暗号鍵をインポートできます。 これにより、他のクライアントが解読できる全てのメッセージを解読することができます。\nエクスポートした暗号鍵のファイルはパスフレーズで保護されています。 ファイルを復号化するには、パスフレーズをここに入力する必要があります。";
"e2e_import" = "インポート"; "e2e_import" = "インポート";
"e2e_passphrase_enter" = "パスフレーズを入力"; "e2e_passphrase_enter" = "パスフレーズを入力";
// E2E export // E2E export
"e2e_export_room_keys" = "ルームキーのエクスポート"; "e2e_export_room_keys" = "ルームの暗号鍵をエクスポート";
"e2e_export_prompt" = "このプロセスでは、暗号化されたルームで受信したメッセージのキーをローカルファイルにエクスポートできます。 その後、クライアントがこれらのメッセージを復号化できるように、ファイルを別のMatrixクライアントにインポートすることができます。\nエクスポートされたファイルは、誰でも閲覧できる暗号化されたメッセージを復号化することができるので、安全に保つように注意する必要があります。"; "e2e_export_prompt" = "このプロセスでは、暗号化されたルームで受信したメッセージのをローカルファイルにエクスポートできます。 そのファイルを別のMatrixクライアントにインポートすると、クライアントはこれらのメッセージを復号化することができます。\nエクスポートしたファイルを使えば、誰でも暗号化されたメッセージを復号化できるので、ファイルを安全に保つように注意する必要があります。";
"e2e_export" = "エクスポート"; "e2e_export" = "エクスポート";
"e2e_passphrase_confirm" = "パスフレーズを確認"; "e2e_passphrase_confirm" = "パスフレーズを確認";
"e2e_passphrase_empty" = "パスフレーズは空であってはいけません"; "e2e_passphrase_empty" = "パスフレーズは空であってはいけません";
@ -247,8 +247,8 @@
"error_common_message" = "エラーが発生しました。 後でもう一度お試しください。"; "error_common_message" = "エラーが発生しました。 後でもう一度お試しください。";
"not_supported_yet" = "まだサポートされていません"; "not_supported_yet" = "まだサポートされていません";
"default" = "既定"; "default" = "既定";
"private" = "Private"; "private" = "非公開";
"public" = "Public"; "public" = "公開";
"power_level" = "権限レベル"; "power_level" = "権限レベル";
"network_error_not_reachable" = "ネットワーク接続を確認してください"; "network_error_not_reachable" = "ネットワーク接続を確認してください";
"user_id_placeholder" = "例: @bob:homeserver"; "user_id_placeholder" = "例: @bob:homeserver";
@ -260,39 +260,39 @@
"local_contacts_access_discovery_warning_title" = "ユーザーの探索"; "local_contacts_access_discovery_warning_title" = "ユーザーの探索";
"local_contacts_access_discovery_warning" = "%@は、ユーザーを検索するためにあなたの連絡先から電子メールと電話番号をアップロードしたい"; "local_contacts_access_discovery_warning" = "%@は、ユーザーを検索するためにあなたの連絡先から電子メールと電話番号をアップロードしたい";
// Country picker // Country picker
"country_picker_title" = "国を選択する"; "country_picker_title" = "国を選択";
// Language picker // Language picker
"language_picker_title" = "言語を選択する"; "language_picker_title" = "言語を選択";
"language_picker_default_language" = "既定値 (%@)"; "language_picker_default_language" = "既定値 (%@)";
"notice_room_invite" = "%@%@を招待しました"; "notice_room_invite" = "%@%@を招待しました";
"notice_room_third_party_invite" = "%@は、部屋に参加するよう%@へ招待状を送った"; "notice_room_third_party_invite" = "%@が%@にルームへの招待状を送りました";
"notice_room_third_party_registered_invite" = "%@%@の招待を受け入れました"; "notice_room_third_party_registered_invite" = "%@%@の招待を受け入れました";
"notice_room_join" = "%@参加しました"; "notice_room_join" = "%@参加しました";
"notice_room_leave" = "%@退出しました"; "notice_room_leave" = "%@退出しました";
"notice_room_reject" = "%@招待を拒否しました"; "notice_room_reject" = "%@招待を拒否しました";
"notice_room_kick" = "%@%@を追い出しました"; "notice_room_kick" = "%@%@を追い出しました";
"notice_room_unban" = "%@は%@を追放解除した"; "notice_room_unban" = "%@が%@を追放解除しました";
"notice_room_ban" = "%@は%@を追放した"; "notice_room_ban" = "%@が%@を追放しました";
"notice_room_withdraw" = "%@%@の招待を辞退しました"; "notice_room_withdraw" = "%@%@の招待を辞退しました";
"notice_room_reason" = ". 理由: %@"; "notice_room_reason" = ". 理由: %@";
"notice_avatar_url_changed" = "%@アバターを変更しました"; "notice_avatar_url_changed" = "%@アバターを変更しました";
"notice_display_name_set" = "%@表示名を%@に設定しました"; "notice_display_name_set" = "%@表示名を%@に設定しました";
"notice_display_name_changed_from" = "%@表示名を%@から%@に変更しました"; "notice_display_name_changed_from" = "%@表示名を%@から%@に変更しました";
"notice_display_name_removed" = "%@表示名を削除しました"; "notice_display_name_removed" = "%@表示名を削除しました";
"notice_topic_changed" = "%@はトピックを次のように変更しました: %@"; "notice_topic_changed" = "%@がトピックを次のように変更しました:%@";
"notice_room_name_changed" = "%@は部屋名を次のように変更しました: %@"; "notice_room_name_changed" = "%@がルーム名を次のように変更しました:%@";
"notice_placed_voice_call" = "%@電話をかけました"; "notice_placed_voice_call" = "%@電話をかけました";
"notice_placed_video_call" = "%@ビデオ電話をかけました"; "notice_placed_video_call" = "%@ビデオ電話をかけました";
"notice_answered_video_call" = "%@は通話に応答しました"; "notice_answered_video_call" = "%@が電話に出ました";
"notice_ended_video_call" = "%@通話を終了しました"; "notice_ended_video_call" = "%@通話を終了しました";
"notice_conference_call_request" = "%@VoIP会議をリクエストしました"; "notice_conference_call_request" = "%@VoIP会議をリクエストしました";
"notice_conference_call_started" = "VoIP会議が開始されました"; "notice_conference_call_started" = "VoIP会議が開始ました";
"notice_conference_call_finished" = "VoIP会議が終了しました"; "notice_conference_call_finished" = "VoIP会議が終了しました";
// button names // button names
"ok" = "OK"; "ok" = "OK";
"cancel" = "キャンセル"; "cancel" = "キャンセル";
"save" = "保存"; "save" = "保存";
"leave" = "保存しない"; "leave" = "退出";
"send" = "送信"; "send" = "送信";
"copy_button_name" = "コピー"; "copy_button_name" = "コピー";
"resend" = "再送信"; "resend" = "再送信";
@ -303,34 +303,34 @@
"view" = "表示"; "view" = "表示";
// actions // actions
"action_logout" = "ログアウト"; "action_logout" = "ログアウト";
"create_room" = "部屋を作る"; "create_room" = "ルームを作る";
"login" = "ログイン"; "login" = "ログイン";
"create_account" = "アカウントを作成する"; "create_account" = "アカウントを作成";
"membership_invite" = "招待した"; "membership_invite" = "招待しました";
"membership_leave" = "退出"; "membership_leave" = "退出しました";
"membership_ban" = "追放"; "membership_ban" = "ブロックしました";
"num_members_one" = "%@ ユーザー"; "num_members_one" = "%@ ユーザー";
"num_members_other" = "%@ ユーザー"; "num_members_other" = "%@ ユーザー";
"invite" = "招待"; "invite" = "招待";
"kick" = "追い出す"; "kick" = "キック";
"ban" = "追放"; "ban" = "ブロック";
"unban" = "追放解除"; "unban" = "ブロック解除";
"message_unsaved_changes" = "保存されていない変更があります。 放置すると捨てられます。"; "message_unsaved_changes" = "保存されていない変更があります。 退出すると変更は取り消されます。";
// Login Screen // Login Screen
"login_error_already_logged_in" = "ログイン済"; "login_error_already_logged_in" = "ログイン済";
"login_error_must_start_http" = "URLは http[s]:// で始まる必要があります"; "login_error_must_start_http" = "URLは http[s]:// で始まる必要があります";
// room details dialog screen // room details dialog screen
"room_details_title" = "部屋の詳細"; "room_details_title" = "ルームの詳細";
// contacts list screen // contacts list screen
"invitation_message" = "私はmatrixであなたとチャットしたい。 詳細はウェブサイトhttp://matrix.orgをお尋ねください。"; "invitation_message" = "私はmatrixであなたとチャットしたい。 詳細はウェブサイトhttp://matrix.orgをお尋ねください。";
// Settings screen // Settings screen
"settings_title_config" = "構成"; "settings_title_config" = "構成";
"settings_title_notifications" = "通知"; "settings_title_notifications" = "通知";
// Notification settings screen // Notification settings screen
"notification_settings_disable_all" = "すべての通知を無効にする"; "notification_settings_disable_all" = "ての通知を無効にする";
"notification_settings_enable_notifications" = "通知を有効にする"; "notification_settings_enable_notifications" = "通知を有効にする";
"notification_settings_enable_notifications_warning" = "現在、すべての端末ですべての通知が無効になっています。"; "notification_settings_enable_notifications_warning" = "現在、全ての端末で全ての通知が無効になっています。";
"notification_settings_global_info" = "通知設定はユーザーアカウントに保存され、デスクトップ通知を含むすべてのクライアント間で共有されます。\n\nルールは順番に適用されます。 一致する最初のルールは、メッセージの結果を定義します。\nだから単語ごとの通知は、送信者ごとの通知よりも重要な部屋ごとの通知よりも重要です。\n同じ種類の複数のルールの場合、一致するリストの最初のルールが優先されます。"; "notification_settings_global_info" = "通知設定はユーザーアカウントに保存され、デスクトップ通知を含むてのクライアント間で共有されます。\n\nルールは順番に適用されます。 一致する最初のルールは、メッセージの結果を定義します。\nだから単語ごとの通知は、送信者ごとの通知よりも重要なルームごとの通知よりも重要です。\n同じ種類の複数のルールの場合、一致するリストの最初のルールが優先されます。";
"notification_settings_per_word_notifications" = "単語単位の通知"; "notification_settings_per_word_notifications" = "単語単位の通知";
"notification_settings_per_word_info" = "単語は大文字と小文字を区別せずに一致させ、*ワイルドカードを含めることができます。 従って:\nfooは、区切り文字で囲まれた文字列foo例 句読点や空白、行の開始/終了)と一致します。\nfoo*は、fooで始まる単語に一致します。\n*foo*は、3文字のfooを含む単語に一致します。"; "notification_settings_per_word_info" = "単語は大文字と小文字を区別せずに一致させ、*ワイルドカードを含めることができます。 従って:\nfooは、区切り文字で囲まれた文字列foo例 句読点や空白、行の開始/終了)と一致します。\nfoo*は、fooで始まる単語に一致します。\n*foo*は、3文字のfooを含む単語に一致します。";
"notification_settings_always_notify" = "常に通知"; "notification_settings_always_notify" = "常に通知";
@ -338,27 +338,27 @@
"notification_settings_word_to_match" = "一致する単語"; "notification_settings_word_to_match" = "一致する単語";
"notification_settings_highlight" = "Highlight"; "notification_settings_highlight" = "Highlight";
"notification_settings_custom_sound" = "カスタムサウンド"; "notification_settings_custom_sound" = "カスタムサウンド";
"notification_settings_per_room_notifications" = "1部屋あたりの通知"; "notification_settings_per_room_notifications" = "1ルームあたりの通知";
"notification_settings_per_sender_notifications" = "送信者ごとの通知"; "notification_settings_per_sender_notifications" = "送信者ごとの通知";
"notification_settings_sender_hint" = "@user:domain.com"; "notification_settings_sender_hint" = "@user:domain.com";
"notification_settings_select_room" = "部屋を選択"; "notification_settings_select_room" = "ルームを選択";
"notification_settings_other_alerts" = "その他のアラート"; "notification_settings_other_alerts" = "その他のアラート";
"notification_settings_contain_my_user_name" = "私のユーザー名を含むメッセージについて音で私に通知してください"; "notification_settings_contain_my_user_name" = "私のユーザー名を含むメッセージについて音で私に通知してください";
"notification_settings_contain_my_display_name" = "私の表示名が含まれているメッセージについて音で私に通知する"; "notification_settings_contain_my_display_name" = "私の表示名が含まれているメッセージが届いた際に音で通知";
"notification_settings_just_sent_to_me" = "私に送られたメッセージについての音で私に知らせる"; "notification_settings_just_sent_to_me" = "私に送られたメッセージについての音で私に知らせる";
"notification_settings_invite_to_a_new_room" = "私が新しい部屋に招待されたときに知らせる"; "notification_settings_invite_to_a_new_room" = "私が新しいルームに招待されたときに知らせる";
"notification_settings_people_join_leave_rooms" = "人が部屋に入退室したときに私に通知する"; "notification_settings_people_join_leave_rooms" = "誰かがルームに参加もしくは退出したときに通知";
"notification_settings_receive_a_call" = "通話を受信したときに通知する"; "notification_settings_receive_a_call" = "通話を受信したときに通知";
"notification_settings_suppress_from_bots" = "ボットからの通知を抑制する"; "notification_settings_suppress_from_bots" = "ボットからの通知を抑制";
"notification_settings_by_default" = "既定値では..."; "notification_settings_by_default" = "既定値では";
"notification_settings_notify_all_other" = "他のすべてのメッセージ/部屋について通知する"; "notification_settings_notify_all_other" = "他の全てのメッセージ/ルームについて通知";
// gcm section // gcm section
"settings_config_home_server" = "ホームサーバー: %@"; "settings_config_home_server" = "ホームサーバー: %@";
"settings_config_identity_server" = "IDサーバー: %@"; "settings_config_identity_server" = "IDサーバー: %@";
"settings_config_user_id" = "ユーザーID: %@"; "settings_config_user_id" = "ユーザーID: %@";
// call string // call string
"call_waiting" = "待機中..."; "call_waiting" = "待機中...";
"call_connecting" = "通話接続中..."; "call_connecting" = "通話接続中";
"call_ended" = "通話終了"; "call_ended" = "通話終了";
"call_ring" = "呼び出し中..."; "call_ring" = "呼び出し中...";
"incoming_video_call" = "着信ビデオ通話"; "incoming_video_call" = "着信ビデオ通話";
@ -374,36 +374,41 @@
"ssl_cert_new_account_expl" = "サーバー管理者がこれが予期されると述べた場合は、以下の指紋が提供された指紋と一致することを確認してください。"; "ssl_cert_new_account_expl" = "サーバー管理者がこれが予期されると述べた場合は、以下の指紋が提供された指紋と一致することを確認してください。";
"ssl_unexpected_existing_expl" = "証明書は、お使いの携帯電話にて信頼されたものから変更されました。 これは非常に珍しいことです。 この新しい証明書に同意しないことをお勧めします。"; "ssl_unexpected_existing_expl" = "証明書は、お使いの携帯電話にて信頼されたものから変更されました。 これは非常に珍しいことです。 この新しい証明書に同意しないことをお勧めします。";
"ssl_expected_existing_expl" = "証明書が以前に信頼されたものから信頼されていないものに変更されました。 サーバーが証明書を更新した可能性があります。 予想される指紋については、サーバー管理者にお問い合わせください。"; "ssl_expected_existing_expl" = "証明書が以前に信頼されたものから信頼されていないものに変更されました。 サーバーが証明書を更新した可能性があります。 予想される指紋については、サーバー管理者にお問い合わせください。";
"ssl_only_accept" = "サーバー管理者が上記のものと一致する指紋を発行した場合にのみ、証明書を受け入れます。"; "ssl_only_accept" = "サーバー管理者が上記のものと一致する指紋を発行した場合にのみ、証明書を受け入れてください。";
"unignore" = "無視しない"; "unignore" = "無視しない";
"notice_encryption_enabled_ok" = "%@ がエンドツーエンド暗号化をオンにしました。"; "notice_encryption_enabled_ok" = "%@がエンドツーエンド暗号化をオンにしました。";
"notice_encryption_enabled_unknown_algorithm" = "%1$@ がエンドツーエンド暗号化をオンにしました (不明なアルゴリズム %2$@)。"; "notice_encryption_enabled_unknown_algorithm" = "%1$@がエンドツーエンド暗号化をオンにしました(不明なアルゴリズム %2$@。";
"device_details_rename_prompt_title" = "セッション名"; "device_details_rename_prompt_title" = "セッション名";
"account_error_push_not_allowed" = "通知は許可されていません"; "account_error_push_not_allowed" = "通知は許可されていません";
"notice_room_third_party_revoked_invite" = "%@ は %@ の部屋への招待を取り消しました"; "notice_room_third_party_revoked_invite" = "%@が%@のルームへの招待を取り消しました";
// Notice Events with "You" // Notice Events with "You"
"notice_room_invite_by_you" = "%@を招待しました"; "notice_room_invite_by_you" = "%@を招待しました";
"notice_room_invite_you" = "%@があなたを招待しました"; "notice_room_invite_you" = "%@があなたを招待しました";
"notice_room_join_by_you" = "参加しました"; "notice_room_join_by_you" = "参加しました";
"notice_room_leave_by_you" = "退しました"; "notice_room_leave_by_you" = "退しました";
"notice_room_kick_by_you" = "%@をキックしました"; "notice_room_kick_by_you" = "%@をキックしました";
"notice_room_unban_by_you" = "%@をBANしました"; "notice_room_unban_by_you" = "%@のブロックを解除しました";
"notice_room_ban_by_you" = "%@をBANしました"; "notice_room_ban_by_you" = "%@をブロックしました";
"notice_avatar_url_changed_by_you" = "アバターを変更しました"; "notice_avatar_url_changed_by_you" = "アバターを変更しました";
"notice_display_name_set_by_you" = "表示名を%@に変更しました"; "notice_display_name_set_by_you" = "表示名を%@に変更しました";
"notice_display_name_changed_from_by_you" = "表示名を%@から%@に変更しました"; "notice_display_name_changed_from_by_you" = "表示名を%@から%@に変更しました";
"notice_display_name_removed_by_you" = "表示名を削除しました"; "notice_display_name_removed_by_you" = "表示名を削除しました";
"notice_topic_changed_by_you" = "トピックを変更しました: %@"; "notice_topic_changed_by_you" = "トピックを変更しました: %@";
"notice_room_name_changed_by_you" = "部屋の名前を変更しました: %@"; "notice_room_name_changed_by_you" = "ルームの名前を変更しました: %@";
"notice_placed_voice_call_by_you" = "音声通話を開始しました"; "notice_placed_voice_call_by_you" = "音声通話を開始しました";
"notice_placed_video_call_by_you" = "ビデオ通話を開始しました"; "notice_placed_video_call_by_you" = "ビデオ通話を開始しました";
"notice_answered_video_call_by_you" = "電話に出ました"; "notice_answered_video_call_by_you" = "電話に出ました";
"notice_ended_video_call_by_you" = "通話を終了しました"; "notice_ended_video_call_by_you" = "通話を終了しました";
"notice_conference_call_request_by_you" = "VoIP会議をリクエストしました"; "notice_conference_call_request_by_you" = "VoIP会議をリクエストしました";
"notice_room_name_removed_by_you" = "部屋名を削除しました"; "notice_room_name_removed_by_you" = "ルーム名を削除しました";
"notice_room_topic_removed_by_you" = "トピックを削除しました"; "notice_room_topic_removed_by_you" = "トピックを削除しました";
"notice_profile_change_redacted_by_you" = "プロフィール %@を更新しました"; "notice_profile_change_redacted_by_you" = "プロフィール %@を更新しました";
"notice_room_created_by_you" = "部屋を作成しました"; "notice_room_created_by_you" = "ルームを作成しました";
"notice_encryption_enabled_ok_by_you" = "あなたはエンドツーエンド暗号化をオンにしました。"; "notice_encryption_enabled_ok_by_you" = "あなたはエンドツーエンド暗号化をオンにしました。";
"notice_encryption_enabled_unknown_algorithm_by_you" = "あなたはエンドツーエンド暗号化をオンにしました (不明なアルゴリズム %2$@)。"; "notice_encryption_enabled_unknown_algorithm_by_you" = "あなたはエンドツーエンド暗号化をオンにしました (不明なアルゴリズム %2$@)。";
"notice_redaction_by_you" = "イベントを編集しました (id: %@)"; "notice_redaction_by_you" = "イベントを編集しました (id: %@)";
"auth_username_in_use" = "ユーザー名は既に使用されています";
"resume_call" = "再開";
"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@が今後のメッセージを「全員 (参加した時点以降)」閲覧可能に設定しました。";
"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@が今後のメッセージを「メンバーのみ (招待された時点以降)」閲覧可能に設定しました。";
"notice_room_history_visible_to_members_for_dm" = "%@が今後のメッセージを「メンバーのみ」閲覧可能に設定しました。";

View file

@ -14,7 +14,7 @@
"account_save_changes" = "Uložiť zmeny"; "account_save_changes" = "Uložiť zmeny";
"room_event_encryption_verify_title" = "Overiť reláciu\n\n"; "room_event_encryption_verify_title" = "Overiť reláciu\n\n";
"room_event_encryption_info_device_not_verified" = "Neoverené"; "room_event_encryption_info_device_not_verified" = "Neoverené";
"room_event_encryption_info_device_fingerprint" = "Ed25519 odtlačok prsta\n"; "room_event_encryption_info_device_fingerprint" = "Odtlačok Ed25519\n";
"room_event_encryption_info_device_name" = "Verejný názov\n"; "room_event_encryption_info_device_name" = "Verejný názov\n";
"room_event_encryption_info_device_unknown" = "neznáma relácia\n"; "room_event_encryption_info_device_unknown" = "neznáma relácia\n";
"room_event_encryption_info_event_decryption_error" = "Chyba dešifrovania\n"; "room_event_encryption_info_event_decryption_error" = "Chyba dešifrovania\n";
@ -439,16 +439,16 @@
"notice_room_power_level_event_requirement" = "Minimálne úrovne oprávnenia súvisiace s udalosťami sú:"; "notice_room_power_level_event_requirement" = "Minimálne úrovne oprávnenia súvisiace s udalosťami sú:";
"notice_room_join_rule_public_for_dm" = "%@ ju zverejnil/a."; "notice_room_join_rule_public_for_dm" = "%@ ju zverejnil/a.";
"notice_room_join_rule_public" = "%@ zverejnil/a túto miestnosť."; "notice_room_join_rule_public" = "%@ zverejnil/a túto miestnosť.";
"notice_room_join_rule_invite_by_you_for_dm" = "Ste ju vytvorili len na pozvanie."; "notice_room_join_rule_invite_by_you_for_dm" = "Ste ju nastavili len na pozvanie.";
"notice_room_join_rule_invite_for_dm" = "%@ ju vytvoril len na pozvanie."; "notice_room_join_rule_invite_for_dm" = "%@ ju nastavil/a len na pozvanie.";
"notice_event_redacted" = "<redigované%@>"; "notice_event_redacted" = "<redigované%@>";
"capture_media" = "Spraviť fotografiu/video"; "capture_media" = "Spraviť fotografiu/video";
"auth_reset_password_error_unauthorized" = "Neoprávnené"; "auth_reset_password_error_unauthorized" = "Neoprávnené";
"auth_invalid_user_name" = "Neplatné používateľské meno"; "auth_invalid_user_name" = "Neplatné používateľské meno";
"ssl_only_accept" = "Certifikát akceptujte IBA vtedy, ak správca servera zverejnil odtlačok prsta, ktorý sa zhoduje s vyššie uvedeným."; "ssl_only_accept" = "Certifikát akceptujte IBA vtedy, ak správca servera zverejnil odtlačok, ktorý sa zhoduje s vyššie uvedeným.";
"ssl_expected_existing_expl" = "Certifikát sa zmenil z predtým dôveryhodného na nedôveryhodný. Server mohol obnoviť svoj certifikát. Obráťte sa na správcu servera, aby vám poskytol očakávaný odtlačok."; "ssl_expected_existing_expl" = "Certifikát sa zmenil z predtým dôveryhodného na nedôveryhodný. Server mohol obnoviť svoj certifikát. Obráťte sa na správcu servera, aby vám poskytol očakávaný odtlačok.";
"ssl_unexpected_existing_expl" = "Certifikát sa zmenil na iný, ktorému dôveroval váš telefón. To je VEĽMI NEOBVYKLÉ. Odporúča sa, aby ste tento nový certifikát NEPRIJALI."; "ssl_unexpected_existing_expl" = "Certifikát sa zmenil na iný, ktorému dôveroval váš telefón. To je VEĽMI NEOBVYKLÉ. Odporúča sa, aby ste tento nový certifikát NEPRIJALI.";
"ssl_cert_new_account_expl" = "Ak správca servera uviedol, že sa to očakáva, skontrolujte, či sa odtlačok prsta uvedený nižšie zhoduje s odtlačkom prsta, ktorý poskytol."; "ssl_cert_new_account_expl" = "Ak správca servera uviedol, že sa to očakáva, skontrolujte, či sa odtlačok uvedený nižšie zhoduje s odtlačkom, ktorý poskytol.";
"ssl_cert_not_trust" = "Môže to znamenať, že niekto úmyselne zachytáva vašu komunikáciu alebo že váš telefón nedôveruje certifikátu, ktorý poskytol vzdialený server."; "ssl_cert_not_trust" = "Môže to znamenať, že niekto úmyselne zachytáva vašu komunikáciu alebo že váš telefón nedôveruje certifikátu, ktorý poskytol vzdialený server.";
"ssl_could_not_verify" = "Nepodarilo sa overiť identitu vzdialeného servera."; "ssl_could_not_verify" = "Nepodarilo sa overiť identitu vzdialeného servera.";
@ -488,9 +488,9 @@
"settings_enter_validation_token_for" = "Zadajte overovací token pre %@:"; "settings_enter_validation_token_for" = "Zadajte overovací token pre %@:";
"notice_error_unexpected_event" = "Neočakávaná udalosť"; "notice_error_unexpected_event" = "Neočakávaná udalosť";
"notice_error_unsupported_event" = "Nepodporovaná udalosť"; "notice_error_unsupported_event" = "Nepodporovaná udalosť";
"notice_room_join_rule_invite_by_you" = "Urobili ste miestnosť len pre pozvaných."; "notice_room_join_rule_invite_by_you" = "Nastavili ste miestnosť len pre pozvaných.";
// New // New
"notice_room_join_rule_invite" = "%@ vytvoril miestnosť len na pozvanie."; "notice_room_join_rule_invite" = "%@ nastavil/a miestnosť len na pozvanie.";
// Old // Old
"notice_room_join_rule" = "Pravidlo pripojenia je: %@"; "notice_room_join_rule" = "Pravidlo pripojenia je: %@";
"notice_room_created" = "%@ vytvoril a nastavil miestnosť."; "notice_room_created" = "%@ vytvoril a nastavil miestnosť.";
@ -546,5 +546,12 @@
"message_reply_to_sender_sent_their_location" = "zdieľal/a svoju polohu."; "message_reply_to_sender_sent_their_location" = "zdieľal/a svoju polohu.";
"account_link_email" = "Prepojený email"; "account_link_email" = "Prepojený email";
"account_linked_emails" = "Prepojené e-maily"; "account_linked_emails" = "Prepojené e-maily";
"room_event_encryption_info_event_fingerprint_key" = "Deklarovaný kľúč odtlačkov prstov Ed25519\n"; "room_event_encryption_info_event_fingerprint_key" = "Deklarovaný kľúč odtlačku Ed25519\n";
"notification_settings_notify_all_other" = "Oznámiť pre všetky ostatné správy/miestnosti"; "notification_settings_notify_all_other" = "Oznámiť pre všetky ostatné správy/miestnosti";
"call_transfer_to_user" = "Presmerovať na používateľa %@";
"call_more_actions_transfer" = "Presmerovať";
"login_use_fallback" = "Použiť náhradnú stránku";
"call_consulting_with_user" = "Konzultácia s %@";
"notification_settings_per_sender_notifications" = "Oznámenia na odosielateľa";
"notification_settings_per_room_notifications" = "Oznámenia na miestnosti";
"notification_settings_per_word_notifications" = "Oznámenia na slovo";

View file

@ -74,7 +74,7 @@
"ignore" = "Ignorera"; "ignore" = "Ignorera";
"unignore" = "Avignorera"; "unignore" = "Avignorera";
// Events formatter // Events formatter
"notice_avatar_changed_too" = "(avataren ändrades också)"; "notice_avatar_changed_too" = "(avataren byttes också)";
"notice_room_name_removed" = "%@ tog bort rumsnamnet"; "notice_room_name_removed" = "%@ tog bort rumsnamnet";
"notice_room_topic_removed" = "%@ tog bort ämnet"; "notice_room_topic_removed" = "%@ tog bort ämnet";
"notice_event_redacted" = "<dold%@>"; "notice_event_redacted" = "<dold%@>";
@ -307,7 +307,7 @@
"notice_room_unban_by_you" = "Du avbannade %@"; "notice_room_unban_by_you" = "Du avbannade %@";
"notice_room_ban_by_you" = "Du bannade %@"; "notice_room_ban_by_you" = "Du bannade %@";
"notice_room_withdraw_by_you" = "Du drog tillbaka inbjudan för %@"; "notice_room_withdraw_by_you" = "Du drog tillbaka inbjudan för %@";
"notice_avatar_url_changed_by_you" = "Du ändrade din avatar"; "notice_avatar_url_changed_by_you" = "Du bytte din avatar";
"notice_display_name_set_by_you" = "Du bytte ditt visningsnamn till %@"; "notice_display_name_set_by_you" = "Du bytte ditt visningsnamn till %@";
"notice_display_name_changed_from_by_you" = "Du bytte ditt visningsnamn från %@ till %@"; "notice_display_name_changed_from_by_you" = "Du bytte ditt visningsnamn från %@ till %@";
"notice_display_name_removed_by_you" = "Du tog bort ditt visningsnamn"; "notice_display_name_removed_by_you" = "Du tog bort ditt visningsnamn";

View file

@ -34,7 +34,7 @@
#import "MXKSendReplyEventStringLocalizer.h" #import "MXKSendReplyEventStringLocalizer.h"
#import "MXKSlashCommands.h" #import "MXKSlashCommands.h"
const BOOL USE_THREAD_TIMELINE = NO; const BOOL USE_THREAD_TIMELINE = YES;
#pragma mark - Constant definitions #pragma mark - Constant definitions
@ -1448,6 +1448,16 @@ typedef NS_ENUM (NSUInteger, MXKRoomDataSourceError) {
return NO; return NO;
} }
} }
if (!USE_THREAD_TIMELINE && direction == MXTimelineDirectionBackwards && self.threadId)
{
// when not using a thread timeline, data source will desperately fill the screen with events by filtering them locally.
// we can stop when we see the thread root event when paginating backwards
if ([event.eventId isEqualToString:self.threadId])
{
self.shouldStopBackPagination = YES;
}
}
return YES; return YES;
} }

View file

@ -54,8 +54,8 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol {
private var navigationRouter: NavigationRouterType { private var navigationRouter: NavigationRouterType {
parameters.router parameters.router
} }
// Keep a strong ref as we need to init authVC early to preload its view (it is *really* slow to do in realtime) // Keep a strong ref as we need to init authVC early to preload its view
private var authenticationCoordinator: AuthenticationCoordinatorProtocol = AuthenticationCoordinator() private let authenticationCoordinator: AuthenticationCoordinatorProtocol
private var isShowingAuthentication = false private var isShowingAuthentication = false
// MARK: Screen results // MARK: Screen results
@ -72,6 +72,11 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol {
init(parameters: OnboardingCoordinatorParameters) { init(parameters: OnboardingCoordinatorParameters) {
self.parameters = parameters self.parameters = parameters
// Preload the authVC (it is *really* slow to load in realtime)
let authenticationParameters = AuthenticationCoordinatorParameters(navigationRouter: parameters.router)
authenticationCoordinator = AuthenticationCoordinator(parameters: authenticationParameters)
super.init() super.init()
} }
@ -178,9 +183,16 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol {
MXLog.debug("[OnboardingCoordinator] showAuthenticationScreen") MXLog.debug("[OnboardingCoordinator] showAuthenticationScreen")
let coordinator = authenticationCoordinator let coordinator = authenticationCoordinator
coordinator.completion = { [weak self, weak coordinator] authenticationType in coordinator.completion = { [weak self, weak coordinator] result in
guard let self = self, let coordinator = coordinator else { return } guard let self = self, let coordinator = coordinator else { return }
self.authenticationCoordinator(coordinator, didCompleteWith: authenticationType)
switch result {
case .didLogin(let session):
self.authenticationCoordinator(coordinator, didLoginWith: session)
case .didComplete(let authenticationType):
self.authenticationCoordinator(coordinator, didCompleteWith: authenticationType)
}
} }
// Due to needing to preload the authVC, this breaks the Coordinator init/start pattern. // Due to needing to preload the authVC, this breaks the Coordinator init/start pattern.
@ -200,7 +212,6 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol {
coordinator.start() coordinator.start()
add(childCoordinator: coordinator) add(childCoordinator: coordinator)
authenticationCoordinator = coordinator
if customHomeserver != nil || customIdentityServer != nil { if customHomeserver != nil || customIdentityServer != nil {
coordinator.updateHomeserver(customHomeserver, andIdentityServer: customIdentityServer) coordinator.updateHomeserver(customHomeserver, andIdentityServer: customIdentityServer)
@ -217,6 +228,11 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol {
isShowingAuthentication = true isShowingAuthentication = true
} }
private func authenticationCoordinator(_ coordinator: AuthenticationCoordinatorProtocol, didLoginWith session: MXSession) {
// TODO: Show next screens whilst waiting for the everything to load.
// May need to move the spinner and key verification up to here in order to coordinate properly.
}
/// Displays the next view in the flow after the authentication screen. /// Displays the next view in the flow after the authentication screen.
private func authenticationCoordinator(_ coordinator: AuthenticationCoordinatorProtocol, didCompleteWith authenticationType: MXKAuthenticationType) { private func authenticationCoordinator(_ coordinator: AuthenticationCoordinatorProtocol, didCompleteWith authenticationType: MXKAuthenticationType) {
completion?() completion?()

View file

@ -558,48 +558,17 @@ const CGFloat kTypingCellHeight = 24;
if ([componentEventId isEqualToString:self.room.accountData.readMarkerEventId]) if ([componentEventId isEqualToString:self.room.accountData.readMarkerEventId])
{ {
bubbleCell.readMarkerView = [[UIView alloc] initWithFrame:CGRectMake(0, bottomPositionY - PlainRoomCellLayoutConstants.readMarkerViewHeight, bubbleCell.bubbleOverlayContainer.frame.size.width, PlainRoomCellLayoutConstants.readMarkerViewHeight)]; UIView *readMarkerView = [[UIView alloc] initWithFrame:CGRectMake(0, bottomPositionY - PlainRoomCellLayoutConstants.readMarkerViewHeight, bubbleCell.bubbleOverlayContainer.frame.size.width, PlainRoomCellLayoutConstants.readMarkerViewHeight)];
bubbleCell.readMarkerView.backgroundColor = ThemeService.shared.theme.tintColor; readMarkerView.backgroundColor = ThemeService.shared.theme.tintColor;
// Hide by default the marker, it will be shown and animated when the cell will be rendered. // Hide by default the marker, it will be shown and animated when the cell will be rendered.
bubbleCell.readMarkerView.hidden = YES; readMarkerView.hidden = YES;
bubbleCell.readMarkerView.tag = index; readMarkerView.tag = index;
readMarkerView.accessibilityIdentifier = @"readMarker";
bubbleCell.readMarkerView.translatesAutoresizingMaskIntoConstraints = NO; [cellDecorator addReadMarkerView:readMarkerView
bubbleCell.readMarkerView.accessibilityIdentifier = @"readMarker"; toCell:bubbleCell
[bubbleCell.bubbleOverlayContainer addSubview:bubbleCell.readMarkerView]; cellData:cellData
contentViewPositionY:bottomPositionY];
// Force read marker constraints
bubbleCell.readMarkerViewTopConstraint = [NSLayoutConstraint constraintWithItem:bubbleCell.readMarkerView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:bubbleCell.bubbleOverlayContainer
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:bottomPositionY - PlainRoomCellLayoutConstants.readMarkerViewHeight];
bubbleCell.readMarkerViewLeadingConstraint = [NSLayoutConstraint constraintWithItem:bubbleCell.readMarkerView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:bubbleCell.bubbleOverlayContainer
attribute:NSLayoutAttributeLeading
multiplier:1.0
constant:0];
bubbleCell.readMarkerViewTrailingConstraint = [NSLayoutConstraint constraintWithItem:bubbleCell.bubbleOverlayContainer
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:bubbleCell.readMarkerView
attribute:NSLayoutAttributeTrailing
multiplier:1.0
constant:0];
bubbleCell.readMarkerViewHeightConstraint = [NSLayoutConstraint constraintWithItem:bubbleCell.readMarkerView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:PlainRoomCellLayoutConstants.readMarkerViewHeight];
[NSLayoutConstraint activateConstraints:@[bubbleCell.readMarkerViewTopConstraint, bubbleCell.readMarkerViewLeadingConstraint, bubbleCell.readMarkerViewTrailingConstraint, bubbleCell.readMarkerViewHeightConstraint]];
} }
} }
} }

View file

@ -2348,6 +2348,12 @@
{ {
// Do a full reload // Do a full reload
[_bubblesTableView reloadData]; [_bubblesTableView reloadData];
if (shouldScrollToBottom) {
// If we need to scroll to the bottom after the reload, layout refresh needs to be triggered,
// otherwise contentSize of the table view will not be up-to-date
// e.g. https://stackoverflow.com/a/31324129
[_bubblesTableView layoutIfNeeded];
}
} }
if (shouldScrollToBottom) if (shouldScrollToBottom)

View file

@ -5821,44 +5821,23 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
- (void)animateReadMarkerView - (void)animateReadMarkerView
{ {
// Check whether the cell with the read marker is known and if the marker is not animated yet. // Check whether the cell with the read marker is known and if the marker is not animated yet.
if (readMarkerTableViewCell && readMarkerTableViewCell.readMarkerView.isHidden)
if (!readMarkerTableViewCell || readMarkerTableViewCell.readMarkerView.isHidden == NO)
{ {
RoomBubbleCellData *cellData = (RoomBubbleCellData*)readMarkerTableViewCell.bubbleData; return;
// Do not display the marker if this is the last message.
if (cellData.containsLastMessage && readMarkerTableViewCell.readMarkerView.tag == cellData.mostRecentComponentIndex)
{
readMarkerTableViewCell.readMarkerView.hidden = YES;
readMarkerTableViewCell = nil;
}
else
{
readMarkerTableViewCell.readMarkerView.hidden = NO;
// Animate the layout to hide the read marker
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[UIView animateWithDuration:1.5 delay:0 options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseIn
animations:^{
self->readMarkerTableViewCell.readMarkerViewLeadingConstraint.constant = self->readMarkerTableViewCell.readMarkerViewTrailingConstraint.constant = self->readMarkerTableViewCell.bubbleOverlayContainer.frame.size.width / 2;
self->readMarkerTableViewCell.readMarkerView.alpha = 0;
// Force to render the view
[self->readMarkerTableViewCell.bubbleOverlayContainer layoutIfNeeded];
}
completion:^(BOOL finished){
self->readMarkerTableViewCell.readMarkerView.hidden = YES;
self->readMarkerTableViewCell.readMarkerView.alpha = 1;
self->readMarkerTableViewCell = nil;
}];
});
}
} }
RoomBubbleCellData *cellData = (RoomBubbleCellData*)readMarkerTableViewCell.bubbleData;
id<RoomTimelineCellDecorator> cellDecorator = [RoomTimelineConfiguration shared].currentStyle.cellDecorator;
[cellDecorator dissmissReadMarkerViewForCell:readMarkerTableViewCell
cellData:cellData
animated:YES
completion:^{
self->readMarkerTableViewCell = nil;
}];
} }
- (void)refreshRemoveJitsiWidgetView - (void)refreshRemoveJitsiWidgetView

View file

@ -124,6 +124,40 @@ class BaseRoomCell: MXKRoomBubbleTableViewCell, BaseRoomCellProtocol {
} }
} }
override var readMarkerViewLeadingConstraint: NSLayoutConstraint! {
get {
if self is RoomCellReadMarkerDisplayable {
return self.roomCellContentView?.readMarkerViewLeadingConstraint
} else {
return super.readMarkerViewLeadingConstraint
}
}
set {
if self is RoomCellReadMarkerDisplayable {
self.roomCellContentView?.readMarkerViewLeadingConstraint = newValue
} else {
super.readMarkerViewLeadingConstraint = newValue
}
}
}
override var readMarkerViewTrailingConstraint: NSLayoutConstraint! {
get {
if self is RoomCellReadMarkerDisplayable {
return self.roomCellContentView?.readMarkerViewTrailingConstraint
} else {
return super.readMarkerViewTrailingConstraint
}
}
set {
if self is RoomCellReadMarkerDisplayable {
self.roomCellContentView?.readMarkerViewTrailingConstraint = newValue
} else {
super.readMarkerViewTrailingConstraint = newValue
}
}
}
// MARK: - Setup // MARK: - Setup
required override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { required override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
@ -133,6 +167,7 @@ class BaseRoomCell: MXKRoomBubbleTableViewCell, BaseRoomCellProtocol {
required init?(coder aDecoder: NSCoder) { required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder) super.init(coder: aDecoder)
self.commonInit()
} }
private func commonInit() { private func commonInit() {
@ -181,6 +216,41 @@ class BaseRoomCell: MXKRoomBubbleTableViewCell, BaseRoomCellProtocol {
} }
} }
override func setupSenderNameLabel() {
guard let userNameTouchMaskView = self.roomCellContentView?.userNameTouchMaskView else {
return
}
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(onSenderNameTap(_:)))
tapGesture.numberOfTouchesRequired = 1
tapGesture.numberOfTapsRequired = 1
tapGesture.delegate = self
userNameTouchMaskView.addGestureRecognizer(tapGesture)
}
override func setupAvatarView() {
guard let avatarImageView = self.roomCellContentView?.avatarImageView else {
return
}
avatarImageView.mediaFolder = kMXMediaManagerAvatarThumbnailFolder
// Listen to avatar tap
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(onAvatarTap(_:)))
tapGesture.numberOfTouchesRequired = 1
tapGesture.numberOfTapsRequired = 1
tapGesture.delegate = self
avatarImageView.addGestureRecognizer(tapGesture)
avatarImageView.isUserInteractionEnabled = true
// Add a long gesture recognizer on avatar (in order to display for example the member details)
let longPress = UILongPressGestureRecognizer(target: self, action: #selector(onLongPressGesture(_:)))
avatarImageView.addGestureRecognizer(longPress)
}
override class func defaultReuseIdentifier() -> String! { override class func defaultReuseIdentifier() -> String! {
return String(describing: self) return String(describing: self)
} }
@ -300,6 +370,19 @@ class BaseRoomCell: MXKRoomBubbleTableViewCell, BaseRoomCellProtocol {
self.roomCellContentView?.removeThreadSummaryView() self.roomCellContentView?.removeThreadSummaryView()
} }
// MARK: - RoomCellReadMarkerDisplayable
func addReadMarkerView(_ readMarkerView: UIView) {
self.roomCellContentView?.addReadMarkerView(readMarkerView)
self.readMarkerView = readMarkerView
}
override func removeReadMarkerView() {
self.roomCellContentView?.removeReadMarkerView()
super.removeReadMarkerView()
}
// Encryption status // Encryption status
private func updateEncryptionStatusViewImage() { private func updateEncryptionStatusViewImage() {

View file

@ -33,11 +33,15 @@ final class RoomCellContentView: UIView, NibLoadable {
@IBOutlet weak var userNameLabel: UILabel! @IBOutlet weak var userNameLabel: UILabel!
@IBOutlet weak var userNameTouchMaskView: UIView! @IBOutlet weak var userNameTouchMaskView: UIView!
@IBOutlet weak var userNameLabelTopConstraint: NSLayoutConstraint!
@IBOutlet weak var userNameLabelBottomConstraint: NSLayoutConstraint!
@IBOutlet weak var avatarContainerView: UIView! @IBOutlet weak var avatarContainerView: UIView!
@IBOutlet weak var avatarImageView: MXKImageView! @IBOutlet weak var avatarImageView: MXKImageView!
@IBOutlet weak var innerContentView: UIView! @IBOutlet weak var innerContentView: UIView!
@IBOutlet weak var innerContentViewTopConstraint: NSLayoutConstraint!
@IBOutlet weak var innerContentViewLeadingConstraint: NSLayoutConstraint! @IBOutlet weak var innerContentViewLeadingConstraint: NSLayoutConstraint!
@IBOutlet weak var innerContentViewTrailingConstraint: NSLayoutConstraint! @IBOutlet weak var innerContentViewTrailingConstraint: NSLayoutConstraint!
@IBOutlet weak var innerContentViewBottomContraint: NSLayoutConstraint! @IBOutlet weak var innerContentViewBottomContraint: NSLayoutConstraint!
@ -56,6 +60,12 @@ final class RoomCellContentView: UIView, NibLoadable {
@IBOutlet weak var readReceiptsContainerView: UIView! @IBOutlet weak var readReceiptsContainerView: UIView!
@IBOutlet weak var readReceiptsContentView: UIView! @IBOutlet weak var readReceiptsContentView: UIView!
@IBOutlet weak var readMarkerContainerView: UIView!
@IBOutlet weak var readMarkerContentView: UIView!
var readMarkerViewLeadingConstraint: NSLayoutConstraint?
var readMarkerViewTrailingConstraint: NSLayoutConstraint?
@IBOutlet weak var reactionsContainerView: UIView! @IBOutlet weak var reactionsContainerView: UIView!
@IBOutlet weak var reactionsContentView: UIView! @IBOutlet weak var reactionsContentView: UIView!
@IBOutlet weak var reactionsContentViewLeadingConstraint: NSLayoutConstraint! @IBOutlet weak var reactionsContentViewLeadingConstraint: NSLayoutConstraint!
@ -154,6 +164,15 @@ final class RoomCellContentView: UIView, NibLoadable {
} }
} }
var showReadMarker: Bool {
get {
return !self.readMarkerContainerView.isHidden
}
set {
self.readMarkerContainerView.isHidden = !newValue
}
}
var decorationViewsAlignment: RoomCellDecorationAlignment = .left var decorationViewsAlignment: RoomCellDecorationAlignment = .left
// MARK: - Setup // MARK: - Setup
@ -304,3 +323,46 @@ extension RoomCellContentView: RoomCellURLPreviewDisplayable {
self.urlPreviewContentView.vc_removeAllSubviews() self.urlPreviewContentView.vc_removeAllSubviews()
} }
} }
// MARK: - RoomCellReadMarkerDisplayable
extension RoomCellContentView: RoomCellReadMarkerDisplayable {
func addReadMarkerView(_ readMarkerView: UIView) {
guard let containerView = self.readMarkerContainerView else {
return
}
self.readMarkerContentView.vc_removeAllSubviews()
readMarkerView.translatesAutoresizingMaskIntoConstraints = false
self.readMarkerContentView.addSubview(readMarkerView)
// Force read marker constraints
let topConstraint = readMarkerView.topAnchor.constraint(equalTo: containerView.topAnchor)
let leadingConstraint = readMarkerView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor)
let trailingConstraint = readMarkerView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor)
let heightConstraint = readMarkerView.heightAnchor.constraint(equalToConstant: PlainRoomCellLayoutConstants.readMarkerViewHeight)
let bottomContraint = readMarkerView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
NSLayoutConstraint.activate([topConstraint,
leadingConstraint,
trailingConstraint,
heightConstraint,
bottomContraint])
self.readMarkerViewLeadingConstraint = leadingConstraint
self.readMarkerViewTrailingConstraint = trailingConstraint
self.showReadMarker = true
}
func removeReadMarkerView() {
self.showReadMarker = false
self.readMarkerContentView.vc_removeAllSubviews()
}
}

View file

@ -4,7 +4,6 @@
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@ -68,7 +67,7 @@
<subviews> <subviews>
<view clipsSubviews="YES" contentMode="scaleAspectFill" translatesAutoresizingMaskIntoConstraints="NO" id="yXz-Za-4yR" customClass="MXKImageView"> <view clipsSubviews="YES" contentMode="scaleAspectFill" translatesAutoresizingMaskIntoConstraints="NO" id="yXz-Za-4yR" customClass="MXKImageView">
<rect key="frame" x="13" y="10" width="30" height="30"/> <rect key="frame" x="13" y="10" width="30" height="30"/>
<color key="backgroundColor" red="0.66666666669999997" green="0.66666666669999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<accessibility key="accessibilityConfiguration" identifier="PictureView"/> <accessibility key="accessibilityConfiguration" identifier="PictureView"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="30" id="FbD-UB-dqc"/> <constraint firstAttribute="height" constant="30" id="FbD-UB-dqc"/>
@ -76,7 +75,7 @@
</constraints> </constraints>
</view> </view>
</subviews> </subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints> <constraints>
<constraint firstItem="yXz-Za-4yR" firstAttribute="leading" secondItem="1cK-e6-Mg5" secondAttribute="leading" constant="13" id="UjU-eY-ARJ"/> <constraint firstItem="yXz-Za-4yR" firstAttribute="leading" secondItem="1cK-e6-Mg5" secondAttribute="leading" constant="13" id="UjU-eY-ARJ"/>
<constraint firstItem="yXz-Za-4yR" firstAttribute="top" secondItem="1cK-e6-Mg5" secondAttribute="top" constant="10" id="jlf-dg-fp0"/> <constraint firstItem="yXz-Za-4yR" firstAttribute="top" secondItem="1cK-e6-Mg5" secondAttribute="top" constant="10" id="jlf-dg-fp0"/>
@ -87,7 +86,7 @@
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ohU-Sc-mgb"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ohU-Sc-mgb">
<rect key="frame" x="46" y="4" width="534" height="30"/> <rect key="frame" x="46" y="4" width="534" height="30"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</view> </view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="User name:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="8" translatesAutoresizingMaskIntoConstraints="NO" id="meG-P8-61b"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="User name:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="8" translatesAutoresizingMaskIntoConstraints="NO" id="meG-P8-61b">
<rect key="frame" x="56" y="10" width="524" height="18"/> <rect key="frame" x="56" y="10" width="524" height="18"/>
@ -223,6 +222,25 @@
<constraint firstAttribute="trailing" secondItem="rQt-NH-Cb0" secondAttribute="trailing" constant="6" id="lq2-AY-Lus"/> <constraint firstAttribute="trailing" secondItem="rQt-NH-Cb0" secondAttribute="trailing" constant="6" id="lq2-AY-Lus"/>
</constraints> </constraints>
</view> </view>
<view hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" verticalHuggingPriority="253" translatesAutoresizingMaskIntoConstraints="NO" id="2i0-Un-VXa">
<rect key="frame" x="0.0" y="0.0" width="595" height="0.0"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3Cq-BI-po5">
<rect key="frame" x="0.0" y="0.0" width="595" height="0.0"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" priority="250" constant="2" id="3j7-Qe-vYL"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="3Cq-BI-po5" firstAttribute="top" secondItem="2i0-Un-VXa" secondAttribute="top" id="6YG-04-nSb"/>
<constraint firstItem="3Cq-BI-po5" firstAttribute="leading" secondItem="2i0-Un-VXa" secondAttribute="leading" id="CrN-xe-M6m"/>
<constraint firstAttribute="trailing" secondItem="3Cq-BI-po5" secondAttribute="trailing" id="SBL-F4-EJ8"/>
<constraint firstAttribute="bottom" secondItem="3Cq-BI-po5" secondAttribute="bottom" id="r3l-ZY-0kc"/>
</constraints>
</view>
<view hidden="YES" clipsSubviews="YES" contentMode="scaleAspectFit" translatesAutoresizingMaskIntoConstraints="NO" id="2eB-kB-m20"> <view hidden="YES" clipsSubviews="YES" contentMode="scaleAspectFit" translatesAutoresizingMaskIntoConstraints="NO" id="2eB-kB-m20">
<rect key="frame" x="0.0" y="0.0" width="595" height="0.0"/> <rect key="frame" x="0.0" y="0.0" width="595" height="0.0"/>
<subviews> <subviews>
@ -282,6 +300,7 @@
<outlet property="innerContentView" destination="oeI-eO-mFK" id="ap1-He-C6g"/> <outlet property="innerContentView" destination="oeI-eO-mFK" id="ap1-He-C6g"/>
<outlet property="innerContentViewBottomContraint" destination="8M5-uW-82s" id="Vn0-6C-LSW"/> <outlet property="innerContentViewBottomContraint" destination="8M5-uW-82s" id="Vn0-6C-LSW"/>
<outlet property="innerContentViewLeadingConstraint" destination="0Fr-0L-9tU" id="ByY-oe-d8Y"/> <outlet property="innerContentViewLeadingConstraint" destination="0Fr-0L-9tU" id="ByY-oe-d8Y"/>
<outlet property="innerContentViewTopConstraint" destination="uZZ-I6-Xtq" id="HqY-G8-Od7"/>
<outlet property="innerContentViewTrailingConstraint" destination="Pbe-4d-q6Y" id="24b-AS-hX4"/> <outlet property="innerContentViewTrailingConstraint" destination="Pbe-4d-q6Y" id="24b-AS-hX4"/>
<outlet property="paginationLabel" destination="r7y-FK-GWS" id="R9V-ix-mDu"/> <outlet property="paginationLabel" destination="r7y-FK-GWS" id="R9V-ix-mDu"/>
<outlet property="paginationSeparatorView" destination="ytv-tA-NmI" id="sgk-n1-KQi"/> <outlet property="paginationSeparatorView" destination="ytv-tA-NmI" id="sgk-n1-KQi"/>
@ -290,6 +309,8 @@
<outlet property="reactionsContentView" destination="SNw-aM-ILI" id="wMe-f0-qhq"/> <outlet property="reactionsContentView" destination="SNw-aM-ILI" id="wMe-f0-qhq"/>
<outlet property="reactionsContentViewLeadingConstraint" destination="x1n-oT-dez" id="LUh-3Q-SVr"/> <outlet property="reactionsContentViewLeadingConstraint" destination="x1n-oT-dez" id="LUh-3Q-SVr"/>
<outlet property="reactionsContentViewTrailingConstraint" destination="ynR-d4-6cf" id="Sy0-o9-vAC"/> <outlet property="reactionsContentViewTrailingConstraint" destination="ynR-d4-6cf" id="Sy0-o9-vAC"/>
<outlet property="readMarkerContainerView" destination="2i0-Un-VXa" id="O4q-3S-R5o"/>
<outlet property="readMarkerContentView" destination="3Cq-BI-po5" id="Bwr-Sg-sOt"/>
<outlet property="readReceiptsContainerView" destination="4zo-V8-CNe" id="7ek-u4-CX8"/> <outlet property="readReceiptsContainerView" destination="4zo-V8-CNe" id="7ek-u4-CX8"/>
<outlet property="readReceiptsContentView" destination="rQt-NH-Cb0" id="tqw-je-kp9"/> <outlet property="readReceiptsContentView" destination="rQt-NH-Cb0" id="tqw-je-kp9"/>
<outlet property="threadSummaryContainerView" destination="2eB-kB-m20" id="0Y4-4E-I9K"/> <outlet property="threadSummaryContainerView" destination="2eB-kB-m20" id="0Y4-4E-I9K"/>
@ -303,6 +324,8 @@
<outlet property="urlPreviewContentViewTrailingConstraint" destination="ZmA-Ns-chh" id="EXg-Rr-cuJ"/> <outlet property="urlPreviewContentViewTrailingConstraint" destination="ZmA-Ns-chh" id="EXg-Rr-cuJ"/>
<outlet property="userNameContainerView" destination="w0C-6a-f5M" id="fZE-vY-0nR"/> <outlet property="userNameContainerView" destination="w0C-6a-f5M" id="fZE-vY-0nR"/>
<outlet property="userNameLabel" destination="meG-P8-61b" id="ETK-ag-WYR"/> <outlet property="userNameLabel" destination="meG-P8-61b" id="ETK-ag-WYR"/>
<outlet property="userNameLabelBottomConstraint" destination="HDT-eS-UWo" id="zTQ-5g-SAo"/>
<outlet property="userNameLabelTopConstraint" destination="baE-tR-0Ck" id="myA-Gm-17A"/>
<outlet property="userNameTouchMaskView" destination="ohU-Sc-mgb" id="FwW-aL-kc5"/> <outlet property="userNameTouchMaskView" destination="ohU-Sc-mgb" id="FwW-aL-kc5"/>
</connections> </connections>
<point key="canvasLocation" x="-1092" y="-1332"/> <point key="canvasLocation" x="-1092" y="-1332"/>
@ -310,8 +333,5 @@
</objects> </objects>
<resources> <resources>
<image name="encryption_warning" width="12" height="12"/> <image name="encryption_warning" width="12" height="12"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources> </resources>
</document> </document>

View file

@ -0,0 +1,23 @@
//
// Copyright 2021 New Vector Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import UIKit
/// `RoomCellReadMarkerDisplayable` is a protocol indicating that a cell support displaying read marker.
@objc protocol RoomCellReadMarkerDisplayable {
func addReadMarkerView(_ readMarkerView: UIView)
func removeReadMarkerView()
}

View file

@ -337,10 +337,34 @@ extern NSString *const kMXKRoomBubbleCellUrlItemInteraction;
*/ */
- (void)setupViews; - (void)setupViews;
/// Setup sender name label if needed
- (void)setupSenderNameLabel;
/// Setup avatar view if needed
- (void)setupAvatarView;
/// Setup message text view if needed
- (void)setupMessageTextView;
/// Setup message text view long press gesture if needed
- (void)setupMessageTextViewLongPressGesture;
/// Add temporary subview to `tmpSubviews` property. /// Add temporary subview to `tmpSubviews` property.
- (void)addTemporarySubview:(UIView*)subview; - (void)addTemporarySubview:(UIView*)subview;
/// Called when content view cell is tapped /// Called when content view cell is tapped
- (IBAction)onContentViewTap:(UITapGestureRecognizer*)sender; - (IBAction)onContentViewTap:(UITapGestureRecognizer*)sender;
/// Called when sender name is tapped
- (IBAction)onSenderNameTap:(UITapGestureRecognizer*)sender;
/// Called when avatar view is tapped
- (IBAction)onAvatarTap:(UITapGestureRecognizer*)sender;
/// Called when a UI component is long pressed
- (IBAction)onLongPressGesture:(UILongPressGestureRecognizer*)longPressGestureRecognizer;
/// Remove marker view if present
- (void)removeReadMarkerView;
@end @end

View file

@ -136,86 +136,11 @@ static BOOL _disableLongPressGestureOnEvent;
- (void)setupViews - (void)setupViews
{ {
if (self.userNameLabel) [self setupSenderNameLabel];
{
// Listen to name tap
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onSenderNameTap:)];
[tapGesture setNumberOfTouchesRequired:1];
[tapGesture setNumberOfTapsRequired:1];
[tapGesture setDelegate:self];
if (self.userNameTapGestureMaskView)
{
[self.userNameTapGestureMaskView addGestureRecognizer:tapGesture];
}
else
{
[self.userNameLabel addGestureRecognizer:tapGesture];
self.userNameLabel.userInteractionEnabled = YES;
}
}
if (self.pictureView) [self setupAvatarView];
{
self.pictureView.mediaFolder = kMXMediaManagerAvatarThumbnailFolder;
// Listen to avatar tap
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onAvatarTap:)];
[tapGesture setNumberOfTouchesRequired:1];
[tapGesture setNumberOfTapsRequired:1];
[tapGesture setDelegate:self];
[self.pictureView addGestureRecognizer:tapGesture];
self.pictureView.userInteractionEnabled = YES;
// Add a long gesture recognizer on avatar (in order to display for example the member details)
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(onLongPressGesture:)];
[self.pictureView addGestureRecognizer:longPress];
}
if (self.messageTextView) [self setupMessageTextView];
{
// Listen to textView tap
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onMessageTap:)];
[tapGesture setNumberOfTouchesRequired:1];
[tapGesture setNumberOfTapsRequired:1];
[tapGesture setDelegate:self];
[self.messageTextView addGestureRecognizer:tapGesture];
self.messageTextView.userInteractionEnabled = YES;
// Recognise and make tappable phone numbers, address, etc.
self.messageTextView.dataDetectorTypes = UIDataDetectorTypeAll;
// Listen to link click
self.messageTextView.delegate = self;
if (_disableLongPressGestureOnEvent == NO)
{
// Add a long gesture recognizer on text view (in order to display for example the event details)
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(onLongPressGesture:)];
longPress.delegate = self;
// MXKMessageTextView does not catch touches outside of links. Add a background view to handle long touch.
if ([self.messageTextView isKindOfClass:[MXKMessageTextView class]])
{
UIView *messageTextBackgroundView = [[UIView alloc] initWithFrame:self.messageTextView.frame];
messageTextBackgroundView.backgroundColor = [UIColor clearColor];
[self.contentView insertSubview:messageTextBackgroundView belowSubview:self.messageTextView];
messageTextBackgroundView.translatesAutoresizingMaskIntoConstraints = NO;
[messageTextBackgroundView.leftAnchor constraintEqualToAnchor:self.messageTextView.leftAnchor].active = YES;
[messageTextBackgroundView.rightAnchor constraintEqualToAnchor:self.messageTextView.rightAnchor].active = YES;
[messageTextBackgroundView.topAnchor constraintEqualToAnchor:self.messageTextView.topAnchor].active = YES;
[messageTextBackgroundView.bottomAnchor constraintEqualToAnchor:self.messageTextView.bottomAnchor].active = YES;
[messageTextBackgroundView addGestureRecognizer:longPress];
self.messageTextBackgroundView = messageTextBackgroundView;
}
else
{
[self.messageTextView addGestureRecognizer:longPress];
}
}
}
if (self.playIconView) if (self.playIconView)
{ {
@ -250,6 +175,109 @@ static BOOL _disableLongPressGestureOnEvent;
[self setupConstraintsConstantDefaultValues]; [self setupConstraintsConstantDefaultValues];
} }
- (void)setupSenderNameLabel
{
if (!self.userNameLabel)
{
return;
}
// Listen to name tap
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onSenderNameTap:)];
[tapGesture setNumberOfTouchesRequired:1];
[tapGesture setNumberOfTapsRequired:1];
[tapGesture setDelegate:self];
if (self.userNameTapGestureMaskView)
{
[self.userNameTapGestureMaskView addGestureRecognizer:tapGesture];
}
else
{
[self.userNameLabel addGestureRecognizer:tapGesture];
self.userNameLabel.userInteractionEnabled = YES;
}
}
- (void)setupAvatarView
{
if (!self.pictureView)
{
return;
}
self.pictureView.mediaFolder = kMXMediaManagerAvatarThumbnailFolder;
// Listen to avatar tap
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onAvatarTap:)];
[tapGesture setNumberOfTouchesRequired:1];
[tapGesture setNumberOfTapsRequired:1];
[tapGesture setDelegate:self];
[self.pictureView addGestureRecognizer:tapGesture];
self.pictureView.userInteractionEnabled = YES;
// Add a long gesture recognizer on avatar (in order to display for example the member details)
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(onLongPressGesture:)];
[self.pictureView addGestureRecognizer:longPress];
}
- (void)setupMessageTextView
{
if (!self.messageTextView)
{
return;
}
// Listen to textView tap
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onMessageTap:)];
[tapGesture setNumberOfTouchesRequired:1];
[tapGesture setNumberOfTapsRequired:1];
[tapGesture setDelegate:self];
[self.messageTextView addGestureRecognizer:tapGesture];
self.messageTextView.userInteractionEnabled = YES;
// Recognise and make tappable phone numbers, address, etc.
self.messageTextView.dataDetectorTypes = UIDataDetectorTypeAll;
// Listen to link click
self.messageTextView.delegate = self;
[self setupMessageTextViewLongPressGesture];
}
- (void)setupMessageTextViewLongPressGesture
{
if (_disableLongPressGestureOnEvent)
{
return;
}
// Add a long gesture recognizer on text view (in order to display for example the event details)
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(onLongPressGesture:)];
longPress.delegate = self;
// MXKMessageTextView does not catch touches outside of links. Add a background view to handle long touch.
if ([self.messageTextView isKindOfClass:[MXKMessageTextView class]])
{
UIView *messageTextBackgroundView = [[UIView alloc] initWithFrame:self.messageTextView.frame];
messageTextBackgroundView.backgroundColor = [UIColor clearColor];
[self.contentView insertSubview:messageTextBackgroundView belowSubview:self.messageTextView];
messageTextBackgroundView.translatesAutoresizingMaskIntoConstraints = NO;
[messageTextBackgroundView.leftAnchor constraintEqualToAnchor:self.messageTextView.leftAnchor].active = YES;
[messageTextBackgroundView.rightAnchor constraintEqualToAnchor:self.messageTextView.rightAnchor].active = YES;
[messageTextBackgroundView.topAnchor constraintEqualToAnchor:self.messageTextView.topAnchor].active = YES;
[messageTextBackgroundView.bottomAnchor constraintEqualToAnchor:self.messageTextView.bottomAnchor].active = YES;
[messageTextBackgroundView addGestureRecognizer:longPress];
self.messageTextBackgroundView = messageTextBackgroundView;
}
else
{
[self.messageTextView addGestureRecognizer:longPress];
}
}
- (void)customizeTableViewCellRendering - (void)customizeTableViewCellRendering
{ {
[super customizeTableViewCellRendering]; [super customizeTableViewCellRendering];

View file

@ -156,6 +156,16 @@ class SizableBaseRoomCell: BaseRoomCell, SizableBaseRoomCellType {
height+=urlPreviewHeight height+=urlPreviewHeight
} }
// Add read marker view height if needed
// Note: We cannot check if readMarkerView property is set here. Extra non needed height can be added
if sizingView is RoomCellReadMarkerDisplayable,
let roomBubbleCellData = cellData as? RoomBubbleCellData, let firstBubbleComponent =
roomBubbleCellData.getFirstBubbleComponentWithDisplay(),
let eventId = firstBubbleComponent.event.eventId, let room = roomBubbleCellData.mxSession.room(withRoomId: roomBubbleCellData.roomId), let readMarkerEventId = room.accountData.readMarkerEventId, eventId == readMarkerEventId {
height+=PlainRoomCellLayoutConstants.readMarkerViewHeight
}
return height return height
} }
} }

View file

@ -24,13 +24,17 @@ final class BubbleRoomCellLayoutConstants: NSObject {
/// Inner content view margins /// Inner content view margins
static let innerContentViewMargins: UIEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 5.0, right: 0) static let innerContentViewMargins: UIEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 5.0, right: 0)
// Sender name margins
static let senderNameLabelMargins: UIEdgeInsets = UIEdgeInsets(top: 10, left: 0, bottom: 0.0, right: 0)
// Text message bubbles margins from cell content view // Text message bubbles margins from cell content view
static let outgoingBubbleBackgroundMargins: UIEdgeInsets = UIEdgeInsets(top: 0, left: 80, bottom: 0, right: 34) static let outgoingBubbleBackgroundMargins: UIEdgeInsets = UIEdgeInsets(top: 0, left: 80, bottom: 0, right: 34)
static let incomingBubbleBackgroundMargins: UIEdgeInsets = UIEdgeInsets(top: 0, left: 48, bottom: 0, right: 80) static let incomingBubbleBackgroundMargins: UIEdgeInsets = UIEdgeInsets(top: 0, left: 48, bottom: 0, right: 80)
static let bubbleTextViewInsets: UIEdgeInsets = UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 45) static let bubbleTextViewInsets: UIEdgeInsets = UIEdgeInsets(top: 5, left: 5, bottom: 12, right: 5)
static let bubbleCornerRadius: CGFloat = 12.0 static let bubbleCornerRadius: CGFloat = 12.0

View file

@ -261,7 +261,7 @@ class BubbleRoomCellLayoutUpdater: RoomCellLayoutUpdating {
let leftMargin: CGFloat = BubbleRoomCellLayoutConstants.incomingBubbleBackgroundMargins.left let leftMargin: CGFloat = BubbleRoomCellLayoutConstants.incomingBubbleBackgroundMargins.left
let leftConstraint = attachmentView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: -leftMargin) let leftConstraint = attachmentView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: leftMargin)
NSLayoutConstraint.activate([ NSLayoutConstraint.activate([
leftConstraint leftConstraint

View file

@ -16,7 +16,7 @@
import UIKit import UIKit
class FileWithoutThumbnailBaseBubbleCell: SizableBaseRoomCell, RoomCellReactionsDisplayable { class FileWithoutThumbnailBaseBubbleCell: SizableBaseRoomCell, RoomCellReactionsDisplayable, RoomCellReadMarkerDisplayable {
weak var fileAttachementView: FileWithoutThumbnailCellContentView? weak var fileAttachementView: FileWithoutThumbnailCellContentView?

View file

@ -16,7 +16,7 @@
import UIKit import UIKit
class TextMessageBaseBubbleCell: SizableBaseRoomCell, RoomCellURLPreviewDisplayable, RoomCellReactionsDisplayable, RoomCellThreadSummaryDisplayable, RoomCellReadReceiptsDisplayable { class TextMessageBaseBubbleCell: SizableBaseRoomCell, RoomCellURLPreviewDisplayable, RoomCellReactionsDisplayable, RoomCellThreadSummaryDisplayable, RoomCellReadReceiptsDisplayable, RoomCellReadMarkerDisplayable {
// MARK: - Properties // MARK: - Properties
@ -32,21 +32,24 @@ class TextMessageBaseBubbleCell: SizableBaseRoomCell, RoomCellURLPreviewDisplaya
// MARK: - Overrides // MARK: - Overrides
override func setupViews() { override func setupViews() {
super.setupViews()
roomCellContentView?.backgroundColor = .clear roomCellContentView?.backgroundColor = .clear
guard let contentView = roomCellContentView?.innerContentView else {
return
}
roomCellContentView?.innerContentViewBottomContraint.constant = BubbleRoomCellLayoutConstants.innerContentViewMargins.bottom roomCellContentView?.innerContentViewBottomContraint.constant = BubbleRoomCellLayoutConstants.innerContentViewMargins.bottom
roomCellContentView?.userNameLabelBottomConstraint.constant = BubbleRoomCellLayoutConstants.senderNameLabelMargins.bottom
let textMessageContentView = TextMessageBubbleCellContentView.instantiate() let textMessageContentView = TextMessageBubbleCellContentView.instantiate()
contentView.vc_addSubViewMatchingParent(textMessageContentView) roomCellContentView?.innerContentView.vc_addSubViewMatchingParent(textMessageContentView)
self.textMessageContentView = textMessageContentView self.textMessageContentView = textMessageContentView
// Setup messageTextView property first before running `setupMessageTextView` method
super.setupViews()
}
override func setupMessageTextViewLongPressGesture() {
// Do nothing, otherwise default setup prevent link tap
} }
override func update(theme: Theme) { override func update(theme: Theme) {

View file

@ -14,12 +14,15 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wRb-1K-GDt" customClass="RoomMessageBubbleBackgroundView" customModule="Riot" customModuleProvider="target"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wRb-1K-GDt" customClass="RoomMessageBubbleBackgroundView" customModule="Riot" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="152" height="82"/> <rect key="frame" x="0.0" y="0.0" width="112" height="82"/>
<subviews> <subviews>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" editable="NO" text="text message" translatesAutoresizingMaskIntoConstraints="NO" id="1WT-up-UFQ" customClass="MXKMessageTextView"> <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" editable="NO" text="text message" translatesAutoresizingMaskIntoConstraints="NO" id="1WT-up-UFQ" customClass="MXKMessageTextView">
<rect key="frame" x="5" y="5" width="102" height="72"/> <rect key="frame" x="5" y="5" width="102" height="65"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/> <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="MessageTextView"/> <accessibility key="accessibilityConfiguration" identifier="MessageTextView"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="9XG-hw-QF9"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="15"/> <fontDescription key="fontDescription" type="system" pointSize="15"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
<dataDetectorType key="dataDetectorTypes" link="YES"/> <dataDetectorType key="dataDetectorTypes" link="YES"/>
@ -27,10 +30,10 @@
</subviews> </subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints> <constraints>
<constraint firstAttribute="bottom" secondItem="1WT-up-UFQ" secondAttribute="bottom" constant="5" id="EMT-p9-z4L"/> <constraint firstAttribute="bottom" secondItem="1WT-up-UFQ" secondAttribute="bottom" constant="12" id="EMT-p9-z4L"/>
<constraint firstItem="1WT-up-UFQ" firstAttribute="leading" secondItem="wRb-1K-GDt" secondAttribute="leading" constant="5" id="GhZ-J0-v1m"/> <constraint firstItem="1WT-up-UFQ" firstAttribute="leading" secondItem="wRb-1K-GDt" secondAttribute="leading" constant="5" id="GhZ-J0-v1m"/>
<constraint firstItem="1WT-up-UFQ" firstAttribute="top" secondItem="wRb-1K-GDt" secondAttribute="top" constant="5" id="OpF-jQ-D8Q"/> <constraint firstItem="1WT-up-UFQ" firstAttribute="top" secondItem="wRb-1K-GDt" secondAttribute="top" constant="5" id="OpF-jQ-D8Q"/>
<constraint firstAttribute="trailing" secondItem="1WT-up-UFQ" secondAttribute="trailing" constant="45" id="Y8T-HE-6NX"/> <constraint firstAttribute="trailing" secondItem="1WT-up-UFQ" secondAttribute="trailing" constant="5" id="Y8T-HE-6NX"/>
</constraints> </constraints>
</view> </view>
</subviews> </subviews>

View file

@ -15,7 +15,17 @@
*/ */
#import "MXKRoomIncomingAttachmentBubbleCell.h" #import "MXKRoomIncomingAttachmentBubbleCell.h"
#import "GeneratedInterface-Swift.h"
@implementation MXKRoomIncomingAttachmentBubbleCell @implementation MXKRoomIncomingAttachmentBubbleCell
- (void)setupViews
{
[super setupViews];
RoomTimelineConfiguration *timelineConfiguration = [RoomTimelineConfiguration shared];
[timelineConfiguration.currentStyle.cellLayoutUpdater setupLayoutForIncomingFileAttachmentCell:self];
}
@end @end

View file

@ -16,7 +16,7 @@
import Foundation import Foundation
class LocationBubbleCell: SizableBaseRoomCell, RoomCellReactionsDisplayable { class LocationBubbleCell: SizableBaseRoomCell, RoomCellReactionsDisplayable, RoomCellReadMarkerDisplayable {
private var locationView: RoomTimelineLocationView! private var locationView: RoomTimelineLocationView!

View file

@ -16,7 +16,7 @@
import Foundation import Foundation
class PollBubbleCell: SizableBaseRoomCell, RoomCellReactionsDisplayable { class PollBubbleCell: SizableBaseRoomCell, RoomCellReactionsDisplayable, RoomCellReadMarkerDisplayable {
private var pollView: UIView? private var pollView: UIView?
private var event: MXEvent? private var event: MXEvent?

View file

@ -16,7 +16,7 @@
import Foundation import Foundation
class VoiceMessageBubbleCell: SizableBaseRoomCell, RoomCellReactionsDisplayable { class VoiceMessageBubbleCell: SizableBaseRoomCell, RoomCellReactionsDisplayable, RoomCellReadMarkerDisplayable {
private(set) var playbackController: VoiceMessagePlaybackController! private(set) var playbackController: VoiceMessagePlaybackController!

View file

@ -148,6 +148,7 @@ class PlainRoomTimelineCellDecorator: RoomTimelineCellDecorator {
trailingConstraint, trailingConstraint,
topConstraint topConstraint
]) ])
} }
} }
@ -203,4 +204,92 @@ class PlainRoomTimelineCellDecorator: RoomTimelineCellDecorator {
func addSendStatusView(toCell cell: MXKRoomBubbleTableViewCell, withFailedEventIds failedEventIds: Set<AnyHashable>) { func addSendStatusView(toCell cell: MXKRoomBubbleTableViewCell, withFailedEventIds failedEventIds: Set<AnyHashable>) {
cell.updateTickView(withFailedEventIds: failedEventIds) cell.updateTickView(withFailedEventIds: failedEventIds)
} }
func addReadMarkerView(_ readMarkerView: UIView,
toCell cell: MXKRoomBubbleTableViewCell,
cellData: MXKRoomBubbleCellData,
contentViewPositionY: CGFloat) {
if let readMarkerDisplayable = cell as? RoomCellReadMarkerDisplayable {
readMarkerDisplayable.addReadMarkerView(readMarkerView)
} else {
guard let overlayContainer = cell.bubbleOverlayContainer else {
return
}
// The read marker is added into the overlay container.
// CAUTION: Keep disabled the user interaction on this container to not disturb tap gesture handling.
overlayContainer.backgroundColor = UIColor.clear
overlayContainer.alpha = 1
overlayContainer.isUserInteractionEnabled = false
overlayContainer.isHidden = false
// Add read marker to overlayContainer
readMarkerView.translatesAutoresizingMaskIntoConstraints = false
overlayContainer.addSubview(readMarkerView)
cell.readMarkerView = readMarkerView
// Force read marker constraints
let topConstraint = readMarkerView.topAnchor.constraint(equalTo: overlayContainer.topAnchor, constant: contentViewPositionY - PlainRoomCellLayoutConstants.readMarkerViewHeight)
let leadingConstraint = readMarkerView.leadingAnchor.constraint(equalTo: overlayContainer.leadingAnchor)
let trailingConstraint = readMarkerView.trailingAnchor.constraint(equalTo: overlayContainer.trailingAnchor)
let heightConstraint = readMarkerView.heightAnchor.constraint(equalToConstant: PlainRoomCellLayoutConstants.readMarkerViewHeight)
NSLayoutConstraint.activate([topConstraint,
leadingConstraint,
trailingConstraint,
heightConstraint])
cell.readMarkerViewTopConstraint = topConstraint
cell.readMarkerViewLeadingConstraint = leadingConstraint
cell.readMarkerViewTrailingConstraint = trailingConstraint
cell.readMarkerViewHeightConstraint = heightConstraint
}
}
func dissmissReadMarkerView(forCell cell: MXKRoomBubbleTableViewCell,
cellData: RoomBubbleCellData,
animated: Bool,
completion: @escaping () -> Void) {
guard let readMarkerView = cell.readMarkerView, let readMarkerContainerView = readMarkerView.superview else {
return
}
// Do not display the marker if this is the last message.
if animated == false || (cellData.containsLastMessage && readMarkerView.tag == cellData.mostRecentComponentIndex) {
readMarkerView.isHidden = true
completion()
} else {
readMarkerView.isHidden = false
// Animate the layout to hide the read marker
DispatchQueue.main.async {
let readMarkerContainerViewHalfWidth = readMarkerContainerView.frame.size.width/2
cell.readMarkerViewLeadingConstraint.constant = readMarkerContainerViewHalfWidth
cell.readMarkerViewTrailingConstraint.constant = -readMarkerContainerViewHalfWidth
UIView.animate(withDuration: 1.5,
delay: 0.3,
options: [.beginFromCurrentState, .curveEaseIn]) {
readMarkerView.alpha = 0
readMarkerContainerView.layoutIfNeeded()
} completion: { finished in
readMarkerView.isHidden = true
readMarkerView.alpha = 1
completion()
}
}
}
}
} }

View file

@ -26,6 +26,8 @@ protocol RoomCellLayoutUpdating: Themable {
func setupLayout(forOutgoingTextMessageCell cell: MXKRoomBubbleTableViewCell) func setupLayout(forOutgoingTextMessageCell cell: MXKRoomBubbleTableViewCell)
func setupLayout(forIncomingFileAttachmentCell cell: MXKRoomBubbleTableViewCell)
func setupLayout(forOutgoingFileAttachmentCell cell: MXKRoomBubbleTableViewCell) func setupLayout(forOutgoingFileAttachmentCell cell: MXKRoomBubbleTableViewCell)
func updateLayout(forSelectedStickerCell cell: RoomSelectedStickerBubbleCell) func updateLayout(forSelectedStickerCell cell: RoomSelectedStickerBubbleCell)

View file

@ -50,4 +50,14 @@ protocol RoomTimelineCellDecorator {
func addSendStatusView(toCell cell: MXKRoomBubbleTableViewCell, func addSendStatusView(toCell cell: MXKRoomBubbleTableViewCell,
withFailedEventIds failedEventIds: Set<AnyHashable>) withFailedEventIds failedEventIds: Set<AnyHashable>)
func addReadMarkerView(_ readMarkerView: UIView,
toCell cell: MXKRoomBubbleTableViewCell,
cellData: MXKRoomBubbleCellData,
contentViewPositionY: CGFloat)
func dissmissReadMarkerView(forCell cell: MXKRoomBubbleTableViewCell,
cellData: RoomBubbleCellData,
animated: Bool,
completion: @escaping () -> Void)
} }

View file

@ -119,9 +119,9 @@
self.delegate = self; self.delegate = self;
_isOnboardingInProgress = NO; self.isOnboardingInProgress = NO;
// Note: UITabBarViewController shoud not be embed in a UINavigationController (https://github.com/vector-im/riot-ios/issues/3086) // Note: UITabBarViewController should not be embed in a UINavigationController (https://github.com/vector-im/riot-ios/issues/3086)
[self vc_removeBackTitle]; [self vc_removeBackTitle];
[self setupTitleView]; [self setupTitleView];
@ -520,7 +520,7 @@
[self.onboardingCoordinatorBridgePresenter dismissWithAnimated:YES completion:nil]; [self.onboardingCoordinatorBridgePresenter dismissWithAnimated:YES completion:nil];
self.onboardingCoordinatorBridgePresenter = nil; self.onboardingCoordinatorBridgePresenter = nil;
self.isOnboardingInProgress = NO; self.isOnboardingInProgress = NO; // Must be set before calling didCompleteAuthentication
[self.masterTabBarDelegate masterTabBarControllerDidCompleteAuthentication:self]; [self.masterTabBarDelegate masterTabBarControllerDidCompleteAuthentication:self];
}; };

View file

@ -35,8 +35,7 @@ struct PollEditForm: View {
ScrollView { ScrollView {
VStack(alignment: .leading, spacing: 32.0) { VStack(alignment: .leading, spacing: 32.0) {
// Intentionally disabled until platform parity. PollEditFormTypePicker(selectedType: $viewModel.type)
// PollEditFormTypePicker(selectedType: $viewModel.type)
VStack(alignment: .leading, spacing: 16.0) { VStack(alignment: .leading, spacing: 16.0) {
Text(VectorL10n.pollEditFormPollQuestionOrTopic) Text(VectorL10n.pollEditFormPollQuestionOrTopic)

View file

@ -96,8 +96,7 @@ final class TimelinePollCoordinator: Coordinator, Presentable, PollAggregatorDel
} }
func canEditPoll() -> Bool { func canEditPoll() -> Bool {
return false // Intentionally disabled until platform parity. return pollAggregator.poll.isClosed == false && pollAggregator.poll.totalAnswerCount == 0
// return pollAggregator.poll.isClosed == false && pollAggregator.poll.totalAnswerCount == 0
} }
func endPoll() { func endPoll() {

View file

@ -81,11 +81,8 @@ class TimelinePollViewModel: TimelinePollViewModelType, TimelinePollViewModelPro
state.poll.answerOptions.updateEach { answerOption in state.poll.answerOptions.updateEach { answerOption in
if answerOption.selected { if answerOption.selected {
answerOption.selected = false answerOption.selected = false
answerOption.count = UInt(max(0, Int(answerOption.count) - 1))
if(state.poll.answerOptions.count > 0) { state.poll.totalAnswerCount = UInt(max(0, Int(state.poll.totalAnswerCount) - 1))
answerOption.count = answerOption.count - 1
state.poll.totalAnswerCount -= 1
}
} }
if answerOption.id == selectedAnswerIdentifier { if answerOption.id == selectedAnswerIdentifier {
@ -114,8 +111,8 @@ class TimelinePollViewModel: TimelinePollViewModelType, TimelinePollViewModelPro
if answerOption.selected { if answerOption.selected {
answerOption.selected = false answerOption.selected = false
answerOption.count -= 1 answerOption.count = UInt(max(0, Int(answerOption.count) - 1))
state.poll.totalAnswerCount -= 1 state.poll.totalAnswerCount = UInt(max(0, Int(state.poll.totalAnswerCount) - 1))
} else { } else {
answerOption.selected = true answerOption.selected = true
answerOption.count += 1 answerOption.count += 1

View file

@ -1 +0,0 @@
Authent: fix phone number validation through custom URL

View file

@ -1 +0,0 @@
Fix registration to be compliant with the Matrix specification. This allows registering for accounts on Conduit servers. Contributed by @aaronraimist.

View file

@ -1 +0,0 @@
Fix proximity sensor staying on and sleep timer staying disabled after call ends

View file

@ -1 +0,0 @@
ActivityCenter: Use ActivityCenter to show loading indicators on the home screen (in DEBUG builds only)

View file

@ -1 +0,0 @@
Added support for unstable poll prefixes.

View file

@ -1 +0,0 @@
Add Onboarding Use Case selection screen after the splash screen.

Some files were not shown because too many files have changed in this diff Show more